Foxtable(狐表)用户栏目专家坐堂 → [求助]改下代码(重复值排除)


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

主题:[求助]改下代码(重复值排除)

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
[求助]改下代码(重复值排除)  发帖心情 Post By:2019/6/20 11:35:00 [只看该作者]

systemready = False
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables(eform.name & "_Table1")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = t.DataTable.Find("统计年月 = '" & sheet(n, 0).text & "' and 姓名 = '" & sheet(n, 1).text &"'")
        If r Is Nothing Then r = t.DataTable.AddNew()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If cname > "" AndAlso t.Cols.Contains(cname) Then
                r(cname) = sheet(n, i).Text
                r("确认状态") = "待确认"
                r.save
            End If
        Next
    Next
    t.ResumeRedraw()
End If
systemready = True
以上代码能正常导入数据,但是我想用统计年月和姓名来判断sql数据库中是否有相同的数据,如果有则替换原来的,没有则新增进去。先谢了

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2019/6/20 11:50:00 [只看该作者]

或者是先导入进来保存后,再增加一个按钮,功能为 后台寻找统计年月和姓名重复的行,如果状态列内容为已确认,那么删除待确认的行,如果都为待审核状态,那么删除创建日期列时间早的

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


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

弹出这个值看一下

 

msgbox("统计年月 = '" & sheet(n, 0).text & "' and 姓名 = '" & sheet(n, 1).text &"'")

 

 


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


加好友 发短信 F6
等级:狐精 帖子:3030 积分:19188 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2019/6/20 13:14:00 [只看该作者]

加一个相同结构的辅助表,加一列判断列,在该表的DataColChanged事件写入查找代码,找到的在判断列做个标记,每次导入后,辅助表中带有标记的,更新到原表中。
[此贴子已经被作者于2019/6/20 13:14:49编辑过]

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2019/6/20 14:50:00 [只看该作者]

请问怎么实现导入的数据,确认状态为已确认的就不作替换,是待确认状态就替换呢


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


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

以下是引用188802386在2019/6/20 14:50:00的发言:
请问怎么实现导入的数据,确认状态为已确认的就不作替换,是待确认状态就替换呢

 

弹出这个值看一下

 

msgbox("统计年月 = '" & sheet(n, 0).text & "' and 姓名 = '" & sheet(n, 1).text &"'")

 

不会做,请上传具体实例测试


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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2019/6/20 15:02:00 [只看该作者]

这个测试出来了,就是对比了这两列后,如果状态是已确认状态就不作修改,否则就替换原来的数据


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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2019/6/20 15:14:00 [只看该作者]

systemready = False
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables(eform.name & "_Table1")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = t.DataTable.Find("统计年月 = '" & sheet(n, 0).text & "' and 姓名 = '" & sheet(n, 4).text &"'")
        'msgbox("统计年月 = '" & sheet(n, 0).text & "' and 姓名 = '" & sheet(n, 1).text &"'")
        If r Is Nothing Then r = t.DataTable.AddNew()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If cname > "" AndAlso t.Cols.Contains(cname) Then
                If r("确认状态") = "已确认"  Then
                Else
                    r(cname) = sheet(n, i).Text
                    r("确认状态") = "待确认"
                    r.save
                End If
            End If
        Next
    Next
    t.ResumeRedraw()
End If
systemready = True
做出来了

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


加好友 发短信
等级:三尾狐 帖子:629 积分:4915 威望:0 精华:0 注册:2014/2/25 15:50:00
  发帖心情 Post By:2019/6/20 15:52:00 [只看该作者]

刚刚发现了个大问题,就是只对比加载出来了的数据,请问如何对比sql数据库里面的数据呢


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


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

以下是引用188802386在2019/6/20 15:52:00的发言:
刚刚发现了个大问题,就是只对比加载出来了的数据,请问如何对比sql数据库里面的数据呢

 

方法一:你可以用sqlFind查找对比(但这种效率很低,执行一行0.5秒左右)

 

方法二:把数据都加载出来再导入测试


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