Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como inserir texto em um campo blob com SQL


Duduh_Capixaba

Pergunta

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

  • 0

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 foi

inserir uma função na minha base de dados. Função esta que está incluída na DLL

ib_udf.dll, que já vem na instalação do próprio Firebird (pasta UDF), ou seja, se vc

usa a versão 1.5 do FB, basta declarar a função e usá-la, pois a DLL já está onde

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

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...