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

17/08/2017

0

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

Responder

Posts

19/09/2017

Everton Santos

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

19/09/2017

Everton Santos

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
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar