Fórum problema com Delphi 2007 + firebird 2.5 #424962
28/09/2012
0
Aconteceu um problema bem estranho, essa semana em um dos meus clientes.
Vou explicar aqui como esta a estrutura la
Servidor Win7 => tem o firebird 2.1 que foi atualizado para o 2.5, todos os arquivos do sistema estão aqui tbm.
Terminais winXP => uns 7 a 9 terminais, em todos eles eu apenas puxei o atalho do sistema que esta no servidor, não precisei copiar dll nenhuma, tudo funciona normal.
Essa semana fiz uma atualização comum, nada de mais. E reparei que a gds32.dll que estava na pasta do sistema era da 2.1 ainda. Então fui la na pasta bin do firebird peguei o fbClient.dll e peguei a gds32.dll.
Testei no servidor funcionou normal.
Testei em um outro terminal, funcionou normal.
Dae no outro dia de tarde o cliente me liga falando q tinha 2 terminais (para não contrariar as lei de Murphy) eram os 2 dos 3 mais usados não estava funcionando o sistema.
XD
Perguntei se não tinha acontecido algo diferente nesses pc, segundo ele não.
Fiz uma conexão remota não achei nada de errado, e realmente não conectava. Falava que não conseguia carregar a dbxint30.dll, que esta na pasta do sistema no servidor. Tentei copiar todas as dll na system32 do terminal. Não adiantou.
Tentei varias coisas.. até lembrar q eu tinha atualizado a gds32.dll voltei a versão 2.1 ou 2.0.1 não lembro e o sistema voltou a funcionar.
Fiz um teste com o Delphi 2007 um projeto novo apenas com SqlConnection. Deu pau.
Fiz um teste com o Delphi XE2 um projeto novo apenas com SqlConnection. Deu pau.
eu não costumo usar, mas para testar eu fiz isso tbm
Fiz um teste com o Delphi XE2 um projeto novo apenas com IBTable (não lembro o nome ). Funcionou.
O pior é que todos os terminais executam o mesmo exe e somente 2 deram problema, é algo especifico nessas duas maquinas que da pau com a dll do firebird 2.5
nesses terminais que deu problema estavam com winxp SP2. E nas que funcionam tbm.
Alguem ae sabe de algum outro detalhe que poderia influenciar, esses terminei que estao dando problema foi formatado este ano ainda...
Não tinha delphi, nem banco algum instalado neles isso eu garanto.
Ok aguardo respostas...
Desculpe se ficou meio longo, mas precisava passar alguns detalhes.
desde ja agradeço.
Marcos Iwazaki
Curtir tópico
+ 0Posts
29/09/2012
Alisson Santos
Tive um problema desse outro dia com o cliente, e o que estava ocorrendo era que algumas dlls que tinha que está junto ao executavel não estava.
Gostei + 0
01/10/2012
Marcos Iwazaki
tanto que não é problema de não ter algum arquivo dll, que qdo eu trocar a versão da dll gds32.dll tudo funciona
Tive um problema desse outro dia com o cliente, e o que estava ocorrendo era que algumas dlls que tinha que está junto ao executavel não estava.
Gostei + 0
01/10/2012
Alisson Santos
Gostei + 0
01/10/2012
Marcos Iwazaki
e o padrão usa dbxint30.dll
Gostei + 0
02/10/2012
Marcos Iwazaki
vou instalar o sistema e vou aproveitar p testar se nele funciona a dll nova...
caso funcionar... vou sugerir ao cliente formatar as outras maquinas novamente como teste... assim eu tenho certeza q vou usar o mesmo cd de instalação e vou saber se o problema estava no winXP com alguma atualização ou algo instalado q zicava ou pode ser até mesmo alguma coisa de hardware (o que eu duvido muito), mas Na nossa area de exata não tem nada.
Não custa nada tentar.
Gostei + 0
02/10/2012
Alisson Santos
Até hoje não tive problemas não.
Gostei + 0
02/10/2012
Marcos Iwazaki
q delphi vc usa?
Até hoje não tive problemas não.
Gostei + 0
02/10/2012
Deivison Melo
Qual seu problema atual, poderia postar o seu código?
Gostei + 0
02/10/2012
Marcos Iwazaki
na verdade não tem a ver como eu fiz (aparentemente) e sim com a gds32.dll.
sobre o dbx4 era o q o outro amigo flw q usava e nunca teve problemas e eu ja tive problemas c ele e não uso mais.
sobre posta o codigo...
o meu erro da qdo o SqlConnection conecta no banco...
sqlConn.Params.Values['Database'] := inifile.ReadString('BANCO','CAMINHO','LOCALHOST:'+ExtractFilePath(ParamStr(0)+'DB'));
eu pego o caminho em um arquivo .ini desta forma.
Qual seu problema atual, poderia postar o seu código?
Gostei + 0
02/10/2012
Deivison Melo
veja se o código abaixo irá atendê-lo:
(*************************************************************************************************************************)
//Procedure para gravar arquivo ini usado no login
//inicio
procedure GravaIni(Arquivo, Sessao, Subsessao, valor: string);
var
ArqIni: TIniFile;
begin
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
ArqIni.WriteString(Sessao, Subsessao, valor);
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Funcao para ler arquivo ini usado no login
//inicio
function LerIni(Arquivo, Sessao, Subsessao: string): string;
var
ArqIni: TIniFile;
sDirAplicacao: string;
begin
sDirAplicacao := ExtractFilePath(ParamStr(0));
ArqIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + Arquivo);
try
Result := ArqIni.ReadString(Sessao, Subsessao, );
finally
FreeAndNil(ArqIni);
end;
end;
//fim
(*************************************************************************************************************************)
//Lendo o arquivo ini criado (isso no create do formulário onde contém os objetos dbware´s (conexão com banco))
//inicio
begin
if not FileExists(sga.ini) then //verificando se o arquivo *.ini existe (usei o nome sga, mas o nome que você pesquisa é o mesmo nome criado)
ChamaForm(TfrmConfiguracao, frmConfiguracao) // essa procedure chama form foi feita para chamar os formularios, disponibilizarei aqui tb!
else
begin
try
with ConexaoDB do //nome do objeto dbconection do dbexpress
begin
Connected := False;
connectionname := PortoBello; //Nome do alias para conexão
drivername := interbase; //mesmo usando o firebird colocar aqui interbase, isso foi feito em delphi 7
getdriverfunc := getSQLDriverINTERBASE;
libraryname := dbexpint.dll;
params.clear;
params.add(drivername=interbase);
params.add(database= + LerInI(sga.ini, DB, caminho));
params.add(rolename=rolename);
params.add(user_name= + LerInI(sga.ini, DB, usuario));
params.add(password= + LerInI(sga.ini, DB, senha));
params.add(servercharset=);
params.add(sqldialect=3);
params.add(blobsize=-1);
params.add(commitretain=false);
params.add(waitonlocks=true);
params.add(errorresourcefile=);
params.add(localecode=0000);
params.add(interbase transisolation=readcommited);
params.add(trim char=false);
vendorlib := gds32.dll;
Connected := true;
end;
except
raise Exception.Create(Verifique se as configurações do arquivo sga.ini estão corretas!);
end;
end;
end;
//fim
(*************************************************************************************************************************)
//Chamar formulário
//inicio
procedure ChamaForm(aClasseForm: TComponentClass; aForm: TForm);
begin
{método para chamar form}
Application.CreateForm(aClasseForm, aForm);
try
aForm.ShowModal;
finally
aForm.Free;
end;
end;
//fim
(*************************************************************************************************************************)
forte abraço e bons códigos!
Emanoel Deivison
Recife - PE
Gostei + 0
02/10/2012
Marcos Iwazaki
a diferença seria libraryname := dbexpint.dll; q eu uso o dbxint30.dll
vc chegou a ler o meu primeiro post com os detalhes do erro?
q ao mudar o gds32.dll acontece o erro. e se eu voltar a versão antiga funciona?
Obrigado.
Gostei + 0
02/10/2012
Deivison Melo
Delphi 7 e 2007?
Gostei + 0
02/10/2012
Deivison Melo
Gostei + 0
02/10/2012
Marcos Iwazaki
mas o framework que eu utilizo no projeto se não me engano eu comecei a desenvolver no Delphi 7.
Delphi 7 e 2007?
Gostei + 0
02/10/2012
Marcos Iwazaki
poderia fazer ae um aplicativo novo apenas com o sqlconnection
no qual o arquivo ini eu passo apenas o caminho do banco.
e manda p mim fazendo favor.
Para facilitar em vez de ler o caminho do .ini pode por um edit na tela e eu preencho o edit e um botão p conectar.
E me passa as dlls que vc usa.
hj de noite pedi p o cliente deixar os pc ligados p fazer mais testes...
dae eu ja testo c o seu .exe tbm.
Pois eu ja testei com um aplicativo novo, feito do zero no XE2 e tbm deu erro.
Desde ja Obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)