Problemas com MySQL e Delphi 6 - Field must have a value
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.
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
Curtidas 0
Respostas
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.
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
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.
Os componentes de banco (TSQLDataSet + SQLDataSetProvider + TClientDataSet + TDataSet), estão em um DataModule.
GOSTEI 0
Daaneto
26/06/2004
Ainda estou tendo problema com a inserção...
Alguém pode ajudar?
Alguém pode ajudar?
GOSTEI 0
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.
Se sim, o validador do campo é disparado antes do dado ir para o BD.
Se não for isso, me avisa.
GOSTEI 0
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.
passando :campo1,:campo2 com parametros.
assim funciona corretamente e afirmo que Mysql é o Banco de dados mais rápido que já trabalhei.
GOSTEI 0