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

(Resolvido) DBMemo Vazio-Erro de gravação-ApplyUpdates


coisvaes

Pergunta

Olá, Pessoal.

Meu aplicativo está apresentando a mensagem de erro "Project xxxx raised exception class 'EAccessViolation' with message 'Access violation at address 004023d2 in module <aplicativo.exe>. Read of address FFFFFFFC.

Isto ocorre sempre que, depois de um Edit ou Insert, tento gravar (ApplyUpdates) o registro e o campo DBMemo (ligado a um campo Blob sub_type 1, Firebird 1.5) não contem dados. Isto não ocorre quando o DBMemo contém dados.

Desde já, obrigado pela ajuda.

No botão gravar, fiz assim:

procedure TfrmForm.BtnGravarClick(Sender: TObject);

begin

if DM.ClientDataSet1.State in [dsEdit, dsInsert] then

begin

DM.ClientDataSet1.Post;

if DM.ClientDataSet1.ApplyUpdates(0) <> 0 then

DM.ClientDataSet1.CancelUpdates;

end;

end;

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Isto ocorre sempre que, depois de um Edit ou Insert, tento gravar (ApplyUpdates) o registro e o campo DBMemo (ligado a um campo Blob sub_type 1, Firebird 1.5) não contem dados. Isto não ocorre quando o DBMemo contém dados.

Faça um teste no campo do DBMemo antes de salvar... se estiver vazio atribua como valor apenas um único caracter

por exemplo o ponto '.'

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Jhonas.

Obrigado pela ajuda. Fazendo do jeito que você sugeriu não dá erro, entretanto, as vezes preciso que este campo esteja vazio. Sei que tem como contornar isso, usando o mesmo princípio que você adotou. Mas, por que isto acontece? Testei com o DBRichText e isto não ocorreu, entretanto, preciso do DBMemo, melhor para texto simples. Outro teste que fiz foi refazer o formulário, o que também resolveu o problema, mas, não parece uma boa solução refazer o formulário sempre que um erro desses aparecer.

Um abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
Obrigado pela ajuda. Fazendo do jeito que você sugeriu não dá erro, entretanto, as vezes preciso que este campo esteja vazio. Sei que tem como contornar isso, usando o mesmo princípio que você adotou. Mas, por que isto acontece? Testei com o DBRichText e isto não ocorreu, entretanto, preciso do DBMemo, melhor para texto simples. Outro teste que fiz foi refazer o formulário, o que também resolveu o problema, mas, não parece uma boa solução refazer o formulário sempre que um erro desses aparecer.

A maneira de resolver esse problema está na definição correta do campo

exemplo:

BLOB sub_type 1 segment size 80 CHARACTER SET WIN1252

Nesse caso não acontecerá mais o erro mesmo que o campo esteja vazio

abraço

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...