PATH NO VISUAL STUDIO 2012

ALVAROVB2009 26/09/2016 13:15:39
#467501
Galera estou montando um projeto, e criei um módulo onde pego o caminho do bd do config.ini e esses são os códigos do form
Imports System.Data
Imports System.Data.OleDb

Dim Cmd As New OleDbCommand
Dim Cn As New OleDb.OleDbConnection
Cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OleDb.4.0; Data Source=[Ô] & LeArquivoINI([Ô]Config.ini[Ô], [Ô]Dados[Ô], [Ô]Diretorio[Ô]) & [Ô];jet oledb:database password=[ô]abcdef[ô][Ô]
Cn.Open()

Só que esta acontecendo o problema da imagem

Se eu colocar o caminho na mão, o banco abre normalmente
Meu banco é access

Alguém pode me falar o que esta de errado?

Sempre criei um módulo de conexão no vb6 e conectava sem problema, com isso quero evitar de ficar abrindo toda hora o banco, ou se precisar não ficar repetindo o mesmo código, agora no vb.net esta dando esse problema

Desde já agradeço a todos
NILSONTRES 26/09/2016 15:07:23
#467515
My.Application.Info.DirectoryPath
ALVAROVB2009 26/09/2016 15:28:54
#467519
Nilson obrigado pelo retorno
Esse comando eu já coloquei, alias, o problema não esta se dando ao achar o arquivo, como pode ver na imagem, ele esta encontrando o meu config.ini perfeitamente, só que não esta conseguindo abrir o arquivo, pois fala que ele esta sendo preso na memória, só que o arquivo não esta aberto
OCELOT 26/09/2016 16:15:01
#467530
Pela exception que está na imagem o seu erro provavelmente esta na declaração do GetPrivateProfileString, mas não tem como ter certeza já que você não postou ela, só uma imagem, sendo que a Microsoft não recomenda o uso dessa API provavelmente desde o Windows 95, já que ela só existe para manter compatibilidade com programas de 16 bits, e provavelmente só continua existindo hoje em dia porque os programadores não escutam o que a Microsoft fala.

Como você está usando o .Net o ideal seria que você usasse o App.config ou que adicione ela no arquivo Settings.settings, que no VB.Net fica geralmente dentro do [Ô]My Project[Ô], e usando o Settings fica até mais fácil já que para acessar o valor você simplesmente usa [Ô]My.Settings.NomeQueVoceEscolher[Ô] e depois de compilar esse valor vai ficar salvo em um arquivo chamado [Ô]NomeDoSeuExe.Exe.Config[Ô] que pode ser editado pelo bloco de notas para alterar o valor
ALVAROVB2009 26/09/2016 16:39:59
#467532
Ocelot obrigado pelo retorno

Segue abaixo o código do módulo que criei
Imports System.IO
Imports System.Text
Module FuncaoGlobal
Public Declare Auto Function GetPrivateProfileString Lib [Ô]Kernel32[Ô] (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpReturnedString As StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
Public Function LeArquivoINI(ByVal file_name As String, ByVal section_name As String, ByVal key_name As String) As String
Const MAX_LENGTH As Integer = 500
Dim string_builder As New StringBuilder(MAX_LENGTH)
Dim CaminhoArquivo As String = Application.StartupPath & [Ô]\[Ô] & file_name

GetPrivateProfileString(section_name, key_name, string_builder, MAX_LENGTH, CaminhoArquivo)
Return string_builder.ToString()
End Function
End Module

Quanto ao que vc falou sobre o arquivo, realmente não sabia desse conselho da dona microsoft, mesmo porque sempre programei em vb6 e nunca tive problema, por isso que estou criando esse módulo de abertura de banco, para seguir o meu padrão

Esse é meu primeiro projeto vb.net onde tenho que imprimir usando uma imagem PNG e estou com o tempo muito apertado, vi os códigos a última vez quando saiu o Visual Studio 2005 e agora tive que me atualizar meio que na marra, então andei pegando uns códigos no Macoratti para tentar poupar meu tempo
O que preciso é pegar o caminho do banco de dados que esta no config do sistema e por isso que estou usando essa API, agora se tiver uma outra forma de acessar os dados, gostaria e saber como, pois pelo que entendi nesse esquema que você falou, é para apenas abrir o config

NICKOSOFT 26/09/2016 18:35:53
#467540
veja um funcionando, peguei num projeto bem antigo.....

  
MessageBox.Show = LeArquivoINI(Application.StartupPath & [Ô]\config.ini[Ô], [Ô]BD[Ô], [Ô]Servidor[Ô], [Ô][Ô])[ô]use onde for obter os dados do arquivo

Private Declare Auto Function GetPrivateProfileString Lib [Ô]Kernel32[Ô] (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

[ô] Retorna o nome do arquivo INI
Public Function nomeArquivoINI() As String
Dim nome_arquivo_ini As String = Application.StartupPath
Return nome_arquivo_ini & [Ô]\AJuri.ini[Ô]
End Function

Public Function LeArquivoINI(ByVal file_name As String, ByVal section_name As String, ByVal key_name As String, ByVal default_value As String) As String
Const MAX_LENGTH As Integer = 500
Dim string_builder As New StringBuilder(MAX_LENGTH)
GetPrivateProfileString(section_name, key_name, default_value, string_builder, MAX_LENGTH, file_name)
Return string_builder.ToString()
End Function
ALVAROVB2009 30/09/2016 17:37:33
#467774
Nickosoft o seu esquema é igual ao meu, tirando a opção do default_value que eu tirei da minha variável

Más a princípio eu estava com o tempo curto e coloquei o caminho até o banco na mão, pois estava funcionando, depois com mais calma peguei o meu comando e comparei com o seu e vi que o erro era meu
Cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OleDb.4.0; Data Source=[Ô] & LeArquivoINI([Ô]Config.ini[Ô], [Ô]Dados[Ô], [Ô]Diretorio[Ô]) & [Ô];jet oledb:database password=[ô]abcdef[ô][Ô]

Eu não coloquei o caminho do config.ini, apenas o nome do arquivo e depois que descobri também que ele roda entro da Bin, resolvi o problema

Depois de ajustado, gerei uma nova versão para o meu cliente e rodou direitinho

Foi um erro de aprendiz no vb.net, estou acostumado com o app.path do vb6, e na correria para entregar o projeto e de cabeça cheia, nem me atentei para o meu erro infantil
Más agradeço a todos pela ajuda
Ajustei o meu comando e ele ficou assim
Cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OleDb.4.0; Data Source=[Ô] & LeArquivoINI(Application.StartupPath & [Ô]\Config.ini[Ô], [Ô]Dados[Ô], [Ô]Diretorio[Ô]) & [Ô];jet oledb:database password=[ô]abcdef[ô][Ô]
Tópico encerrado , respostas não são mais permitidas