以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何判定窗口中的SQL table表的某一列存在重复值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114141)

--  作者:huangfanzi
--  发布时间:2018/1/29 23:23:00
--  [求助]如何判定窗口中的SQL table表的某一列存在重复值
例如窗口中的表有个 “单号“列,当此表通过 fill方法导入数据后,有个 “核查”按钮,此按钮中的代码可以审查单号列是否有重复值,如果发现重复,就弹出个提示框告知用户存在重复值,并且涉及重复单号的所在行背景色是 ”样式1”,样式1我会通过代码设定的。
谢谢老师!

--  作者:有点甜
--  发布时间: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
--  发布时间: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

--  作者:有点甜
--  发布时间: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
--  发布时间: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)


--  作者:有点甜
--  发布时间:2018/1/30 14:48:00
--  

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

 

 

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