用Profiler看了一下,TUpdateSql控件传入的关键字不知怎么搞成了Null,如在ImgQry2相关的控件中的deleteSql为:Delete From MyImg where Number = :Number(其中Number为两表的主关键字),变成了Delete From MyImg where Number = NULL,怪事????就是用Delphi的例子代码也不行 原: if Master.UpdatesPending or Detail.UpdatesPending then if Master.UpdateStatus = usInserted then Database1.ApplyUpdates([Master, Detail]) else Database1.ApplyUpdates([Detail, Master]); 我的: try if not Dm.ImgQry2.Eof then Begin showMessage('Number ='+Dm.ImgQry2.FieldByName('Number').asstring); //显示Number=1 Dm.ImgQry2.Delete ; End; if not Dm.MsgQry2.Eof then Begin Dm.MsgQry2.Delete; End; if DM.MsgQry2.UpdatesPending or Dm.ImgQry2.UpdatesPending then if DM.MsgQry2.UpdateStatus = usInserted then Dm.ImgQry2.Database.ApplyUpdates([DM.MsgQry2, Dm.ImgQry2]) else Dm.ImgQry2.Database.ApplyUpdates([Dm.ImgQry2, DM.MsgQry2]); except On Exception do Begin Dm.MsgQry2.CancelUpdates ; Dm.ImgQry2.CancelUpdates ; Exit; End; end;主细表的记录不是这么删除吗??
原: if Master.UpdatesPending or Detail.UpdatesPending then
if Master.UpdateStatus = usInserted then
Database1.ApplyUpdates([Master, Detail])
else
Database1.ApplyUpdates([Detail, Master]);
我的:
try
if not Dm.ImgQry2.Eof then
Begin
showMessage('Number ='+Dm.ImgQry2.FieldByName('Number').asstring); //显示Number=1
Dm.ImgQry2.Delete ;
End; if not Dm.MsgQry2.Eof then
Begin
Dm.MsgQry2.Delete;
End;
if DM.MsgQry2.UpdatesPending or Dm.ImgQry2.UpdatesPending then
if DM.MsgQry2.UpdateStatus = usInserted then
Dm.ImgQry2.Database.ApplyUpdates([DM.MsgQry2, Dm.ImgQry2])
else
Dm.ImgQry2.Database.ApplyUpdates([Dm.ImgQry2, DM.MsgQry2]); except
On Exception do
Begin
Dm.MsgQry2.CancelUpdates ;
Dm.ImgQry2.CancelUpdates ;
Exit;
End;
end;主细表的记录不是这么删除吗??
看来和主细目没有什么关系。GZ
真行了,你是在那里找到这么做的?