Foxtable(狐表)用户栏目专家坐堂 → [求助]如何判定窗口中的SQL table表的某一列存在重复值


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

主题:[求助]如何判定窗口中的SQL table表的某一列存在重复值

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]如何判定窗口中的SQL table表的某一列存在重复值  发帖心情 Post By:2018/1/29 23:23:00 [只看该作者]

例如窗口中的表有个 “单号“列,当此表通过 fill方法导入数据后,有个 “核查”按钮,此按钮中的代码可以审查单号列是否有重复值,如果发现重复,就弹出个提示框告知用户存在重复值,并且涉及重复单号的所在行背景色是 ”样式1”,样式1我会通过代码设定的。
谢谢老师!

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


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

1、drawcell事件

 

If e.table.findrow("单号 = '" & e.row("单号") & "' and _Identify <> " & e.row("_Identify")) >= 0 Then

    e.style = "样式1"

End If

 

2、按钮click事件

 

For Each r As Row In Tables("表A").rows
    If r.Table.findrow("单号 = '" & r("单号") & "' and _Identify <> " & r("_Identify")) >= 0
        msgbox("有重复值")
        Exit For
    End If
Next


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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2018/1/30 10:19:00 [只看该作者]

窗口中通过以下代码生成的表也有 _Identify 字段吗?如果有,如何让此字段显示出来呢?我本来是准备加个行号字段到导入后的窗口表,这样哪条记录出问题了就提示用户“某某行出现了XXX问题”,如果有 _Identify 字段我就不用增加行号字段了

将EXCEL表导入到窗口中的Table
If e.Sender.Text > "" Then
    e.Form.Controls("Table1").Table.fill("S elect * f rom [" & e.Sender.Text & "]", "test", True)
End If

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


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

如果是excel表格的数据,不会有_Identify字段的,你这样处理,动态加入一列

 

 

If e.Sender.Text > "" Then
    Dim t As Table = e.Form.Controls("Table1").Table
    t.fill("Select 0 as 序号,* from [" & e.Sender.Text & "]", "test", True)
    For Each r As Row In t.rows
        r("序号") = r.index + 1
    Next
End If

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2018/1/30 13:04:00 [只看该作者]

S elect 0  是什么意思,这个为 0 的字段是哪来的?我目前的做法全是用:
If DataTables(e.Form.Name & "_Table1").datacols.Contains("新字段") Then
Else
    DataTables(e.Form.Name & "_Table1").DataCols.Add("新字段", Gettype(Double))
End If

用这个方法有二个问题,一是增加的字段多了,代码要一堆,二是所增加的字段必是在表的最后面,然后再用Move把字段移到想要的位置,是很麻烦。
Tables(e.Form.Name & "_Table1").Cols("新字段").Move(13)


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


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

select 0 as 序号, '' as 第一列 这样也是相当于新增一列。

 

 

你用什么方法都可以,能达到目的即可。


 回到顶部