Delphi erro: unable find record no key specified no comando dm2.CDSEstrutVis.ApplyUpdates(-1);

SQL

MySQL

Delphi

Banco de Dados

17/08/2017

Boa tarde,
Meu ambiente e' Delphi XE6 / DBX / MYSQL 5.6. Uso os componentes para acessar o banco de dados:TSQLCONNECTION, TSQLDATASET, TDATASETPROVIDER, TCLIENTDATASET e TDATASOURCE.
Pois bem, estou enfrentando o erro: "unable find record no key specified" quando tento excluir registros de uma tabela, no comando "dm2.CDSEstrutVis.ApplyUpdates(-1);". No ambiente Delphi 7 / DBX / MYSQL 5.6, funciona normalmente. Agora, estou migrando para o novo ambiente Delphi XE6... mas erro apareceu.
A rotina que uso e' essa:
.
.
.
dm2.cdsestrutvis.Close;
dm2.CDSEstrutVis.Open;
dm2.CDSEstrutVis.First;

while dm2.CDSEstrutVis.eof = false do
begin
dm2.CDSEstrutVis.Delete;
dm2.CDSEstrutVis.First;
end;
dm2.CDSEstrutVis.ApplyUpdates(-1); // <---- aqui apresenta o erro.

O mais curioso e' que uso o comando Delete para outras tabelas dando em seguida o applyUpdates(-1) e funciona normalmente.
Ja' alterei o UpdateMode do TDataSetProvider para upWhereKeyOnly, inclusive do campo chave e o erro persiste.
Ja' li tudo na internet sobre o tema, inclusive no link: https://stackoverflow.com/questions/10122073/dbexpress-no-key-specified

Se alguem puder me ajudar, agradeco muito.
Obrigado,
Airton
Airton Santos

Airton Santos

Curtidas 0

Respostas

Everton Santos

Everton Santos

17/08/2017

bom dia esse erro costuma dar quando vc no ProviderFlags do clientDataset não indicou nenhuma chave (key) ;
GOSTEI 0
Everton Santos

Everton Santos

17/08/2017

vc tem muitos filhos ligados ao cds mestre ?

tira a ligacao dos filhos e ve se grava o pai aí vai ligando filho a filho e gravando que vc vai ver exatamente em que tabela da esse erro
descobrindo vc apaga o CLIENTDATASET e cria ele de novo do zero
GOSTEI 0
POSTAR