TSQLConnection <-> TSQLDataSet <-> TDataSetPorvider <-> TClientDataSet <-> 
TDataSource  , CERTO !?

Bom no TClientDataSet abra o FIELDS EDITOR, va no campo AUTOINC.. em Object 
Inspector vá em PROPERTIES AutoGenerataValue := "arAutoInc"; 
ProviderFlags := [pfInKey, pfHidden];
Required := False;

nos outros deixe como está...
creio que com isso não terá mais problemas...

Faz muito tempo que não mexo com DBExpress, mas acho que resolve, agora se 
quizer tranquilidade use o MyDAC da CoreLab www.crlab.com 100% otimo...


Luiz Escobar - Analista/Desenvolvedor:
WEB - HTML/JavaScript/PHP/MySQL 
WINDOWS - Delphi/ASSEMBLY/MySQL/xBase
SERVIDORES - CNA IntraNetWare4.11, LINUX-(RedHat9/Suse10.2), Windows 2K/XP


 


From: Carlos 
Sent: Monday, December 03, 2007 8:15 PM
To: [email protected] 
Subject: [delphi-br] Delphi 7 + DBExpress + MySql - problemas com 
auto-incremento


Boa noite a todos!
Estou desenvolvendo uma aplicação em Delphi7 usando DBExpress, MySql 
5. 
Tenho uma tela Mestre/Detalhe com Unidades/Telefones onde cada 
Unidade pode ter vários telefones. Na tabela de telefone a Chave 
Primária é um campo auto-incremento, e ai começou o meu problema. 
Quando peço para salvar, o MySql manda a mensagem "Field XXXX must 
have a value".
Lembrando que o referido campo é auto-incremento, logo o MySql em um 
relacionamento Mestre/Detalhe não está incrementando os valores. 
Resolvi o problema criando uma query de
consulta, onde capturo o valor maximo do campo id_fone_unid e 
incrementando somando 1 a ele. Uma adaptação técnica.
Verifiquei todos os passos (2 sqlDataSet, 03 DataSource, 1 
DataSetProvider, 02 ClientDataSet), os respectivos eventos (afterpost 
e afterDelete). Tudo certinho.
Antes de postar aqui, consultei na grande rede, e não achei nada 
parecido, por isso peço auxílio dos colegas quanto ao caso.
Só para reforçar, o referido problema de não incrementar um valor em 
um campo auto-incremento só ocorre em um tabela detalhe.
Se for em uma tabela/query master ou sem relacionamento, o incremento 
é realizado sem problemas.
No Firebird, o problema é resolvido com um Stored Procedure, e 
pronto, mas no MySql, não sei como resolver, ou será que este 
problema é normal?
Desde já agradeço a atenção dispensada.
Fraterno abraço!
Carlos



 

[As partes desta mensagem que não continham texto foram removidas]

Responder a