GARANTIR DESCONTO

Fórum Delphi 2010 + DBExpress + Firebird + Campo Blob #384026

18/08/2010

0

Boa tarde!

Alguém sabe da existência de algum problema em gravar/ler campo blob no Delphi 2010 ?

Tenho uma aplicação em Delphi 2009 que grava/lê campos blob usando o driver TBODBXFB (DBExpress).

Mas no delphi 2010, ele não gera nenhum erro na gravação, mas quando vou verificar o campo pelo IBExpert, aparece o texto que gravei, mas todas as letras separadas por um espaço ??!!??.

Vejam como fica gravando com o Delphi 2009:


Vejam como fica gravando com o Delphi 2010:


E quando vou fazer a consulta deste campo, somente é mostada a primeira letra que foi gravada.
Nilson Rapcinski

Nilson Rapcinski

Responder

Posts

18/08/2010

Marco Salles

teoricamente não deveria ter problemas. Afinal o Driver Nativo do Firebird resolveria este problema dos Campo Blobs. Tem ate um video sobre http://www.andreanolanusse.com/blogpt/novo-driver-dbexpress-para-firebird-no-delphi-2010-e-cbuilder-2010/   talver o ploblema possa ser o Unicode , ja que o Tamanho da String mudou   Se vc usa alguma função relacionado a strings para fazer esta gravação ou esta leitura pode ser ai a raiz do problema e não o driver    
Responder

Gostei + 0

18/08/2010

Nilson Rapcinski

Olá Marco!

Não estou usando os componentes TDBMemo.

No firebird meu campo está definido como Blob Bub Type 1 Charset Win1252.

E na aplicação tenho um TMemo onde faço a seguinte atribuição através de uma Stored Procedure:

DataModule1.TStoredProcedure1.FieldByName('CAMPO').Value := Memo1.Text;

E o TField está definido com FTMemo.
Responder

Gostei + 0

19/08/2010

Marco Salles

Olá Marco!

Não estou usando os componentes TDBMemo.

No firebird meu campo está definido como Blob Bub Type 1 Charset Win1252.

E na aplicação tenho um TMemo onde faço a seguinte atribuição através de uma Stored Procedure:

DataModule1.TStoredProcedure1.FieldByName('CAMPO').Value := Memo1.Text;

E o TField está definido com FTMemo.
bem eu Nunca usei o TStoredProcedure , mas ainda acho que é um problema de Unicode   eu tentaria com  
 
DataModule1.TStoredProcedure1.FieldByName('CAMPO').asString := Memo1.Text;
 
ou
 
DataModule1.TStoredProcedure1.FieldByName('CAMPO').AsWideString := Memo1.Text;
 
ou
 
DataModule1.TStoredProcedure1.FieldByName('CAMPO').AsAnsiString := Memo1.text;
 
         
Responder

Gostei + 0

19/08/2010

Nilson Rapcinski

Bom dia, Marco!

Show de bola...

Funcionou com a opção:

DataModule1.TStoredProcedure1.FieldByName('CAMPO').AsAnsiString := Memo1.text;




Muito obrigado mesmo.
Responder

Gostei + 0

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

Aceitar