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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

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


加好友 发短信
等级:小狐 帖子:346 积分:3911 威望:0 精华:0 注册:2013/1/7 17:39:00
  发帖心情 Post By:2017/9/21 10:46:00 [只看该作者]


If e.DataCol.Name = "项目编码"  Then
    Dim dr  As  DataRow
    dr = e.DataTable.Find("项目编码 = '" & e.NewValue &  "'")
    If dr IsNot Nothing Then
         for each dc as datacol in  e.DataTable.datacols

            dr(dc.name)=nothing

    next
    End  If
End  If



 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  3楼 | 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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  5楼 | 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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/21 12:48:00 [只看该作者]

回复5楼,贴出你窗口录入后引用的代码。

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  7楼 | 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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/21 13:19:00 [只看该作者]

4楼代码没问题,datacolchanging事件写4楼代码有什么问题?

 

做例子发上来测试。

[此贴子已经被作者于2017/9/21 13:19:36编辑过]

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


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

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

老师,示例已上传。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/21 15:34:00 [只看该作者]

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("表A").Find("[第五列] = '" & e.NewValue &  "'")
        If dr IsNot  Nothing  Then  '如果找到了同名的产品行,也就是dr不是Nothing
           
            Dim fdr  As  DataRow
            fdr = e.DataTable.Find("第一列 = '" & dr("第一列") &  "'")
            If fdr IsNot Nothing Then
                For Each dc As DataCol In e.DataTable.datacols
                    If dc.Expression = "" Then
                        e.DataRow(dc.name)=Nothing
                    End If
                Next
            Else
                e.DataRow("第一列") = dr("第一列")
                e.DataRow("第二列") = dr("第二列")
                e.DataRow("第三列") = dr("第三列")
                e.DataRow("第四列") = dr("第四列")
            End  If
        End  If
    End If
End If


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