Foxtable(狐表)用户栏目专家坐堂 → foxtable如何实现数据参照完整性?


  共有8256人关注过本帖树形打印复制链接

主题:foxtable如何实现数据参照完整性?

帅哥哟,离线,有人找我吗?
zpx_2012
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
foxtable如何实现数据参照完整性?  发帖心情 Post By:2013/3/9 11:20:00 [只看该作者]

如题,

 

如果用SQL数据库设置了表间的关系图,如果主键用了非_Identify的列,则表就不能一次增加多行了,委不方便,

 

如果在foxtable中建立了关联,当要删除主表的行时如果子表有引用到相关数据则不能删除,反之当在子表中增加主表中不存在的关联列时就提示不能增加,必须先在主表增加后才可以,这样的功能要如何才能实现?

 

我现在的作法是删除主表行时或者子表关联列改变时遍历关联,然后得到相应的主表及子表,再查找判断,请问还有没有其他更好的办法?谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/3/9 11:29:00 [只看该作者]

自己写代码!

 回到顶部
帅哥哟,离线,有人找我吗?
zpx_2012
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/9 11:45:00 [只看该作者]

谢谢程版,但代码怎么写,写在哪里?

 

我是在全局表事件DataColChanging中用了如下代码,但不起作用,请指导,谢谢!

 

'改变关联子表关联列时检查数据参照完整性.
For Each re As Relation In Relations
    If e.DataTable.Name = re.ChildTable.Name Then  '如果是关联子表
        If re.RelationPath = RelationPathEnum.None Then  '如果是无向关联
            If e.DataCol.name = Re.ChildColumn.Name Then  '如果是关联列
                '查找关联主表中是否有对应的值,没有则中止改变
                Dim cmd As New SQLCommand
                cmd.C
                cmd.CommandText = "select Count(*) from {"& re.ParentTable.Name &"} where '" & e.DataCol.name & "' = '" & e.DataRow(e.DataCol) & "'"
                If cmd.ExecuteScalar < 0 Then '如果主表中不存在此关联列值
                    MessageBox.Show("主键不存在!","提示")
                    e.Cancel = True
                End If
            End If
        End If
    End If
Next

 

 可以了,原来是返了个超级错误,If cmd.ExecuteScalar = 0 Then '写成<0 了,不知道还有没有更好的办法?


[此贴子已经被作者于2013-3-10 1:10:45编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
muhua
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/9 15:19:00 [只看该作者]

用户已被锁定

 回到顶部
帅哥哟,离线,有人找我吗?
zpx_2012
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/9 16:16:00 [只看该作者]

那是因为是在全局表事件中设置对每一个表都起作用?


 回到顶部