Foxtable(狐表)用户栏目专家坐堂 → 编号重复,清空当前行


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

主题:编号重复,清空当前行

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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
编号重复,清空当前行  发帖心情 Post By:2017/9/21 10:37:00 [显示全部帖子]

老师,我DataColChanging代码验证编号禁止重复,重复时,清空当前行,代码如下:这样的效果是直接删除行了,只清空不删除怎么改?

If e.DataCol.Name = "项目编码"  Then
    Dim dr  As  DataRow
    dr = e.DataTable.Find("项目编码 = '" & e.NewValue &  "'")
    If dr IsNot Nothing Then
        MessageBox.Show("此项目编码已经存在,请复核项目名称!")
        Dim r As Row = Tables("合同签订").Current
        r.Reject()
    End  If
End  If

 

项目编码是直接通过输入其他列引用过来的。

[此贴子已经被作者于2017/9/21 10:39:03编辑过]

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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2017/9/21 10:52:00 [显示全部帖子]

老师,这样不对,把我原来有的一样的项目编号的行的内容清空了,把新增加的行的编号留下了。
[此贴子已经被作者于2017/9/21 10:55:30编辑过]

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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2017/9/21 11:14:00 [显示全部帖子]

以下是引用有点甜在2017/9/21 10:57:00的发言:
If e.DataCol.Name = "项目编码"  Then
    Dim dr  As  DataRow
    dr = e.DataTable.Find("项目编码 = '" & e.NewValue &  "'")
    If dr IsNot Nothing Then
        e.cancel = True
        For Each dc As DataCol In e.DataTable.datacols
            If dc.Expression = "" Then
                e.DataRow(dc.name)=Nothing
            End If
        Next
    End  If
End  If

有点甜老师,现在出来是这样,是不是我没表述清楚,我是通过窗口录入,选择项目名称,自动引用的另外一个表的前四列:

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170921111254.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/9/21 11:18:51编辑过]

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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2017/9/21 13:07:00 [显示全部帖子]

以下是引用有点甜在2017/9/21 12:48:00的发言:
回复5楼,贴出你窗口录入后引用的代码。

DataColChanged代码如下

If e.DataCol.Name = "项目名称" Then  '如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then  '如果新值是空白,也就是品名列的内容为空
        e.DataRow("项目编码") = Nothing '那么清空此行单价列的内容
        e.DataRow("所属机构") = Nothing '那么清空此行单价列的内容
        e.DataRow("项目类别") = Nothing '那么清空此行单价列的内容
        e.DataRow("招标方式") = Nothing '那么清空此行单价列的内容
    Else
        Dim dr  As  DataRow '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr = DataTables("中标统计").Find("[项目名称] = '" & e.NewValue &  "'")
        If dr IsNot  Nothing  Then  '如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("项目编码") = dr("项目编码")
            e.DataRow("所属机构") = dr("所属机构")
            e.DataRow("项目类别") = dr("项目类别")
            e.DataRow("招标方式") = dr("招标方式")
        End  If
    End If
End If


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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2017/9/21 13:38:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table

老师,示例已上传。

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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2017/9/21 16:41:00 [显示全部帖子]

MessageBox.Show("此项目编码已经存在,请复核项目名称!")这个代码放在那儿呢?但有重复时,会触发很多次。

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


加好友 发短信
等级:狐精 帖子:3205 积分:21311 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2017/9/21 16:45:00 [显示全部帖子]

找到了,忘记加Return

 回到顶部