Duduh_Capixaba Postado Junho 10, 2010 Denunciar Share Postado Junho 10, 2010 Olá delphianos!Estou com um problema que a princípio parece não ter solução, pois pesquisei bastante na internete me deparei com negativas. É o seguinte...Uma das tabelas de minha base de dados Firebird possui um campo BLOB SUB_TYPE 1. Ligando estatabela a um TTable (BDE) e setando o campo HISTORICO (campo BLOB) a um DBMemo, consigovisualizar e gravar os informações na base tranquilamente. Mas o mesmo não ocorre se eu usar umaQUERY.O SELECT funciona tranquilo, me mostra todos os dados da tabela, inclusive do campo HISTORICO.Agora, se tento fazer um INSERT usando SQL, o Delphi me retorna uma mesagem de erro para ocampo BLOB:"General SQL Error. Feature is not supported.BLOB and array data types are not supported for move operation."Isso quer mesmo dizer que não consigo inserir dados texto em um BLOB SUB_TYPE 1? Tentei inserirdiretamente pelo IBExpert substituindo os parâmetros por texto e deu certo, mas aí eu não consigoinserir as quebras de linha que o componente MEMO me proporciona, tendo que juntar o texto todoem uma linha só.Alguém pode me sar uma idéia? Preciso realmente inserir dados nessa tabela usando SQL, pois é ondegravo as configurações do meu sistema, e quando acontece um problema em um cliente, já teria a SQL deinserção pronta pra rodar, mas o campo histórico precisaria entrar tb. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Duduh_Capixaba Postado Junho 10, 2010 Autor Denunciar Share Postado Junho 10, 2010 (editado) Aê galera, voltando com a resposta...Bem, o Firebird 1.5 não tem uma função pra quebra de linha, então, o que eu fiz foiinserir uma função na minha base de dados. Função esta que está incluída na DLLib_udf.dll, que já vem na instalação do próprio Firebird (pasta UDF), ou seja, se vcusa a versão 1.5 do FB, basta declarar a função e usá-la, pois a DLL já está ondedeve estar.Prosseguindo, a função que faz a quebra é esta:DECLARE EXTERNAL FUNCTION ascii_char INTEGER RETURNS CSTRING(1) FREE_IT ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf';Você encontra esta função dentro do arquivo ib_udf.sql (linha 60).Depois de incluída, usamos assim:'linha1' || ascii_char(13) || 'linha2'Pronto, resolvido! Só não entendi porque raios as funções da biblioteca ib_udf.dll jánão vem como padrão...Problema resolvido, o tópico pode ser fechado. Editado Junho 10, 2010 por Duduh_Capixaba Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Duduh_Capixaba
Olá delphianos!
Estou com um problema que a princípio parece não ter solução, pois pesquisei bastante na internet
e me deparei com negativas. É o seguinte...
Uma das tabelas de minha base de dados Firebird possui um campo BLOB SUB_TYPE 1. Ligando esta
tabela a um TTable (BDE) e setando o campo HISTORICO (campo BLOB) a um DBMemo, consigo
visualizar e gravar os informações na base tranquilamente. Mas o mesmo não ocorre se eu usar uma
QUERY.
O SELECT funciona tranquilo, me mostra todos os dados da tabela, inclusive do campo HISTORICO.
Agora, se tento fazer um INSERT usando SQL, o Delphi me retorna uma mesagem de erro para o
campo BLOB:
"General SQL Error. Feature is not supported.
BLOB and array data types are not supported for move operation."
Isso quer mesmo dizer que não consigo inserir dados texto em um BLOB SUB_TYPE 1? Tentei inserir
diretamente pelo IBExpert substituindo os parâmetros por texto e deu certo, mas aí eu não consigo
inserir as quebras de linha que o componente MEMO me proporciona, tendo que juntar o texto todo
em uma linha só.
Alguém pode me sar uma idéia? Preciso realmente inserir dados nessa tabela usando SQL, pois é onde
gravo as configurações do meu sistema, e quando acontece um problema em um cliente, já teria a SQL de
inserção pronta pra rodar, mas o campo histórico precisaria entrar tb.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.