Delphi - Arquivo .INI - SQL Server + ADO Connection
Bom dia, pessoal estou tentando criar um arquivo de configuracão de conexao com o banco de dados.
Estou utilizando o SQL SERVER 2000 + Ado Connection no DELPHI XE7
Com a rotina atual, conforme o codigo abaixo. Ele gera o arquivo e conecta normalmente, porém se o arquivo já existe ele dá erro e não conecta nada.
CASO NÃO ENCONTRE o arq_ini ele abre outro form para lançar os dados de conexão
F_CRIARCONEXAO
Estou utilizando o SQL SERVER 2000 + Ado Connection no DELPHI XE7
Com a rotina atual, conforme o codigo abaixo. Ele gera o arquivo e conecta normalmente, porém se o arquivo já existe ele dá erro e não conecta nada.
procedure TF_PRINCIPAL.FormShow(Sender: TObject);
var
caminho : String;
servidor, banco, usuario, senha, porta, driverServidor, NomeEstacao : string;
arqIni : TiniFile;
begin
conexao.Connected := False;
//verifica se o arq_conf existe
if not FileExists(ExtractFilePath(Application.ExeName)+'arq_conf.ini') then // Testando se o arquivo arq_conf.INI existe.
begin
MessageDlg('O arquivo de configuração não foi localizado', mtError, mbOKCancel, 0);
// Chamando form2 para a criação do arquivo.
F_CriarConexao.ShowModal;
end
else
begin
// Procura o arq_conf.ini
arqIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+'arq_conf.ini');
servidor := arqIni.ReadString('configuracoes', 'servidor', '');
driverservidor := arqIni.ReadString('configuracoes', 'driver', '');
porta := arqIni.ReadString('configuracoes', 'port', '');
banco := arqIni.ReadString('configuracoes', 'database', '');
usuario := arqIni.ReadString('configuracoes', 'user', '');
senha := arqIni.ReadString('configuracoes', 'password', '');
NomeEstacao := arqIni.ReadString('configuracoes', 'WorkStation', '');
conexao.ConnectionString := 'Provider='+DriverServidor+';'+
'Persist Security Info=True;'+
'User ID='+usuario+';'+
'Password='+senha+';'+
'Initial Catalog='+banco+';'+
'Data Source='+servidor+';'+
'Auto Translate=True;'+
'Packet Size=4096;'+
'Workstation ID='+NomeEstacao+';'+
'Network Library=DBMSSOCN';
end;
try
conexao.Connected := true;
except
end;CASO NÃO ENCONTRE o arq_ini ele abre outro form para lançar os dados de conexão
F_CRIARCONEXAO
var Config :TIniFile;
begin
Config := TIniFile.Create(ExtractFilePath(Application.ExeName)+'arq_conf.ini'); // Criando o arquivo CfgBase.INI
try
Config.WriteString('configuracoes', 'Servidor', EdtServidor.Text);
Config.WriteString('configuracoes', 'driver' , EdtDriver.Text);
Config.WriteString('configuracoes', 'port' , EdtPorta.Text);
Config.WriteString('configuracoes', 'database', EdtBanco.Text);
Config.WriteString('configuracoes', 'user' , EdtUsuario.Text);
Config.WriteString('configuracoes', 'password', EdtSenha.Text);
Config.WriteString('configuracoes', 'WorkStation', EdtWorkStation.Text);
finally
Config.Free;
ShowMessage('Arquivo com extensão .INI foi criado com sucesso!');
Close;
end;
Geovany Felipeto
Curtidas 0
Melhor post
Raimundo Pereira
26/09/2016
1. Abriu a aplicação, é verificado se existe o INI
2. Se sim, Chame o procedimento de leitura do INI
3. Realizou a leitura do INI, tente a conexão
4. Abriu a aplicação, é verificado se existe o INI
5. Se não, abre o form de criação
6. Criou o arquivo, repete o passo 2 e 3.
O que falei da primeira vez foi que apos chamar o form
var Config :TIniFile;
begin
Config := TIniFile.Create(ExtractFilePath(Application.ExeName)+'arq_conf.ini'); // Criando o arquivo CfgBase.INI
try
Config.WriteString('configuracoes', 'Servidor', EdtServidor.Text);
Config.WriteString('configuracoes', 'driver' , EdtDriver.Text);
Config.WriteString('configuracoes', 'port' , EdtPorta.Text);
Config.WriteString('configuracoes', 'database', EdtBanco.Text);
Config.WriteString('configuracoes', 'user' , EdtUsuario.Text);
Config.WriteString('configuracoes', 'password', EdtSenha.Text);
Config.WriteString('configuracoes', 'WorkStation', EdtWorkStation.Text);
finally
Config.Free;
ShowMessage('Arquivo com extensão .INI foi criado com sucesso!');
Close;
end;
Você deveria chamar sua rotina para realizar a conexão
servidor := arqIni.ReadString('configuracoes', 'servidor', '');
driverservidor := arqIni.ReadString('configuracoes', 'driver', '');
porta := arqIni.ReadString('configuracoes', 'port', '');
banco := arqIni.ReadString('configuracoes', 'database', '');
usuario := arqIni.ReadString('configuracoes', 'user', '');
senha := arqIni.ReadString('configuracoes', 'password', '');
NomeEstacao := arqIni.ReadString('configuracoes', 'WorkStation', '');
conexao.ConnectionString := 'Provider='+DriverServidor+';'+
'Persist Security Info=True;'+
'User ID='+usuario+';'+
'Password='+senha+';'+
'Initial Catalog='+banco+';'+
'Data Source='+servidor+';'+
'Auto Translate=True;'+
'Packet Size=4096;'+
'Workstation ID='+NomeEstacao+';'+
'Network Library=DBMSSOCN';
end;
try
conexao.Connected := true;
except
end;
Também poderá usar um arquivo Udl para realizar a conexão
2. Se sim, Chame o procedimento de leitura do INI
3. Realizou a leitura do INI, tente a conexão
4. Abriu a aplicação, é verificado se existe o INI
5. Se não, abre o form de criação
6. Criou o arquivo, repete o passo 2 e 3.
O que falei da primeira vez foi que apos chamar o form
var Config :TIniFile;
begin
Config := TIniFile.Create(ExtractFilePath(Application.ExeName)+'arq_conf.ini'); // Criando o arquivo CfgBase.INI
try
Config.WriteString('configuracoes', 'Servidor', EdtServidor.Text);
Config.WriteString('configuracoes', 'driver' , EdtDriver.Text);
Config.WriteString('configuracoes', 'port' , EdtPorta.Text);
Config.WriteString('configuracoes', 'database', EdtBanco.Text);
Config.WriteString('configuracoes', 'user' , EdtUsuario.Text);
Config.WriteString('configuracoes', 'password', EdtSenha.Text);
Config.WriteString('configuracoes', 'WorkStation', EdtWorkStation.Text);
finally
Config.Free;
ShowMessage('Arquivo com extensão .INI foi criado com sucesso!');
Close;
end;
Você deveria chamar sua rotina para realizar a conexão
servidor := arqIni.ReadString('configuracoes', 'servidor', '');
driverservidor := arqIni.ReadString('configuracoes', 'driver', '');
porta := arqIni.ReadString('configuracoes', 'port', '');
banco := arqIni.ReadString('configuracoes', 'database', '');
usuario := arqIni.ReadString('configuracoes', 'user', '');
senha := arqIni.ReadString('configuracoes', 'password', '');
NomeEstacao := arqIni.ReadString('configuracoes', 'WorkStation', '');
conexao.ConnectionString := 'Provider='+DriverServidor+';'+
'Persist Security Info=True;'+
'User ID='+usuario+';'+
'Password='+senha+';'+
'Initial Catalog='+banco+';'+
'Data Source='+servidor+';'+
'Auto Translate=True;'+
'Packet Size=4096;'+
'Workstation ID='+NomeEstacao+';'+
'Network Library=DBMSSOCN';
end;
try
conexao.Connected := true;
except
end;
Também poderá usar um arquivo Udl para realizar a conexão
GOSTEI 1
Mais Respostas
Raimundo Pereira
26/09/2016
Caso o arquivo existe, você está apenas carregando os edits.
Não falta setar
conexao.ConnectionString conforme os dados do Edits carregados ?
Não falta setar
conexao.ConnectionString conforme os dados do Edits carregados ?
GOSTEI 0
Geovany Felipeto
26/09/2016
p2 não compreendi sua pergunta.... no F_criarConexao ele cria o TXT com os mesmos dados apontados nos edits... porém quando estou abrindo pela 1 vez.... juntamente com a configuração o sistema abre normalmente.... mas quando o arquivo txt com as configurações de conexao já estão criados e setados neste arquivo.... o sistema não abre.
GOSTEI 0
Jones Granatyr
26/09/2016
Olá!
Você tentou colocar um breakpoint pra verificar se o arquivo está realmente sendo carregado?
Jones
Você tentou colocar um breakpoint pra verificar se o arquivo está realmente sendo carregado?
Jones
GOSTEI 0
Geovany Felipeto
26/09/2016
aaaah. agora entendi. Obrigado pela Luz. vou testar. realmente, depois que voce falou eu percebi que apos escrever no arquivo, eu Não o lia.
GOSTEI 0