Foxtable(狐表)用户栏目专家坐堂 → 如何实现允许符合条件数据修改,不允许删除


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

主题:如何实现允许符合条件数据修改,不允许删除

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
如何实现允许符合条件数据修改,不允许删除  发帖心情 Post By:2020/4/18 10:33:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:象棋排赛11141.foxdb

密码:888888
  当比赛积分表已引用基本信息表数据,允许基本信息表修改数据,比赛积分表同步自动更新,但不允许基本信息表删除它,DataColChanged事件中的代码实现了允许修改,
Select Case e.DataCol.Name
    Case "棋赛名称","姓名"
        Dim Filter As String 
If e.DataCol.Name = "姓名" Then
Filter = "[棋赛名称] = '" & e.DataRow("棋赛名称") & "'And 姓名 = '" & e.OldValue & "'"
Else
Filter = "[棋赛名称] = '" & e.OldValue & "'And 姓名 = '" & e.DataRow("姓名") & "'"
End If
        e.DataRow.Save
        Dim drs As List(Of DataRow) = DataTables("比赛积分").Select(Filter)
        For Each dr As DataRow In drs
            dr(e.DataCol.Name) = e.NewValue
        Next
End Select
Select Case e.DataCol.Name
    Case "棋赛名称","编号"
        Dim Filter As String 
If e.DataCol.Name = "姓名" Then
Filter = "[棋赛名称] = '" & e.DataRow("棋赛名称") & "'And 编号 = '" & e.OldValue & "'"
Else
Filter = "[棋赛名称] = '" & e.OldValue & "'And 姓名 = '" & e.DataRow("编号") & "'"
End If
        e.DataRow.Save
        Dim drs As List(Of DataRow) = DataTables("比赛积分").Select(Filter)
        For Each dr As DataRow In drs
            dr(e.DataCol.Name) = e.NewValue
        Next
End Select

DataColChanging事件里却写入
Dim s As String = "不允许基本信息表删除已引用到比赛积分表的数据"
Select Case e.DataCol.name
    Case "棋赛名称","姓名"
        Dim dt As DataRow
        Dim dt2 As DataRow
        dt = DataTables("比赛积分").SQLfind("棋赛名称 = '" & e.DataRow("棋赛名称") & "' And 姓名 = '" & e.DataRow("姓名") & "'")
        dt2 = DataTables("对阵表").SQLfind("红方_姓名 = '" & e.DataRow("姓名") & "'" OrElse "黑方_姓名 = '" & e.DataRow("姓名") & "'")
        If dt IsNot Nothing OrElse dt2 IsNot Nothing Then
            MessageBox.Show(s,"提示")
            e.Cancel= True
        End If
        
        e.Cancel = True
    Case "棋赛名称","编号"
        Dim dt1 As DataRow
        Dim dt3 As DataRow
        dt1 = DataTables("比赛积分").SQLfind("棋赛名称 = '" & e.DataRow("棋赛名称") & "'编号 And  = '" & e.DataRow("编号") & "'")
        dt3 = DataTables("对阵表").SQLfind("红方_编号 = '" & e.DataRow("编号") & "'" OrElse "黑方_编号 = '" & e.DataRow("编号") & "'")
        If  dt1 IsNot Nothing OrElse dt3 IsNot Nothing Then
            MessageBox.Show(s,"提示")
            e.Cancel= True
        End If
End Select
不允许修改,很矛盾,请教如何实现这两项要求。
[此贴子已经被作者于2020/4/18 10:40:06编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/18 11:35:00 [显示全部帖子]

我的要求是不允删除基本信息表中与比赛积分表的棋赛名称、编号或姓名相同的行,不是单独的棋赛名称、编号、姓名,因为同一人会在不同时期参加不同棋赛,这样写变成都不允许删除了。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/18 15:47:00 [显示全部帖子]

不行,比赛积分表有符合条件的数据,基本信息表依然能删除数据和行,另比赛积分表姓名下拉选项没有同步添加新增选项。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/18 16:59:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

在基本信息表添加第13行
比赛积分表姓名下拉选项没有同步添加新增选项
比赛积分表有第4行的内容,基本信息表应不能删除与之同符的行,但现在依然能删除!

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/4/18 19:56:45编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/18 16:59:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:6.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/4/18 17:00:38编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/19 9:01:00 [显示全部帖子]

不行基本信息表里添加人,比赛积分表的姓名下拉选项中没有同步添加,基本信息表里删除人,比赛积分表已有引用数据,基本信息表应不能删除它的数据却能被删除,删除后比赛积分表没同步删除它的所有信息!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛11141.foxdb

密码:888888
[此贴子已经被作者于2020/4/19 19:35:16编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/19 23:21:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛11141.foxdb


密码:888888
我把基本信息表BeforeDeleteDataRow事件的代码改为:
Dim dt As DataRow = DataTables("比赛积分").SQLfind("棋赛名称 = '" & e.DataRow("棋赛名称") & "'And (姓名 = '" & e.DataRow("姓名") & "' or 编号 = '" & e.DataRow("编号") & "')")
Dim dt1 = DataTables("对阵表").SQLfind("棋赛名称 = '" & e.DataRow("棋赛名称") & "'And ((红方_姓名 = '" & e.DataRow("姓名") & "' or 黑方_姓名 = '" & e.DataRow("姓名") & "') Or (红方_编号 = '" & e.DataRow("编号") & "' or 黑方_编号 = '" & e.DataRow("编号") & "'))")
If dt IsNot Nothing OrElse dt1 IsNot Nothing Then
    MessageBox.Show("不允许基本信息表删除已引用数据","提示")
    e.Cancel = True
End If
另修改基本信息表里的编号,比赛积分表中的编号不同步更新,剪切基本信息表选定的数据,棋赛名称和姓名没被剪切,我要求要么执行删除行的代码,要么一起被剪除。

[此贴子已经被作者于2020/4/19 23:23:06编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/20 8:53:00 [显示全部帖子]

执行基本信息表BeforeDeleteDataRow事件的代码就是判断比赛积分表有没有相应数据,有数据就不能删除,但现在是有数据情况下,行是不能删除,但除棋赛名称、姓名外其他都能剪切,这些都应禁止的,我的要求是允许修改,不允许删除行、剪切行,修改、删除基本信息表数据,比赛积分表数据都要同步自动更新,你在我上传的项目中操作一下就知问题了。
[此贴子已经被作者于2020/4/20 8:53:13编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/20 9:37:00 [显示全部帖子]

不是除棋赛名称、姓名外啊,我要它们符合条件的都不能删除、剪切,我已在datacolchanging事件中写了代码,出现了除棋赛名称、姓名外其他数据都被剪切,同步比赛积分表上对应的棋赛名称、姓名也存在,但编号没了,这些都不对啊!

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/20 9:38:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛11141.foxdb

密码:888888
这是剪切后的局面!

 回到顶部
总数 19 1 2 下一页