飘香,好久不见了。
这个问题按理说不应该存在,是不是你的表有外键,设置了级联删除。
如果没有设置,问题仍存在,可能是ado本身对多个表联合查询的记录会记录每个表的主关键字,然后在删除时全部删除(只是猜测,没有证实)
如果真有这种灭绝天良,惨无人道的事情发生,不如结果集用只读方式打开,要删除时,使用adodb.connection对象的execute方法执行一条删除单个表的sql语句算了。
本来这种事情我以前是一定要搞清楚的,但现在比较忙,只好给你提供一种折衷的办法了。
这个问题按理说不应该存在,是不是你的表有外键,设置了级联删除。
如果没有设置,问题仍存在,可能是ado本身对多个表联合查询的记录会记录每个表的主关键字,然后在删除时全部删除(只是猜测,没有证实)
如果真有这种灭绝天良,惨无人道的事情发生,不如结果集用只读方式打开,要删除时,使用adodb.connection对象的execute方法执行一条删除单个表的sql语句算了。
本来这种事情我以前是一定要搞清楚的,但现在比较忙,只好给你提供一种折衷的办法了。
记得如果你的tblDet因为其他原因不能删除(比如有外键),它也不报错,也不删除tblDet的记录.
要不就是有触发器,在主表上的删除触发器也可以实现这个功能。
如果是VB 的 RECORDSET删除的我觉得不太可能,因为VB不能用RECORDSET同时删除两个表中的数据,换句反过来话说,就算它能删除它也不能设置哪个表先被删除,所以也就不能保证外键的参照完整性,所以它不能同时删除两个表中的数据。你还是看看后台库吧,别查看前台VB了。
表上沒有任何級聯刪除,也沒有任何Trigger.你在自己的電腦上試一下就知道了。
不好意思,
因为上次回贴时恰逢周未,休息了两天~~~
我记得使用ADO可以实现(不过,是用Delphi代码)
我现在就去试试,如果成功了,我现贴出代码~~谢谢Yang_关心,因为最近心情不好,烦事连绵~
不好意思,
因为上次回贴时恰逢周未,休息了两天~~~
我记得使用ADO可以实现(不过,是用Delphi代码)
我现在就去试试,如果成功了,我现贴出代码~~谢谢Yang_关心,因为最近心情不好,烦事连绵~
说回复不能超过三次?
哪有啊?
胡说8道~~幸好我穿不马甲:-)
//接上吧,这么虚伪的字,怎么能少呢?呵呵~~恕CoolSlob不才,不能将上面代码翻译成“多国语言”
现抛砖望能引玉,嘻嘻^o^
//接上吧,这么虚伪的字,怎么能少呢?呵呵~~恕CoolSlob不才,不能将上面代码翻译成“多国语言”
现抛砖望能引玉,嘻嘻^o^
2、Open DataSet
3、Delete
4、UpdateBatch
5、看看结果:-)http://CoolSlob.ifood1.com/Download/Project1.exe
//你有权怀疑该程序有木马:-)
recordset.properties("unique table").value="tblmain"
此属性设为TBLMAIN,即删除TBLMAIN的记录,设为TBLDET,即删除TBLDET的记录.
cxmcxm(小陈)
, CoolSlob(严重郁闷中...)
:
UNIQUE TABLE屬性只對DELETE動作有效,但若是對Recordset進行新增、修改動作時,它還是會動到tblDet。
使用户能够直接控制在通过对多个基本表执行 JOIN 操所得到的 Recordset 中的特定基本表的修改。 Unique Table 指定一个允许进行更新、插入和删除的基本表的名称。
Unique Schema 指定模式,即表的所有者的名称。
Unique Catalog 指定目录,即包含表的数据库的名称。
设置和返回值设置或返回字符串值,该值是表、模式或目录的名称。说明所要的基本表通过其目录、模式和表名唯一标识。设置 Unique Table 属性后,可使用 Unique Schema 或 Unique Catalog 属性的值查找基本表。在设置 Unique Table 属性之前需要设置 Unique Schema 和 Unique Catalog 属性的其中一个属性或同时设置两个属性,但这不是必须的。Unique Table 的主键被用作整个 Recordset 的主键。该键可用于任何需要主键的方法。设置 Unique Table 后,AddNew、Delete、Resync、Update 和 UpdateBatch 方法只能影响到所命名的表。如果找不到唯一的基本表,将出现运行时错误。当把 CursorLocation 属性设置为 adUseClient 时,这些动态属性均被追加到 Recordset 对象的 Properties 集合中。