我有如下一段用于删除记录的代码,在删除前使用了
另外一个 TClientDataSet做一个查询:
//查看当前单号下是否有明细记录
sql := 'select * from SC_SWCKPZMX where SC_DH='''+edtSC_DH.Text+'''';
cdsSelect.Active := false;
Socketconnection.AppServer.QryData(sql);
cdsSelect.Active := true;
if cdsSelect.RecordCount = 0 then exit;
//若无明细记录则删除但前出库单记录
cdsMain.Delete;
cdsMain.ApplyUpdates(-1);
这种情况下无法彻底删除,也就是在DBGrid中似乎删除了,但实际上并没有从数据库中删除,但如果去掉前面判断是否存在明细记录的代码后就可以顺利删除,我经常会碰到这样的情况,以前的处理办法都是用变量来记录当前记录,删除前再按照变量重新查询,但这样感觉很累赘,也影响速度,不知道为什么会出现这样的问题,大家有什么好的办法。
另外一个 TClientDataSet做一个查询:
//查看当前单号下是否有明细记录
sql := 'select * from SC_SWCKPZMX where SC_DH='''+edtSC_DH.Text+'''';
cdsSelect.Active := false;
Socketconnection.AppServer.QryData(sql);
cdsSelect.Active := true;
if cdsSelect.RecordCount = 0 then exit;
//若无明细记录则删除但前出库单记录
cdsMain.Delete;
cdsMain.ApplyUpdates(-1);
这种情况下无法彻底删除,也就是在DBGrid中似乎删除了,但实际上并没有从数据库中删除,但如果去掉前面判断是否存在明细记录的代码后就可以顺利删除,我经常会碰到这样的情况,以前的处理办法都是用变量来记录当前记录,删除前再按照变量重新查询,但这样感觉很累赘,也影响速度,不知道为什么会出现这样的问题,大家有什么好的办法。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货