Deletando registro no mestre detalhe
28/12/2005
0
alguem poderia me ajudar com uma forma mais simples para executar esta operação, não gostaria de trocar o simpledataser por outro.
Dpinho
Posts
29/12/2005
Caninha51
Provavelmente na tabelma itemNF tu tem uma chave estrangeira neh?
Eh soh colocar pra excluir em cascata...
29/12/2005
Dpinho
Relamente não tem chave estrangeira, mas gostaria de fazer sem a chave, na unha se possivel.
Alguem poderia ajudar?
29/12/2005
Aerreira
O ideal mesmo é usar a chave estrangeira e usar o ´on delete cascade´, mas como quer fazer manualmente, o correto seria primeiro excluir os registros da tabela detalhe e depois o registro master. Talvez esteja apagando a tabela mestre (e perdendo a sua chave de ligação entre as tabelas) e depois tentando apagar os registros detalhes com a chave errada.
29/12/2005
Caninha51
DELETE FROM TABLEDETALHES WHERE CODMESTRE = X
DELETE FROM TABLEMESTRE WHERE CODIGO = X
29/12/2005
Dpinho
o erro que esta retornando é: Update Affected more than 1 record.
Meu codigo é este:
[color=red:095afb6b05]DM.SDS_Itemos.IndexFieldNames := ´OS´;
DM.SDS_Itemos.first;
while DM.SDS_Itemos.FieldByName(´OS´).AsString = DM.SDS_Receitas.FieldByName(´Numero´).AsString do
begin
if DM.SDS_Itemos.FieldByName(´OS´).AsString = DM.SDS_Receitas.FieldByName(´Numero´).AsString then
begin
TD.TransactionID := 1;
TD.IsolationLevel := XILReadCommitted;
DM.SQLC.StartTransaction(TD);
DM.SDS_Itemos.Delete;
DM.SDS_Itemos.ApplyUpdates(0);
DM.SQLC.Commit(TD);
end;
DM.SDS_Itemos.Next;
end;
TD.TransactionID := 1;
TD.IsolationLevel := XILReadCommitted;
DM.SQLC.StartTransaction(TD);
DM.SDS_Receitas.Delete;
DM.SDS_Receitas.ApplyUpdates(0);
DM.SQLC.Commit(TD);[/color:095afb6b05]
Tabela Itemos = Detalhe
Receitas = Mestre.
Por favor ajude a resolver esta questão
29/12/2005
Caninha51
E tira todos os outros Starts e commits....
E essa linha do IF eh desnecessário, pois vc jah tah colocando a mesma condição no while! ;)
Clique aqui para fazer login e interagir na Comunidade :)