Problemas com sqlconnetion em rede
25/03/2013
0
Bom dia pessoal, gente seguinte estou desenvolvendo um projeto para automação comercial, estamos tendo um problema aqui que ao ver da equipe de desenvolvimento o "trem" desafia a lógica.. rsrsrsr...
é o seguinte temos um SQLConnection que efetua a conexão com o banco de dados FireBird 2.5.
o mesmo está localizado dentro de um DataModule, no evento OnCreate do DataModule tem o seguinte trecho de código:
// Verifica não existe o arquivo ini, vai criar o mesmo com um diretório o ip padrão local host
if not FileExists(ExtractFilePath(Application.ExeName)+'SCV.ini') then
begin
vlini_Arquivo:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'SCV.ini');
vlini_Arquivo.WriteString('SERVIDOR_SO','SO','W');
vgs_SERVIDOR_SO:= vlini_Arquivo.ReadString('SERVIDOR_SO','SO','');
if vgs_SERVIDOR_SO = 'W' then
begin
vlini_Arquivo.WriteString('SERVIDOR_BANCO_DADOS','CAMIMHO','C:\SCV\RETAGUARDA\Dados\SCV.FDB');
vlini_Arquivo.WriteString('SERVIDOR_IP','IP','127.0.0.1');
vgs_SERVIDOR_IP := vlini_Arquivo.ReadString('SERVIDOR_IP','IP','');
vgs_SERVIDOR_BANCO_DADOS := vlini_Arquivo.ReadString('SERVIDOR_BANCO_DADOS','CAMIMHO','');
end;
end
else //caso o ini já esteja presente, apenas pegar o ip do servidor eo caminho do banco de dados
begin
vlini_Arquivo := TIniFile.Create(ExtractFilePath(Application.ExeName)+'SCV.ini');
vgs_SERVIDOR_IP := vlini_Arquivo.ReadString('SERVIDOR_IP','IP','');
vgs_SERVIDOR_BANCO_DADOS:= vlini_Arquivo.ReadString('SERVIDOR_BANCO_DADOS','CAMIMHO','');
end;
try // muda o estado ConecTed do SQLConnectio para False limpa os parametros passa o caminho do banco, usuario, senha e
muda novamente para true
with ConexaoBD do
begin
Connected:= False;
Params.Clear; //ex: 127.0.0.1:C:\Retagauarda\Dados\Banco.FDB
Params.Values['Database']:= Trim(vgs_SERVIDOR_IP)+':'+Trim(vgs_SERVIDOR_BANCO_DADOS);
Params.Values['User_Name']:= 'SYSDBA';
Params.Values['Password']:= 'masterkey';
Connected:= True;
vlini_Arquivo.Free;
end
except
Application.MessageBox('Não foi possivel conectar-se ao Banco de Dados.'+#13+
'Aplicação será fechada.','Aviso',MB_OK);
vlini_Arquivo.Free;
Application.Terminate;
end;
Todo o trecho de código funciona, porém só vai funcionar se mudar visualmente a propriedade do SQLConnection Conected para False.
o DBX é assim mesmo ? Sempre que for liberar um EXE para máquina de cliente onde não tem o Delphi instalado, antes de compilar tenho que mudar a propriedade do SQLConnection para False ? se alguém já passou por isso e tiver alguma solução desde já agradeço pela ajuda!!!!
é o seguinte temos um SQLConnection que efetua a conexão com o banco de dados FireBird 2.5.
o mesmo está localizado dentro de um DataModule, no evento OnCreate do DataModule tem o seguinte trecho de código:
// Verifica não existe o arquivo ini, vai criar o mesmo com um diretório o ip padrão local host
if not FileExists(ExtractFilePath(Application.ExeName)+'SCV.ini') then
begin
vlini_Arquivo:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'SCV.ini');
vlini_Arquivo.WriteString('SERVIDOR_SO','SO','W');
vgs_SERVIDOR_SO:= vlini_Arquivo.ReadString('SERVIDOR_SO','SO','');
if vgs_SERVIDOR_SO = 'W' then
begin
vlini_Arquivo.WriteString('SERVIDOR_BANCO_DADOS','CAMIMHO','C:\SCV\RETAGUARDA\Dados\SCV.FDB');
vlini_Arquivo.WriteString('SERVIDOR_IP','IP','127.0.0.1');
vgs_SERVIDOR_IP := vlini_Arquivo.ReadString('SERVIDOR_IP','IP','');
vgs_SERVIDOR_BANCO_DADOS := vlini_Arquivo.ReadString('SERVIDOR_BANCO_DADOS','CAMIMHO','');
end;
end
else //caso o ini já esteja presente, apenas pegar o ip do servidor eo caminho do banco de dados
begin
vlini_Arquivo := TIniFile.Create(ExtractFilePath(Application.ExeName)+'SCV.ini');
vgs_SERVIDOR_IP := vlini_Arquivo.ReadString('SERVIDOR_IP','IP','');
vgs_SERVIDOR_BANCO_DADOS:= vlini_Arquivo.ReadString('SERVIDOR_BANCO_DADOS','CAMIMHO','');
end;
try // muda o estado ConecTed do SQLConnectio para False limpa os parametros passa o caminho do banco, usuario, senha e
muda novamente para true
with ConexaoBD do
begin
Connected:= False;
Params.Clear; //ex: 127.0.0.1:C:\Retagauarda\Dados\Banco.FDB
Params.Values['Database']:= Trim(vgs_SERVIDOR_IP)+':'+Trim(vgs_SERVIDOR_BANCO_DADOS);
Params.Values['User_Name']:= 'SYSDBA';
Params.Values['Password']:= 'masterkey';
Connected:= True;
vlini_Arquivo.Free;
end
except
Application.MessageBox('Não foi possivel conectar-se ao Banco de Dados.'+#13+
'Aplicação será fechada.','Aviso',MB_OK);
vlini_Arquivo.Free;
Application.Terminate;
end;
Todo o trecho de código funciona, porém só vai funcionar se mudar visualmente a propriedade do SQLConnection Conected para False.
o DBX é assim mesmo ? Sempre que for liberar um EXE para máquina de cliente onde não tem o Delphi instalado, antes de compilar tenho que mudar a propriedade do SQLConnection para False ? se alguém já passou por isso e tiver alguma solução desde já agradeço pela ajuda!!!!
Roney Melo
Curtir tópico
+ 0
Responder
Posts
25/03/2013
Francisco Macário
Olá Roney.
Sempre que for efetuar o Deploy (Implantação) da versão é recomendado essa pratica.
Se você manter o SQLConnection ativo em Debug, esse estado é mantido ao efetuar o Deploy. É mantido no DFM.
Aconselho a procurar artigos sobre Deploy de aplicações para obter mais dicas.
At.
Sempre que for efetuar o Deploy (Implantação) da versão é recomendado essa pratica.
Se você manter o SQLConnection ativo em Debug, esse estado é mantido ao efetuar o Deploy. É mantido no DFM.
Aconselho a procurar artigos sobre Deploy de aplicações para obter mais dicas.
At.
Responder
25/03/2013
Bruno Leandro
Olá, realmente manter a propriedade Conected como true costuma gerar erros e lentidão. O que eu tenho habito de fazer é verificar essa propriedade ao liberar o projeto no controle de versão (RCS, SVN, etc).
Responder
Clique aqui para fazer login e interagir na Comunidade :)