以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  联合主键在Foxtable中如何实现  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100821)

--  作者:yedaoan
--  发布时间:2017/5/19 9:15:00
--  联合主键在Foxtable中如何实现

联合主键在Foxtable中如何实现?如附件图,客户名称和业务员组合时,才是唯一,有另外一个表,要向这张表增加数据,已经存在的数据不增加,不存在的数据增加过来。

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/5/19 9:19:00
--  

 增加之前,先查询

 

Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each dr1 As DataRow In DataTables("表A").Select("")
    Dim dr2 As DataRow = DataTables("表B").Find("某列 = \'" & dr1("某列") & "\' and 某列 = \'" & dr1("某列") & "\'")
    If dr2 Is Nothing Then
        dr2 = DataTables("表B").AddNew()
        dr2("某列") = dr1("某列")
    End If
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next


--  作者:yedaoan
--  发布时间:2017/5/19 9:25:00
--  
用Find效率会不会太低?
--  作者:有点蓝
--  发布时间:2017/5/19 9:29:00
--  
在Foxtable中不考虑使用sql,2楼已经算是最优的用法了
--  作者:有点色
--  发布时间:2017/5/19 9:33:00
--  
以下是引用yedaoan在2017/5/19 9:25:00的发言:
用Find效率会不会太低?

 

你可以在sql里面设置联合主键,输入错误的话也会有提示的。