以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  版主,求教,关于程序优化,谢谢!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189113)

--  作者:divil
--  发布时间:2023/11/10 17:16:00
--  版主,求教,关于程序优化,谢谢!
版主,您好,通过自动组合以及提取原始数据源关键列信息后自动输入想要列内容的思路,结合以前知道的程序做了如下程序:
目的:《衰减器和滤波器订单明细表》表中将订单信息粘贴到表格中,通过程序一自动生成“客户售达方短文本”列内容,通过程序二客户售达方短文本”列信息自动调取《客户售达方和客户名称对应表》中的"客户名称"列内容,“客户名称”列生成信息后,通过程序三实现“凭证日期和客户名称”列信息自动生成;通过“凭证日期和客户名称”列信息自动调取《生产批次数据源》表中”生产批次“列内容,实际运行不能一步到位,粘贴原始订单信息后只出现”客户名称“内容实现自动输入、“客户售达方短文本”内容实现自动输入、”凭证日期和客户名称“内容只实现自动输入凭证日期信息部分信息,导致最终"生产批次“列信息不能自动输入。
目前我是将凭证日期列内容剪切后重新又单独粘贴到凭证日期列中,实现凭证日期和客户名称列内容完整,最终确保"生产批次“列信息自动输入。问题根结凭证日期和客户名称“内容只实现自动输入凭证日期列部分信息
程序一:
If e.DataCol.Name = "客户售达方" Then
    If e.DataRow("客户售达方") = Nothing Then
       e.DataRow("客户售达方短文本") = Nothing
    Else
       e.DataRow("客户售达方短文本") = e.DataRow("客户售达方") + e.DataRow("短文本")
    End If
End If
程序二:
If e.DataCol.Name = "客户售达方短文本" Then
    Dim nms() As String = {"客户名称"}
    If e.NewValue Is Nothing Then
        For Each nm As String In nms
            e.DataRow(nm) = Nothing
        Next
    Else
        Dim dr As DataRow
        dr = DataTables("客户售达方和客户名称对应表").Find("[客户售达方短文本] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then
            For Each nm As String In nms
                e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If
程序三:
If e.DataCol.Name = "凭证日期" Then
    If e.DataRow.IsNull("凭证日期") Then
        e.DataRow("凭证日期和客户名称") = Nothing
    Else
        e.DataRow("凭证日期和客户名称") = e.DataRow("凭证日期") + e.DataRow("客户名称")
    End If
End If
程序四:
If e.DataCol.Name = "凭证日期和客户名称" Then
    Dim nms() As String = {"生产批次"}
    If e.NewValue Is Nothing Then
        For Each nm As String In nms
            e.DataRow(nm) = Nothing
        Next
    Else
        Dim dr As DataRow
        dr = DataTables("生产批次数据源").Find("[凭证日期和客户名称] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then
            For Each nm As String In nms
                e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2023/11/10 17:32:00
--  
程序一:
If e.DataCol.Name = "客户售达方" orelse e.DataCol.Name = "短文本"  Then
    If e.DataRow.isnull("客户售达方")  orelse e.DataRow.isnull("短文本")   Then
       e.DataRow("客户售达方短文本") = Nothing
    Else
       e.DataRow("客户售达方短文本") = e.DataRow("客户售达方") + e.DataRow("短文本")
    End If
End If

程序三按照上面程序一的方式改进

--  作者:divil
--  发布时间:2023/11/10 17:46:00
--  
版主,谢谢您,已经修改过来,可以一次粘贴后生产批次列内容自动输入内容了,再次感谢。