GARANTIR DESCONTO

Fórum Delphi - Arquivo .INI - SQL Server + ADO Connection #562951

26/09/2016

0

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.




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

Geovany Felipeto

Responder

Post mais votado

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

Raimundo Pereira

Raimundo Pereira
Responder

Gostei + 1

Mais Posts

26/09/2016

Raimundo Pereira

Caso o arquivo existe, você está apenas carregando os edits.
Não falta setar
conexao.ConnectionString conforme os dados do Edits carregados ?
Responder

Gostei + 0

26/09/2016

Geovany Felipeto

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.
Responder

Gostei + 0

26/09/2016

Jones Granatyr

Olá!

Você tentou colocar um breakpoint pra verificar se o arquivo está realmente sendo carregado?

Jones
Responder

Gostei + 0

27/09/2016

Geovany Felipeto

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar