Problemas com MySQL e Delphi 6 - Field must have a value

Delphi

26/06/2004

Estou tendo problemas ao tentar inserir um registro no MySQL, está dando o seguinte erro:

Project xxxxxxxx raised exception class EDatabaseError with message ´Field ´ID´ must have a value´.

Este campo é do tipo int e é autoincrementador.

Diretamente, no banco funciona, mas no Delphi, não!

Estou utilizando TSQLDataSet + SQLDataSetProvider + TClientDataSet + TDataSet.

Este erro ocorre quando dou um Post e depois um ApplyUpdates(-1);

Fazendo só o ApplyUpdates(-1), também dá o mesmo erro.


Daaneto

Daaneto

Curtidas 0

Respostas

Sandra

Sandra

26/06/2004

daaneto,

Não conheço o MySQL mas, de acordo com a tradução da mensagem de erro apresentada, ´o campo ID deve ter um valor´, ou seja, significa que no momento do post, o campo está vazio.

Sendo este campo do tipo inteiro e autoincrementador, verifique em qual evento você está solicitando ao banco para criar o novo código. É no BeforePost, NewRecord? Qual? Talvez, pode estar aí a origem do problema apresentado na mensagem de erro.


GOSTEI 0
Daaneto

Daaneto

26/06/2004

O código para salvar no banco (Post / ApplyUpdate) é colocado no onclick de um botão do formulário (botão Salvar).

Os componentes de banco (TSQLDataSet + SQLDataSetProvider + TClientDataSet + TDataSet), estão em um DataModule.


GOSTEI 0
Daaneto

Daaneto

26/06/2004

Ainda estou tendo problema com a inserção...
Alguém pode ajudar?


GOSTEI 0
Fjsx

Fjsx

26/06/2004

Caro, o campo está com a propriedade REQUIRED como TRUE ?
Se sim, o validador do campo é disparado antes do dado ir para o BD.

Se não for isso, me avisa.


GOSTEI 0
Reginaldo174

Reginaldo174

26/06/2004

Amigo, trabalho com Mysql há uns 5 meses e pude notar que estes metodos de gravação não funcionam. Tive muitos problemas com eles pois uma hora gravava outra hora não. Descobri que isso se dava por causa dos compones DB. Solucionei utilizando edits e gravando utilizando query assim : insert into [tabela] (campo1,campo2)values(:campo1,:campo2)

passando :campo1,:campo2 com parametros.

assim funciona corretamente e afirmo que Mysql é o Banco de dados mais rápido que já trabalhei.


GOSTEI 0
POSTAR