以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 禁止增加相同记录到服务器表中  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=150458)

--  作者:leoli
--  发布时间:2020/5/30 12:55:00
--  [求助] 禁止增加相同记录到服务器表中
老师,

要在以下Foxtable 表list 增加记录保存时,如果表list 中的记录跟如下SQL 服务器表Data 所有列的内容相同时,就出现提示 “已经相同的记录存在了”

麻烦帮忙解答一下,十分感谢。


Foxtable 表list 结构如下:
FSupID FItemID  FUnitID  FStartQty FEndQty FCyID FDiscount FQuoteTime  FDisableDate
0 12 64 0 0 1 0 2019/3/27  2100/1/1
0 33 64 0 0 1 0 2019/3/27  2100/1/1
0 55 81 0 0 1 0 2019/3/27 2100/1/1
0 33 64 0 0 1 0 2019/12/9 2100/1/1




SQL 服务器表Data结构如下:

FItemID  FUnitID  FStartQty  FEndQty  FCyID
12 64 0 0 1
33 64 0 0 1
55 81 0 0 1
33 64 0 0 1


--  作者:有点蓝
--  发布时间:2020/5/30 14:15:00
--  
For Each dr1 As DataRow In DataTables("list").datarows
    Dim 
dr2 As DataRow = DataTables("
Data").find("FItemID=\'" & dr1("FItemID") & "\' and FUnitID=\'" & dr1("FUnitID") & "\' and .....自己补齐其它列......")
    if dr2 isnot nothing then msgbox("
已经相同的记录存在了")
Next

--  作者:leoli
--  发布时间:2020/5/30 14:50:00
--  
老师,谢谢,不过Data 不在Foxtable中,是在后台服务器上,是不是 牵涉到SQLCommand。

另外这个表Data资料很多,而List表不多,如何可以加快速度,请老师指导。谢谢。

--  作者:有点蓝
--  发布时间:2020/5/30 15:01:00
--  
如果2个表在同一个数据库里,直接使用SQL处理即可。

否则DataTables("Data").find改为使用SQLCommand就行了

--  作者:leoli
--  发布时间:2020/5/30 15:06:00
--  
老师 DataTables("Data").find 如何改, 有点不懂。谢谢。
--  作者:有点蓝
--  发布时间:2020/5/30 15:13:00
--  
参考:http://www.foxtable.com/webhelp/topics/0696.htm
--  作者:leoli
--  发布时间:2020/5/30 15:45:00
--  


老师,请指点,有点乱了,谢谢。

For Each dr1 As DataRow In DataTables("list").datarows
          Dim ld As Integer
        Dim cmd As New SQLCommand  
        cmd.C
        cmd.CommandText = "Se lect * From {t_SupplyEntry}"
          ld = cmd.ExecuteScalar()
      Dim dr2 As DataRow = DataTables("Data").find("FItemID=\'" & dr1("FItemID") & "\' and FUnitID=\'" & dr1("FUnitID") & "\' and .....自己补齐其它列......")
    if dr2 isnot nothing then msgbox("
已经相同的记录存在了")
Next


--  作者:有点蓝
--  发布时间:2020/5/30 16:10:00
--  
For Each dr1 As DataRow In DataTables("list").datarows
          Dim ld As Integer
        Dim cmd As New SQLCommand   
        cmd.ConnectionName = "数据源名称"
        cmd.CommandText = "Select count(*) From {t_SupplyEntry} where 
FItemID=\'" & dr1("FItemID") & "\' and FUnitID=\'" & dr1("FUnitID") & "\' and .....自己补齐其它列......"
          ld = cmd.ExecuteScalar()
    if ld > 0 then msgbox("已经相同的记录存在了")
Next