Fórum problema com Delphi 2007 + firebird 2.5 #424962

28/09/2012

0

Olá pessoal.
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

Marcos Iwazaki

Responder

Posts

29/09/2012

Alisson Santos

Verificou se as dlls estão na pasta do executavel.

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

Gostei + 0

01/10/2012

Marcos Iwazaki

sim amigo...
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


Verificou se as dlls estão na pasta do executavel.

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

Gostei + 0

01/10/2012

Alisson Santos

Quando está utilizando a tecnologia dbx4 tem que deixar o campo do sqlconnection loadparamsonconnector true.
Responder

Gostei + 0

01/10/2012

Marcos Iwazaki

estou usando o padrão do delphi. tentei usar esse dbx4 mas dava erro em alguns sqls.

e o padrão usa dbxint30.dll
Responder

Gostei + 0

02/10/2012

Marcos Iwazaki

Hj formatei outro pc deste cliente, com winXP SP2.

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

Gostei + 0

02/10/2012

Alisson Santos

Eu utilizo o dbx4 e acho muito bom ele.
Até hoje não tive problemas não.
Responder

Gostei + 0

02/10/2012

Marcos Iwazaki

pelo q li ele tem prob c delphi 2007.

q delphi vc usa?
Eu utilizo o dbx4 e acho muito bom ele.
Até hoje não tive problemas não.
Responder

Gostei + 0

02/10/2012

Deivison Melo

Para usar o dbx4 ele tem que usar uma versão igual ou superior ao delphi bds 2006...

Qual seu problema atual, poderia postar o seu código?

Responder

Gostei + 0

02/10/2012

Marcos Iwazaki

Olá amigo.. se ver o meu primeiro post vai ver o problema.

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.

Para usar o dbx4 ele tem que usar uma versão igual ou superior ao delphi bds 2006...

Qual seu problema atual, poderia postar o seu código?

Responder

Gostei + 0

02/10/2012

Deivison Melo

Seguem abaixo exemplos usados com a conexão dbexpress usando o banco de dados firebird,
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


Responder

Gostei + 0

02/10/2012

Marcos Iwazaki

amigo é mais ou menos isso que eu faço...

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

Gostei + 0

02/10/2012

Deivison Melo

Imagino que você tenha duas versões do delphi instalado em sua máquina, correto?

Delphi 7 e 2007?

Responder

Gostei + 0

02/10/2012

Deivison Melo

Deverá utilizar a mesma versão do delphi em todas as estações, como também as mesmas dll´s
Responder

Gostei + 0

02/10/2012

Marcos Iwazaki

Na verdade apenas o 2007

mas o framework que eu utilizo no projeto se não me engano eu comecei a desenvolver no Delphi 7.

Imagino que você tenha duas versões do delphi instalado em sua máquina, correto?

Delphi 7 e 2007?

Responder

Gostei + 0

02/10/2012

Marcos Iwazaki

Amigo se não for muito incomodo....
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.

Deverá utilizar a mesma versão do delphi em todas as estações, como também as mesmas dll´s
Responder

Gostei + 0

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

Aceitar