Mensagem de erro "valores Incorretos dentro de SQLDA estrutura" com o Firebird e Delphi 2009

StackOverflow https://stackoverflow.com/questions/1852290

Pergunta

Eu estou strugling com mensagem de erro "valores Incorretos dentro de SQLDA estrutura" quando eu estou tentando atualizar o campo blob dentro Firebird 2.1 banco de dados do Delphi 2009 DBX aplicação.

No entanto, eu recebo a mensagem de erro quando tento executar TSQLQuery com o seguinte SQL:"update MINHA_TABELA set CAMPO1= :dados where id = :id"

O relevante delphi código é:

MyQuery.ParamByName('id').AsInteger := id;
MyQuery.ParamByName('data').LoadFromFile(filename, ftBlob);
MyQuery.ExecSQL();

Onde devo procurar?Este tem vindo a trabalhar em anteriores versões do Delphi.

Foi útil?

Solução

Verifique seu motorista - é Para Firebird ou você apenas usa o Interbase motorista para isso?. Sabe -se que a equipe do Firebird alterou a estrutura SQLDA para blobs em 2.1 e, portanto, o driver da Interbase não pode mais ser usado.

Você tem algumas opções aqui:

  1. (Recomendado, IMHO) Atualização para Delphi 2010 - Além de um driver DBX Firebird, você terá muito mais coisas para brincar (veja aqui para mais)
  2. Compre um motorista de terceiros para o Firebird, que funciona em Delphi 2009
  3. 'Downgrade' seu Firebird (use -o como último recurso, é claro)
  4. Altere sua biblioteca de conectividade. Sim, isso pode implicar que o código seja reescrito.

Outras dicas

Talvez você precise usar o driver DBX gratuito para Firebird

http://sites.google.com/site/dbxfirebird/

Esse é o tipo de erro de cripta que o driver interbase de Delphi é usado para mostrar.

Eu vi esse problema quando você tem diferentes números de parâmetros na sua instrução SQL e os definidos no seu componente de consulta.

A primeira coisa que vem à mente é garantir que a DLL do cliente (GDS32.DLL ou FB32.DLL ou FBCLIENT.DLL, o nome depende de qual versão do Firebird você está usando) corresponde exatamente à versão do servidor que você está usando.

--Jeroen

FWIW, eu tenho esse erro em um programa perl através da execução de uma instrução, sem vincular variáveis, quando se precisava deles.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top