Foxtable(狐表)用户栏目专家坐堂 → 如何不导入重复的值?


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

主题:如何不导入重复的值?

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


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
如何不导入重复的值?  发帖心情 Post By:2020/6/5 19:56:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200605195204.png
图片点击可在新窗口打开查看
在导入按钮中,我写了如下代码,可以导入数据,但存在一个问题,就是可以重复导入数据,我想在导入前能做一个提醒,如果  “绩效明细”  表里和准备导入的  “设置”  表的数据(以姓名为例)有重复,就提示有重复数据,禁止导入,如果没有重复数据,就执行我写的导入代码。


Tables("绩效明细").StopRedraw

For Each r As Row In Tables("设置").GetCheckedRows
Dim r1 As Row = Tables("绩效明细").AddNew
r1("姓名") = r("姓名")
Next
Tables("绩效明细").ResumeRedraw
If MessageBox.Show("你已导入人员信息,请开始计算绩效工资","提示",MessageBoxButtons.OK,MessageBoxIcon.None) = DialogResult.OK Then

DataTables("绩效明细").DataCols("姓名").RaiseDataColChanged()
DataTables("绩效明细").DataCols("姓名").RaiseDataColChanged()
Forms("导入窗口").Close
End If


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


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/6/6 8:50:00 [只看该作者]

蓝版,指点下。

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/6 8:53:00 [只看该作者]

Tables("绩效明细").StopRedraw
Dim str As String = ""
For Each r As Row In Tables("设置").GetCheckedRows
    str = str & ",'" & r("姓名") & "'"
Next
str = str.Trim(",")
If DataTables("绩效明细").Find("姓名 in (" & str & ")") IsNot Nothing Then
    MessageBox.Show("有重复")
    Return
End If

For Each r As Row In Tables("设置").GetCheckedRows
    Dim r1 As Row = Tables("绩效明细").AddNew
    r1("姓名") = r("姓名")
Next
Tables("绩效明细").ResumeRedraw
If MessageBox.Show("你已导入人员信息,请开始计算绩效工资","提示",MessageBoxButtons.OK,MessageBoxIcon.None) = DialogResult.OK Then
    
    DataTables("绩效明细").DataCols("姓名").RaiseDataColChanged()
    DataTables("绩效明细").DataCols("姓名").RaiseDataColChanged()
    Forms("导入窗口").Close
End If

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


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/6/6 8:58:00 [只看该作者]

语法错误: IN 关键字后面必须是由逗号分隔的非空表达式列表,并且必须用括号括起来。

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


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/6/6 9:24:00 [只看该作者]

假如我一列行也没有选中的话,按导入数据按钮,就会提示  语法错误: IN 关键字后面必须是由逗号分隔的非空表达式列表,并且必须用括号括起来。
如果选中数据了,不提示错误。

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


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/6/6 10:16:00 [只看该作者]

蓝版,再帮我看下。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/6 10:31:00 [只看该作者]

既然知道问题在哪,那就加一个判断呀,判断有没有选中

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


加好友 发短信
等级:一尾狐 帖子:475 积分:4058 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2020/6/6 12:12:00 [只看该作者]

这样行吗?蓝怎么

Tables("绩效明细").StopRedraw

If Tables("设置").GetCheckedRows.count = 0 Then
    MessageBox.Show("请选中要导入的行,再导入数据","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
Else
    Dim str As String = ""
    For Each r As Row In Tables("设置").GetCheckedRows
        str = str & ",'" & r("姓名") & "'"
    Next
    str = str.Trim(",")
    If DataTables("绩效明细").Find("姓名 in (" & str & ")") IsNot Nothing Then
        MessageBox.Show("导入数据重复,请核对!","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        Return
    End If
End If

For Each r As Row In Tables("设置").GetCheckedRows
    Dim r1 As Row = Tables("绩效明细").AddNew
    r1("姓名") = r("姓名")
Next
Tables("绩效明细").ResumeRedraw
If MessageBox.Show("你已导入人员信息,请开始计算绩效工资","提示",MessageBoxButtons.OK,MessageBoxIcon.None) = DialogResult.OK Then
    
    DataTables("绩效明细").DataCols("姓名").RaiseDataColChanged()
    DataTables("绩效明细").DataCols("姓名").RaiseDataColChanged()
    Forms("导入窗口").Close
End If


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/6 14:15:00 [只看该作者]

这样取一次集合即可

dim rs as List(of row) = Tables("设置").GetCheckedRows

If rs.count = 0 Then
    MessageBox.Show("请选中要导入的行,再导入数据","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
    Return
Else
    Dim str As String = ""
    For Each r As Row In rs
        str = str & ",'" & r("姓名") & "'"
    Next
    str = str.Trim(",")
    If DataTables("绩效明细").Find("姓名 in (" & str & ")") IsNot Nothing Then
        MessageBox.Show("导入数据重复,请核对!","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        Return
    End If
End If

 回到顶部