以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=48410)

--  作者:caiankie
--  发布时间:2014/3/28 12:36:00
--  求助

我现有一段代码,已能成功地将"面积计算表"导入到"订单明细表",我是以"单号"

做为不能重复导入的条件,现有个问题麻烦各路高手帮忙解决一下,问题是我原来的“订单明细表”中有了  单号为80  的这一行,如果我要导入的“面积计算表”中也有  单号为80  的这一行,要给我个提示,且不做导入,在改正后再执行以下代码,请帮忙,谢谢

Dim Book As New XLS.Book("e:\\面积计算表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单明细表").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"单号","客户订单号","工程名称","编号","数量","长度1","长度2","长度3","长度4","宽度1","宽度2","宽度3","宽度4"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim dh As String = sheet(n,0).Text
    If DataTables("订单明细表").Find("单号 = \'" & dh & "\'") Is Nothing Then \'如果不存在同编号的订单
        Dim r As Row = Tables("订单明细表").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("订单明细表").ResumeRedraw()


--  作者:狐狸爸爸
--  发布时间:2014/3/28 13:40:00
--  

你上面的已经不会重复导入了,要提示的话:

 

Dim Book As New XLS.Book("e:\\面积计算表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Dim s as string
Tables("订单明细表").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"单号","客户订单号","工程名称","编号","数量","长度1","长度2","长度3","长度4","宽度1","宽度2","宽度3","宽度4"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim dh As String = sheet(n,0).Text
    If DataTables("订单明细表").Find("单号 = \'" & dh & "\'") Is Nothing Then \'如果不存在同编号的订单
        Dim r As Row = Tables("订单明细表").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next

     Else

          s = s & " " & dh
    End If
Next

Tables("订单明细表").ResumeRedraw()

if s > "" then

    Messagebox.show("以下单号重复,没有导入:" & s)

end if


--  作者:caiankie
--  发布时间:2014/3/28 16:35:00
--  

如果要要把数据导入子表的话能不能实现?比如说导入到“订单管理主表.订单明细表”中


--  作者:狐狸爸爸
--  发布时间:2014/3/28 16:38:00
--  

当然可以:

 

Dim Book As New XLS.Book("e:\\面积计算表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Dim s as string
Tables("订单明细表").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"单号","客户订单号","工程名称","编号","数量","长度1","长度2","长度3","长度4","宽度1","宽度2","宽度3","宽度4"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim dh As String = sheet(n,0).Text
    If DataTables("订单明细表").Find("单号 = \'" & dh & "\'") Is Nothing Then \'如果不存在同编号的订单
        Dim r As Row = Tables("订单明细表").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next

        r("订单编号") = Tables("订单").Current("订单编号")

     Else

          s = s & " " & dh
    End If
Next

Tables("订单明细表").ResumeRedraw()

if s > "" then

    Messagebox.show("以下单号重复,没有导入:" & s)

end if


--  作者:caiankie
--  发布时间:2014/3/28 17:47:00
--  
导入到“订单管理主表.订单明细表”中,不成功请 狐狸爸爸 帮忙解决,谢谢
--  作者:狐狸爸爸
--  发布时间:2014/3/28 17:49:00
--  

Dim Book As New XLS.Book("e:\\面积计算表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Dim s as string
Tables("订单明细表").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"单号","客户订单号","工程名称","编号","数量","长度1","长度2","长度3","长度4","宽度1","宽度2","宽度3","宽度4"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim dh As String = sheet(n,0).Text
    If DataTables("订单明细表").Find("单号 = \'" & dh & "\'") Is Nothing Then \'如果不存在同编号的订单
        Dim r As DataRow = DataTables("订单明细表").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next

        r("订单编号") = Tables("订单").Current("订单编号")

     Else

          s = s & " " & dh
    End If
Next

Tables("订单明细表").ResumeRedraw()

if s > "" then

    Messagebox.show("以下单号重复,没有导入:" & s)

end if


--  作者:caiankie
--  发布时间:2014/3/28 22:13:00
--  
已成功,谢谢