以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  无法禁止重复提取相同行数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157859)

--  作者:tld
--  发布时间:2020/10/30 23:08:00
--  无法禁止重复提取相同行数据
老师,下面的代码,从一个Excel表中提取数据到 一个 sqltable 表 tb 中。因为有 If d Is Nothing Then 语句,重复提取数据时候,应该不会执行  tb.addnew 。但是 确实执行addnew了。哪里有错呢?谢谢!

   For i As Integer = start To end
        Dim s1 As String = sheet(i,0).value
        Dim s2 As String = sheet(i,1).value
        s1 = s1.trim()
        s2 = s2.trim()
        Dim bh As String = s1 & "-" & s2  \'发票号码
        Dim d As DataRow = tb.DataTable.SQLFind("发票号码 = \'" & bh & "\'")

        If d Is Nothing Then  \'      如果没有录入过这个发票号码
            Dim current As Row = tb.AddNew
            current("发票号码") = bh
            current("开票日期") = sheet(i,6).value
            current("金额") = sheet(i,14).value  + sheet(i,16).value

            current.DataRow.Save
        End If
    Next

[此贴子已经被作者于2020/10/30 23:10:09编辑过]

--  作者:有点蓝
--  发布时间:2020/10/31 10:09:00
--  
        Dim bh As String = s1 & "-" & s2  \'fa piao号码
msgbox("fa piao号码 = \'" & bh & "\'")
        Dim d As DataRow = tb.DataTable.SQLFind("fa piao号码 = \'" & bh & "\'")

--  作者:tld
--  发布时间:2020/10/31 19:18:00
--  
老师,下面的代码就没有问题

Dim d As DataRow = DataTables(“原始发票”).SQLFind("fa piao号码 = \'" & bh & "\'")

(我在sqltable中,设置:selec t * from{原始发票} where [_identify] is null,,,,,在afterload中, Dim tb As Table = Tables(e.Form.name & "_table1"))
而代码:
Dim d As DataRow = tb.DataTable.SQLFind("fa piao号码 = \'" & bh & "\'")     就有问题。。这是为什么呢?


--  作者:ouyangfenghuan
--  发布时间:2020/11/1 6:49:00
--  
Dim bh As String = s1 & "-" & s2  \'fa piao号码
        Dim d As DataRow = tb.DataTable.SQLFind("fa piao号码 = \'" & bh & "\'")要用单引号,后面用的双引号
Dim d As DataRow = tb.DataTable.SQLFind("fa piao号码 = \'" & bh & \'")
        If d Is Nothing Then  \'      如果没有录入过这个fa piao号码

--  作者:有点蓝
--  发布时间:2020/11/1 20:36:00
--  
如果DataTables(“原始fa piao”).SQLFind可以,不应该有问题的,做个例子发过来看看。

如果是SqlServer自己跟踪一下数据库看tb.DataTable.SQLFind执行什么sql?