以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 如何做到快速新旧物料表对比  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92262)

--  作者:2900819580
--  发布时间:2016/10/30 16:33:00
--  [求助] 如何做到快速新旧物料表对比
如下代码,求高手优化


Dim Cn() As String = {"代码","全名","规格型号","名称"}
Dim tb As Table = Tables("物料表")
Dim tbdb As Table = Tables("物料导入_Tab物料对比")
Dim tbdr As Table = Tables("物料导入_Tab物料导入")
Dim i As Integer
Dim ii As Integer
\'Dim ci As Integer
Dim vstr As String
Dim vi As Integer

Dim tbstr As String
Dim drstr As String


DataTables("物料对比").StopRedraw
For i = 0 To tbdr.Rows.Count - 1
    drstr = tbdr.Rows(i)("代码") 
    For ii = 0 To tb.Rows.Count -1
        tbstr = tb.Rows(ii)("代码")
        If tbstr = drstr Then
            vi = 0
            For ci As Integer = 0 To cn.Length -1
                If tbdr.Rows(i)(cn(ci)) <> tb.Rows(ii)(cn(ci)) Then
                    vi = vi +1
                    vstr = vstr & "|" & cn(ci)\'tbdr.Rows(i)(cn(ci))
                End If
            Next
            Exit For
        Else
            vi = 1001
            vstr = Nothing
        End If
    Next
    
    If vi > 0 Then
        Dim r As Row = tbdb.AddNew
        For ci As Integer = 0 To cn.Length -1
            r(cn(ci)) = tbdr.Rows(i)(cn(ci))
        Next
        If vi = 1001 Then
            r("异类") = "新增"
        Else
            r("异类") = "修改"
        End If
        r("原因") = vstr
    End If
    \'i = 0
Next
DataTables("物料对比").ResumeRedraw
tbdb.AutoSizeCols

MessageBox.Show("全部对比完成","完成",MessageBoxButtons.OK,MessageBoxicon.Information)

--  作者:y2287958
--  发布时间:2016/10/30 16:34:00
--  

代码优化肯定是要上例子的

同时要有数据和详细说明

否则无从下手

[此贴子已经被作者于2016/10/30 16:35:30编辑过]

--  作者:2900819580
--  发布时间:2016/10/30 17:27:00
--  
就是两个表,表的结构是一致的,
有上万条数据,怎么样可以快速对比,将它们不一样的数据找出来。
增加在临时表上。