以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]导入更新的问题。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185779)

--  作者:myzy
--  发布时间:2023/3/16 16:40:00
--  [求助]导入更新的问题。
老师:我这段代码可以根据订单号判定新增,但不能把excel的数据更新到窗口表里。麻烦看看是那没有对呢?
 Dim dlg As New OpenFileDialog
        dlg.Filter = "Excel文件|*.xls;*.xlsx"
        If dlg.ShowDialog =DialogResult.OK Then
            Dim t As Table = Tables("cwbc_Table1")
            t.StopRedraw()
            Dim Book As New XLS.Book(dlg.FileName)
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Dim newcount As Integer = 0
            Dim oldcount As Integer = 0
            For n As Integer = 1 To Sheet.Rows.Count -1
                Dim r As DataRow = t.DataTable.SQLFind("订单号 = \'" & sheet(n, 0).text & "\'")
                If r Is Nothing Then
                    r = t.DataTable.AddNew()
                    newcount += 1
                Else
                    oldcount += 1
                End If
                For i As Integer = 0 To sheet.Cols.Count -1
                    Dim cname As String = sheet(0, i).text
                    If t.Cols.Contains(cname) Then
                        r(cname) = sheet(n, i).Text
                        
                        
                    End If
                Next
            Next
            msgbox("新增" & newcount & "    " & "更新旧数据" & oldcount)
            t.ResumeRedraw()
        End If


--  作者:有点蓝
--  发布时间:2023/3/16 16:44:00
--  
代码看不出什么问题。是不是窗口表做了筛选?看看主表有没有数据
--  作者:myzy
--  发布时间:2023/3/16 17:01:00
--  
是用的窗口sql表,那怎么导入后表刷新呢?


--  作者:有点蓝
--  发布时间:2023/3/16 17:08:00
--  
导入后保存一下,看看数据库有没有数据

……
            msgbox("新增" & newcount & "    " & "更新旧数据" & oldcount)
t.save
            t.ResumeRedraw()
        End If

--  作者:myzy
--  发布时间:2023/3/16 17:32:00
--  
数据库里有更新的数据,就是窗口要怎么更新完后刷新呢?


--  作者:myzy
--  发布时间:2023/3/16 17:36:00
--  
  Dim r As DataRow = t.DataTable.SQLFind("订单号 = \'" & sheet(n, 0).text & "\'")
如果用Find("订单号 = \'" & sheet(n, 0).text & "\'"),就可以即时更新。

--  作者:有点蓝
--  发布时间:2023/3/16 17:39:00
--  
如果数据没有完全加载就每更新一行就保存一下

……
                For i As Integer = 0 To sheet.Cols.Count -1
                    Dim cname As String = sheet(0, i).text
                    If t.Cols.Contains(cname) Then
                        r(cname) = sheet(n, i).Text
                        
                        
                    End If
                Next
r.save
            Next
            msgbox("新增" & newcount & "    " & "更新旧数据" & oldcount)
            t.ResumeRedraw()
        End If

--  作者:myzy
--  发布时间:2023/3/16 17:46:00
--  
耐心的指导,小白的我非常感谢!狐表有您更精彩。