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]

