I
i2346
Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADO连接数据库,数据库为SQL SERVER2000,关联表之间已经定义了外键。
当使用TADOTABLE中定义了子表MasterSource和MasterFields的主-明细关系后
当对子表的进行插入新记录的操作提交时,发生以下错误(主表相当字段已填
写,并未有重复值):
raised exception class EOleException with message'INSERT statement
conflicted with COLUMN FOREIGN KEY constraint 'FK_MInList_MInMain'.
The conflict occurred in database 'DataSQL',table 'InMain',
column'OrderNo''.
OK,于是我就关闭了在SQL SERVER2000中InMain和InList之间的“对INSERT和
UPDATE强制关系”。上面的问题不出现了,但又有两个问题:
1、关闭了“对INSERT和UPDATE强制关系”也就意味着关闭了“级联更新相关的字
段”和“级联删除相关的记录”。当我删除主表记录时,子表记录未能同时删除。
2、当在新的主表记录插入数据后,对子表插入记录时,TDBGRID只能显示一行新
记录(也就是已经输入的新记录无法显示),只要提交后,浏览其它主表记录后
返回回来才能看到对应的全部子表记录。
对出现的第二个问题,同样的也出现在李维的《ADO/MTS/COM+高级程序设计篇》
的主-明细表的例子中。第一个问题还可以通过手工编程方式得以实现子表的级
联删除。第二个问题呢?
后来我对开启在SQL SERVER2000中“对INSERT和UPDATE强制关系”以及其下的选
项的情况下,用李维的主-明细表通过TADOQUERY的SQL语句进行联接的方式,问题
不出现了(子表的SQL语句如下:SELECT * FROM INLIST WHERE ORDERNO=:ORDERNO
,并把子表的TADOQUERY的DATASOURCE设为主表对应的DATASOURCE)
另外还有一个问题,上面的两种方式下,我对INLIST表中的MATERIALNO与MATERIALS表
的MATERIALNO设置了外键,当我在INLIST的MATERIALNO中输入MATERIALS表中不存在
的数值时,系统不出错?为什么?
于是我就十分的郁闷.对于SQL SERVER及ACCESS(ACCESS的数据库同样出此问题)为
什么就不能用传统对MASTERSOURCE的设置以实现主-明细表的关系呢???
请各位大侠指教!!!!!
当使用TADOTABLE中定义了子表MasterSource和MasterFields的主-明细关系后
当对子表的进行插入新记录的操作提交时,发生以下错误(主表相当字段已填
写,并未有重复值):
raised exception class EOleException with message'INSERT statement
conflicted with COLUMN FOREIGN KEY constraint 'FK_MInList_MInMain'.
The conflict occurred in database 'DataSQL',table 'InMain',
column'OrderNo''.
OK,于是我就关闭了在SQL SERVER2000中InMain和InList之间的“对INSERT和
UPDATE强制关系”。上面的问题不出现了,但又有两个问题:
1、关闭了“对INSERT和UPDATE强制关系”也就意味着关闭了“级联更新相关的字
段”和“级联删除相关的记录”。当我删除主表记录时,子表记录未能同时删除。
2、当在新的主表记录插入数据后,对子表插入记录时,TDBGRID只能显示一行新
记录(也就是已经输入的新记录无法显示),只要提交后,浏览其它主表记录后
返回回来才能看到对应的全部子表记录。
对出现的第二个问题,同样的也出现在李维的《ADO/MTS/COM+高级程序设计篇》
的主-明细表的例子中。第一个问题还可以通过手工编程方式得以实现子表的级
联删除。第二个问题呢?
后来我对开启在SQL SERVER2000中“对INSERT和UPDATE强制关系”以及其下的选
项的情况下,用李维的主-明细表通过TADOQUERY的SQL语句进行联接的方式,问题
不出现了(子表的SQL语句如下:SELECT * FROM INLIST WHERE ORDERNO=:ORDERNO
,并把子表的TADOQUERY的DATASOURCE设为主表对应的DATASOURCE)
另外还有一个问题,上面的两种方式下,我对INLIST表中的MATERIALNO与MATERIALS表
的MATERIALNO设置了外键,当我在INLIST的MATERIALNO中输入MATERIALS表中不存在
的数值时,系统不出错?为什么?
于是我就十分的郁闷.对于SQL SERVER及ACCESS(ACCESS的数据库同样出此问题)为
什么就不能用传统对MASTERSOURCE的设置以实现主-明细表的关系呢???
请各位大侠指教!!!!!