以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  导入EXCEL表符合条件指定列的值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=131745)

--  作者:zhuxinhui
--  发布时间:2019/3/5 21:32:00
--  导入EXCEL表符合条件指定列的值

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

想导入EXCEL表付款情况列的值,但是要求单号、物料编码、数量、供应商四列值相同才导入。

想了很久,网上查过不见有相同案例


--  作者:有点蓝
--  发布时间:2019/3/5 21:53:00
--  
参考:http://www.foxtable.com/webhelp/scr/2334.htm
--  作者:有点蓝
--  发布时间:2019/3/5 21:59:00
--  
Dim Book As New XLS.Book("D:\\问题\\新建文件夹\\采购.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 gys As String = sheet(n,0).Text
    Dim dh As String = sheet(n,3).Text
    Dim bm As String = sheet(n,4).Text
    Dim sl As String = sheet(n,8).Text
    Dim dr As DataRow = DataTables("当月采购").Find("供应商 = \'" & gys & "\' and 单号=\'" & dh & "\' and 物料编码=\'" & bm & "\' and 数量=" & sl)
    If dr IsNot Nothing Then \'如果不存在同编号的订单
        For m As Integer = 0 To nms.Length - 1
            dr(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("当月采购").ResumeRedraw()

--  作者:zhuxinhui
--  发布时间:2019/3/6 20:37:00
--  

不知为什么,金额列填上数据后就卡住不行了


--  作者:zhuxinhui
--  发布时间:2019/3/6 20:42:00
--  

只能是字符才行,我试过把金额改成字符才可以,这个需怎样转换

 


--  作者:zhuxinhui
--  发布时间:2019/3/6 20:55:00
--  

修改了下,可以了,我再测试下先

 


--  作者:zhuxinhui
--  发布时间:2019/3/6 23:24:00
--  

Dim Book As New XLS.Book("D:\\问题\\新建文件夹\\采购.xls")

Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("当月采购").StopRedraw()
\'Dim nms() = {"供应商","单据类型","入库日期","单号","物料编码","货物名称","规格","单位","数量","单价","金额","付款情况"}
Dim a As Table = Tables("当月采购")    
For i As Integer = 0 To a.Rows.count-1

   For n As Integer = 1 To Sheet.Rows.Count -1
    
    Dim gys As String = sheet(n,0).Text
    Dim dh As String = sheet(n,3).Text
    Dim bm As String = sheet(n,4).Text
    Dim sl As String = sheet(n,8).Text
    \'Dim a As Table = Tables("当月采购")    
 \'For i As Integer = 0 To a.Rows.count-1

    Dim dr As DataRow = DataTables("当月采购").Find("供应商 = \'" & gys & "\' and 单号=\'" & dh & "\' and 物料编码=\'" & bm & "\' and 数量=\'" & sl & "\'")  
     If dr IsNot Nothing Then \'如果存在同编号的订单
   
        \'For m As Integer = 0 To nms.Length - 1
             \'dr(nms(11)) = Sheet(n,11).Text
        dr("付款情况") = Sheet(n,11).Text

    End If
 Next
Next
Tables("当月采购").ResumeRedraw()

这段代码不知道哪里出问题了,表里有几行相同的数据,只有第一行可以引用,其他就不能引用了,刚开始以为数据不同,后来把顺序调整后才知:电子表的数据只能引用一次,现在表里如果有多行相同数据,怎样才能引用符合电子表条件的值


--  作者:有点甜
--  发布时间:2019/3/7 9:04:00
--  

Dim dr As DataRow = DataTables("当月采购").Find("供应商 = \'" & gys & "\' and 单号=\'" & dh & "\' and 物料编码=\'" & bm & "\' and 数量=\'" & sl & "\'")  

 

改成

 

Dim dr As DataRow = nothing