以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  批量录入  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=163808)

--  作者:实话实说
--  发布时间:2021/4/25 17:42:00
--  批量录入
下面代码是批量录入发货明细,通过下拉订单单号录入订单数据。为了与注表对应,有必要加个判断,即订单单号的后面数字等于发货单号的后面数字时(比如XS190308=FA190308)才允许批量录入。如何加这个判断?

Dim drs As List(Of DataRow) = DataTables("销售订单明细").Select ("订单单号 = " & "\'" & e.form.controls("combobox1").text & "\'" )
If Tables("销售发货.销售发货明细").AllowEdit = True Then

For Each dr As DataRow In drs
    Dim ndr As Row = Tables("销售发货.销售发货明细").addnew
    ndr("订单单号")= dr("订单单号")
    ndr("产品代码")= dr("产品代码")
    ndr("客户代码")= dr("客户代码")
    ndr("颜色")= dr("颜色")
    ndr("单位")= dr("单位")
    ndr("单价")= dr("单价")
    ndr("订单数量")= dr("订单数量")
    ndr("发货数量")= dr("订单数量")
    \'ndr("包装")= dr("包装")
    ndr("备注")= dr("备注")
Next

Else
    e.Cancel = True \'取消动作
End If

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/4/25 20:09:00
--  
Dim drs As List(Of DataRow) = DataTables("销售订单明细").Select ("substring(订单单号,3,7) = \'" & e.form.controls("combobox1").text.substring(2) & "\'" )
--  作者:实话实说
--  发布时间:2021/4/26 7:50:00
--  
不是上面的意思,大概是下面红色代码的意思,但代码错误。

Dim drs As List(Of DataRow) = DataTables("销售订单明细").Select("订单单号 = " & "\'" & e.form.controls("combobox1").text & "\'" )
If Tables("销售发货.销售发货明细").AllowEdit = True Then

For Each dr As DataRow In drs
    If e.DataRow("substring(订单单号,3,7") <> e.DataRow("substring(发货单号,3,7") 
        MessageBox.Show("订单单号不对!", "提示")
        Return
    Else
    Dim ndr As Row = Tables("销售发货.销售发货明细").addnew
    ndr("订单单号")= dr("订单单号")
    ndr("产品代码")= dr("产品代码")
    ndr("客户代码")= dr("客户代码")
    ndr("颜色")= dr("颜色")
    ndr("单位")= dr("单位")
    ndr("单价")= dr("单价")
    ndr("订单数量")= dr("订单数量")
    ndr("发货数量")= dr("订单数量")
    \'ndr("包装")= dr("包装")
    ndr("备注")= dr("备注")
    End If
Next

Else
    e.Cancel = True \'取消动作
End If

--  作者:有点蓝
--  发布时间:2021/4/26 9:21:00
--  
If tables("xx表").current("订单单号").substring(2) <> tables("xx表").current("发货单号").substring(2)
--  作者:实话实说
--  发布时间:2021/6/22 14:17:00
--  
以下时满足1楼要求的代码。现在还有个需求,就是不能重复录入,即发货单号、产品代码、颜色不能同时重复。貌似代码2
代码1
Dim drs As List(Of DataRow) = DataTables("销售订单明细").Select("订单单号 = " & "\'" & e.form.controls("combobox1").text & "\'" )
If Tables("销售发货.销售发货明细").AllowEdit = True Then

For Each dr As DataRow In drs
    If Tables("销售发货.销售发货明细").current("订单单号").substring(2) <> Tables("销售发货.销售发货明细").current("发货单号").substring(2)
        Tables("销售发货.销售发货明细").Current.Delete
        MessageBox.Show("订单单号不对!", "提示")
        Return
    Else
        Dim ndr As Row = Tables("销售发货.销售发货明细").addnew 
        ndr("订单单号")= dr("订单单号")
        ndr("产品代码")= dr("产品代码")
        ndr("客户代码")= dr("客户代码")
        ndr("颜色")= dr("颜色")
        ndr("单位")= dr("单位")
        ndr("单价")= dr("单价")
        ndr("订单数量")= dr("订单数量")
        ndr("发货数量")= dr("订单数量")
        ndr("备注")= dr("备注")
    End If
Next

Else
    e.Cancel = True \'取消动作
End If

代码2
\'控制多列不重复
Dim fh As String
Dim cp As String
Dim ys As String
Dim dr As DataRow = e.DataRow
    If Tables("销售发货.销售发货明细").Find("发货单号 = \'" & fh & "\' And 产品代码 = \'" & cp & "\'And 颜色 = \'" & ys & "\'") IsNot Nothing Then
        MessageBox.Show("不要重复录入!","提示")
        \'e.Cancel = True
        Return
    End If


--  作者:有点蓝
--  发布时间:2021/6/22 14:27:00
--  
……
For Each dr As DataRow In drs
If dataTables("销售发货明细").Find("发货单号 = \'" & dr("发货单号") & "\' And 产品代码 = \'" & dr("产品代码 ") & "\'And 颜色 = \'" & dr("颜色") & "\'") IsNot Nothing Then
        MessageBox.Show("不要重复录入!","提示")
        Return
    End If
    If Tables("销售发货.销售发货明细").current("订单单号").substring(2) <> Tables("销售发货.销售发货明细").current("发货单号").substring(2)
……

--  作者:实话实说
--  发布时间:2021/6/22 14:48:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/6/22 14:49:00
--  
提示很明显了,写了这么久代码了,还是只会抄,一点判断都没有么,自己改为合适的列名
--  作者:实话实说
--  发布时间:2021/6/22 15:13:00
--  
我再看看
[此贴子已经被作者于2021/6/22 15:14:21编辑过]

--  作者:实话实说
--  发布时间:2021/6/22 15:23:00
--  
销售订单明细中是没有发货单号,好像不是这个问题,将发货单号该为订单单号,又提示产品代码不属于销售订单明细表。代码附上

Dim drs As List(Of DataRow) = DataTables("销售订单明细").Select("订单单号 = " & "\'" & e.form.controls("combobox1").text & "\'" )
If Tables("销售发货.销售发货明细").AllowEdit = True Then

For Each dr As DataRow In drs
    \'If DataTables("销售发货明细").Find("发货单号 = \'" & dr("发货单号") & "\' And 产品代码 = \'" & dr("产品代码 ") & "\'And 颜色 = \'" & dr("颜色") & "\'") IsNot Nothing Then
    If DataTables("销售发货明细").Find("订单单号 = \'" & dr("订单单号") & "\' And 产品代码 = \'" & dr("产品代码 ") & "\'And 颜色 = \'" & dr("颜色") & "\'") IsNot Nothing Then
        MessageBox.Show("不要重复录入!","提示")
        Return
    End If

    If Tables("销售发货.销售发货明细").current("订单单号").substring(2) <> Tables("销售发货.销售发货明细").current("发货单号").substring(2)
        Tables("销售发货.销售发货明细").Current.Delete
        MessageBox.Show("订单单号不对!", "提示")
        Return
    Else
        Dim ndr As Row = Tables("销售发货.销售发货明细").addnew 
        ndr("订单单号")= dr("订单单号")
        ndr("产品代码")= dr("产品代码")
        ndr("客户代码")= dr("客户代码")
        ndr("颜色")= dr("颜色")
        ndr("单位")= dr("单位")
        ndr("单价")= dr("单价")
        ndr("订单数量")= dr("订单数量")
        ndr("发货数量")= dr("订单数量")
        ndr("备注")= dr("备注")
    End If
Next

Else
    e.Cancel = True \'取消动作
End If