以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]高速合并  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=19897)

--  作者:Goldarowana
--  发布时间:2012/5/24 11:25:00
--  [求助]高速合并

高速合并下 更新同主键记录 不好用 选了还是无条件合并的

帮忙解决下

谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报告记录_0524.zip

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:23-5-2012.xls


--  作者:狐狸爸爸
--  发布时间:2012/5/24 11:29:00
--  

Excel文件没有主键的,建议自己编码解决:

 

http://www.foxtable.com/help/topics/2334.htm

 


--  作者:Goldarowana
--  发布时间:2012/5/24 11:31:00
--  
thx
--  作者:luck-ants
--  发布时间:2012/5/24 13:22:00
--  
是在命令窗口执行吗?
--  作者:Goldarowana
--  发布时间:2012/5/24 15:37:00
--  

合并时更新原有的数据的代码要怎么写呢?

谢谢!


--  作者:狐狸爸爸
--  发布时间:2012/5/24 17:14:00
--  

先查找原来是否有这行,有的话,就更新,没有的话,就增加一行。

 

查找行:

http://www.foxtable.com/help/topics/0396.htm

 


--  作者:Goldarowana
--  发布时间:2012/5/24 19:12:00
--  

If e.DataCol.name = "发票编号" AndAlso e.DataRow("发票编号") IsNot Nothing Then
      Dim dr As DataRow = DataTables("系统发票").find("发票编号 = " & "\'" & e.DataRow("发票编号") & "\'")
    If dr IsNot Nothing Then
        dr.Delete
    End If
End If

不会写更新的代码 把原来的删除了啊


--  作者:狐狸爸爸
--  发布时间:2012/5/25 9:36:00
--  

例如:

 

Dim Book As New XLS.Book("c:\\test\\要合并的文件.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
Dim nms() As String = {"订单编号","产品","客户","雇员","单价","折扣","数量","日期"}
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim dr As DataRow = DataTables("订单").Find("订单编号 = \'" & sheet(n,0).Value & "\'")
    If dr Is  Nothing Then
        dr = DataTables("订单").AddNew()
    End If
    For m As Integer = 0 To nms.Length - 1
        dr(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables("订单").ResumeRedraw()


--  作者:Goldarowana
--  发布时间:2012/5/25 11:24:00
--  

谢谢!