Ir para conteúdo
  • Cadastre-se

dev botao

Trim Char com Driver UIB Firebird15


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

Recommended Posts

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 para o comentário
Compartilhar em outros 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?

  • Curtir 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 para o comentário
Compartilhar em outros 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.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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 para o comentário
Compartilhar em outros 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?

  • Obrigado 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 para o comentário
Compartilhar em outros sites

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 para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.