Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Trim Char com Driver UIB Firebird15


Edevair Viesa Junior
  • Este tópico foi criado há 1647 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom dia pessoal.

Eu estava com problemas de queda de conexão em rede com o firebird 2.1, procurando bastante na internet eu percebi que o motivo era o uso do driver interbase antigo junto com a gds32.dll que estava causando o problema.

Pois bem decidimos migrar o firebird para a versão 3.0, até aí sem nenhum problema. E decidimos incluir no Delphi 7 (DBExpress) o uso do driver UIB Firebird15, porém no nosso sistema, utilizando o driver antigo tínhamos o parâmetro Trim Char=True no .INI da conexão com o banco, mas nos parâmetros UIB Firebird15 não tem esta opção e estamos agora com vários problemas por conta deste Trim Char, pois muitas comparações que usamos com dados do banco de dados estão vindo com espaços em branco.

Ex:

Gravo no banco de dados a tabela de desconto de um determinado item do pedido, este campo é do tipo VARCHAR(3) e é utilizado desde A,B,C, D, E .. Z, AA, AB.. até ZZZ, porém quando gravo uma tabela com somente um algarismo anteriormente gravava somente o 'A' porém sem a opção Trim Char=True no novo driver esta vindo assim 'A  ' aí na comparação fica errado pois 'A' é diferente de 'A  ' !

Alguém sabe me dizer como resolvo o problema no novo driver ??

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Consultores
Em 17/11/2017 at 11:39, Edevair Viesa Junior disse:

Gravo no banco de dados a tabela de desconto de um determinado item do pedido, este campo é do tipo VARCHAR(3) e é utilizado desde A,B,C, D, E .. Z, AA, AB.. até ZZZ, porém quando gravo uma tabela com somente um algarismo anteriormente gravava somente o 'A' porém sem a opção Trim Char=True no novo driver esta vindo assim 'A  ' aí na comparação fica errado pois 'A' é diferente de 'A  ' !

Não está havendo alguma confusão? Se o campo é do tipo VARCHAR(3) então o valor dele é realmente 'A' e não 'A  ' conforme a documentação explica. A menos que o componente que você está usando envie os espaços no final.

Não utilizei esse driver para DBX. Ele ainda está disponível?

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

Em 17/11/2017 at 10:39, Edevair Viesa Junior disse:

Bom dia pessoal.

Eu estava com problemas de queda de conexão em rede com o firebird 2.1, procurando bastante na internet eu percebi que o motivo era o uso do driver interbase antigo junto com a gds32.dll que estava causando o problema.

Pois bem decidimos migrar o firebird para a versão 3.0, até aí sem nenhum problema. E decidimos incluir no Delphi 7 (DBExpress) o uso do driver UIB Firebird15, porém no nosso sistema, utilizando o driver antigo tínhamos o parâmetro Trim Char=True no .INI da conexão com o banco, mas nos parâmetros UIB Firebird15 não tem esta opção e estamos agora com vários problemas por conta deste Trim Char, pois muitas comparações que usamos com dados do banco de dados estão vindo com espaços em branco.

Ex:

Gravo no banco de dados a tabela de desconto de um determinado item do pedido, este campo é do tipo VARCHAR(3) e é utilizado desde A,B,C, D, E .. Z, AA, AB.. até ZZZ, porém quando gravo uma tabela com somente um algarismo anteriormente gravava somente o 'A' porém sem a opção Trim Char=True no novo driver esta vindo assim 'A  ' aí na comparação fica errado pois 'A' é diferente de 'A  ' !

Alguém sabe me dizer como resolvo o problema no novo driver ??

Porque você não usa a dll do proprio firebird (fbclient.dll) dentro de ...\Firebird\Firebird_2_5\bin.

  • Like 1
Link to comment
Share on other sites

  • Membros Pro
5 horas atrás, EMBarbosa disse:

Não está havendo alguma confusão? Se o campo é do tipo VARCHAR(3) então o valor dele é realmente 'A' e não 'A  ' conforme a documentação explica. A menos que o componente que você está usando envie os espaços no final.

Não utilizei esse driver para DBX. Ele ainda está disponível?

@EMBarbosa primeiramente, muito obrigado pela resposta.

O Driver está disponível sim.

Se for o problema com o driver UIB Firebird15 para DBX que está concatenando os espaços no final, como resolvo isso ??

2 horas atrás, carlosinfoteen disse:

Porque você não usa a dll do proprio firebird (fbclient.dll) dentro de ...\Firebird\Firebird_2_5\bin.

@carlosinfoteen o Delphi 7 não tem na paleta DBX driver nativo para firebird. Anteriormente eu estava usando a gds32.dll para acesso as funções para o firebird, mas começou a ficar instável em rede. precisei atualizar a versão do firebird para 3.0 e com isso alterar o driver de conexão, agora estou usando o UIB Firebird15. A dll fbclient.dll é a utilizada via vendor no DBX e não como acesso direto. É necessário acessar ela através de uma outra dll que é o driver de conexão da DBX com o Firebird.

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Consultores
21 horas atrás, Edevair Viesa Junior disse:

O Driver está disponível sim.

Ahh sim. Como o site do autor está "fora do ar", achei que ele tinha abandonado o driver...Mas depois que você disse que estava disponível, fiz uma pesquisa melhor e achei ele no GitHub.

 

21 horas atrás, Edevair Viesa Junior disse:

Se for o problema com o driver UIB Firebird15 para DBX que está concatenando os espaços no final, como resolvo isso ??

Bom, depende mesmo se está concatenando. Eu ainda não entendi porque o driver faria isso.

Eu tentaria verificar essa opção "Trim Char", já que você a utilizava antes.

Me parece que a opção ainda existe. Veja no código fonte.

Se isso não for possível e você ainda estiver no início do trabalho, eu tentaria utilizar outra tecnologia pra acesso ao BD. Por exemplo FireDAC, ZEOs, IBX2, os componentes UIB, etc...

Em caso negativo, você precisará tratar isso no código e/ou no banco. Por exemplo adicionar o comando Trim nas comparações.

 

21 horas atrás, Edevair Viesa Junior disse:

Delphi 7 não tem na paleta DBX driver

Que componentes você usava anteriormente?

  • Thanks 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Membros Pro
42 minutos atrás, EMBarbosa disse:

Ahh sim. Como o site do autor está "fora do ar", achei que ele tinha abandonado o driver...Mas depois que você disse que estava disponível, fiz uma pesquisa melhor e achei ele no GitHub.

 

Bom, depende mesmo se está concatenando. Eu ainda não entendi porque o driver faria isso.

Eu tentaria verificar essa opção "Trim Char", já que você a utilizava antes.

Me parece que a opção ainda existe. Veja no código fonte.

Se isso não for possível e você ainda estiver no início do trabalho, eu tentaria utilizar outra tecnologia pra acesso ao BD. Por exemplo FireDAC, ZEOs, IBX2, os componentes UIB, etc...

Em caso negativo, você precisará tratar isso no código e/ou no banco. Por exemplo adicionar o comando Trim nas comparações.

 

Que componentes você usava anteriormente?

O projeto está finalizado inclusive...

Estamos migrando para Delphi Berlin com acesso DBX tb, mas com driver firebird e este não tem problema algum com o acesso e muito menos com o Firebird 3.0.

O problema é o projeto existente finalizado, que usava o driver Interbase com a GDS32.dll, aí esta com muitos problemas em rede. Por isso migramos para o uso com o driver UIB Firebird15. O componente eram os mesmos SQLConnection -> SQLQuery -> DataSetProvider -> ClientDataSet -> DataSource com os dois drivers.

A saída (que era a única que havia concluído até agora) mesmo será colocar o trim em tudo, mas vai dar uma trabalheira danada, só atrasando a migração pro Berlin, mas fazer o quê..

Muito Obrigado !

Abs

 

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

Link to comment
Share on other sites

  • Este tópico foi criado há 1647 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.