以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 版主,您好,请教函数,谢谢! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189152) |
||||||||
-- 作者:divil -- 发布时间:2023/11/14 12:32:00 -- 版主,您好,请教函数,谢谢! 版主,您好! 目的:选取《衰减器和滤波器订单明细表》后粘贴原始订单信息,《小客户衰减器数据上传表》实现“客户物料编号”、”物料“等信息自动输入。需要对《衰减器和滤波器订单明细表》中“客户物料编号”列做判断,“客户物料编号”列有信息则按照情况二程序实施,否则按照情况一实施。需要版主指导将情况一盒情况二合并成一个函数。谢谢! 情况一:选取《小客户衰减器数据上传表》先判断“客户物料编号”是否是空值,如果是的话,“客户物料编号”值就等于“物料”值,《小客户衰减器数据上传表》表事件(DataColChanged)程序如下: 程序一: If e.DataCol.Name = "采购订单凭证一行项目" Then Dim nms() As String = {"客户采购订单编号", "生产批次", "凭证日期", "物料", "销售订单", "行项目1"} 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("物料") End If End If 情况二:选取《小客户衰减器数据上传表》先判断“客户物料编号”是否是空值,如果不是的话,“客户物料编号”值取《衰减器和滤波器订单明细表》表中“客户物料编号”的值,《小客户衰减器数据上传表》表事件(DataColChanged)程序如下: 程序一: If e.DataCol.Name = "采购订单凭证一行项目" Then Dim nms() As String = {"客户物料编号","客户采购订单编号", "生产批次", "凭证日期", "物料", "销售订单", "行项目1"} 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/14 13:40:00 -- If e.DataCol.Name = "采购订单凭证一行项目" Then Dim nms() As String = {"客户采购订单编号", "生产批次", "凭证日期", "物料", "销售订单", "行项目1"} 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 if dr.isnull("客户物料编号")=false then e.DataRow("客户物料编号") = dr("客户物料编号") end if End If End If End If
|
||||||||
-- 作者:divil -- 发布时间:2023/11/14 14:32:00 -- 版主,刚才试了程序运行结果不对。 版主,您好! 目的:选取《衰减器和滤波器订单明细表》粘贴原始订单信息(《衰减器和滤波器订单明细表》表“客户物料编号”列有数据就参照情况二流程计算,如果《衰减器和滤波器订单明细表》表“客户物料编号”列无数据参照情况一流程计算,再选择《小客户衰减器数据上传表》实现“客户物料编号”、”物料“等信息自动输入。需要对《衰减器和滤波器订单明细表》中“客户物料编号”列做判断,需要版主指导将情况一和情况二合并成一个函数。谢谢! 情况一:选取《小客户衰减器数据上传表》先判断“客户物料编号”是否是空值,如果是的话,“客户物料编号”值就等于“物料”值,《小客户衰减器数据上传表》表事件(DataColChanged)程序如下: 程序一: If e.DataCol.Name = "采购订单凭证一行项目" Then Dim nms() As String = {"客户采购订单编号", "生产批次", "凭证日期", "物料", "销售订单", "行项目1"} 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("物料") End If End If 情况二:选取《小客户衰减器数据上传表》先判断“客户物料编号”是否是空值,如果不是的话,“客户物料编号”值取《衰减器和滤波器订单明细表》表中“客户物料编号”的值,《小客户衰减器数据上传表》表事件(DataColChanged)程序如下: 程序一: If e.DataCol.Name = "采购订单凭证一行项目" Then Dim nms() As String = {"客户物料编号","客户采购订单编号", "生产批次", "凭证日期", "物料", "销售订单", "行项目1"} 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/14 14:41:00 -- 什么地方测试不对? |
||||||||
-- 作者:divil -- 发布时间:2023/11/15 13:31:00 -- 此主题相关图片如下:图片三.png 此主题相关图片如下:图片二.png 版主,您好,我是把《衰减器和滤波器订单明细表》和《小客户衰减器数据上传表》案例发到网站上,我操作步骤讲解:1、从共享文件中将订单信息复制后粘贴到《衰减器和滤波器订单明细表》,订单信息如下:4100239250-10这个订单“物料”列30078075、“客户物料编号”列内容为空。我选取《小客户衰减器数据上传表》表,在“采购订单凭证一行项目”列中输入4100239250-10内容后, 《小客户衰减器数据上传表》表“物料”列和“客户物料编号”列自动录入30078075信息。 4100239250-10 列名称”客户物料编号“(标题:客户物料号ITEM):30078075,列名称”物料“(标题:SAP物料号)30078075 情况二:订单4100239252-10和4100240511-40这两个订单"物料“和”客户物料编号“列信息齐全, 我选取《小客户衰减器数据上传表》表,在“采购订单凭证一行项目”列中输入4100239252-10和4100240511-40内容后, 《小客户衰减器数据上传表》表“物料”列和“客户物料编号”列自动录入 4100239252-10 列名称”客户物料编号“(标题:客户物料号ITEM):45030025,列名称”物料“(标题:SAP物料号)1032000026 4100240511-40列名称”客户物料编号“(标题:客户物料号ITEM):45030024,列名称”物料“(标题:SAP物料号)1032000051 正确数据填写显示图片如下,现在是我将程序拷贝至《小客户衰减器数据上传表》的表事件的DATACOLchanged栏,无法实现下面的目的。 |
||||||||
-- 作者:divil -- 发布时间:2023/11/15 13:32:00 --
表格附上,版主。谢谢
|
||||||||
-- 作者:有点蓝 -- 发布时间:2023/11/15 13:39:00 -- 请上传实例测试 |
||||||||
-- 作者:divil -- 发布时间:2023/11/15 14:25:00 -- 版主,您好!请查收,谢谢! |
||||||||
-- 作者:divil -- 发布时间:2023/11/15 14:37:00 --
|
||||||||
-- 作者:有点蓝 -- 发布时间:2023/11/15 14:40:00 -- 没有数据库,打不开表格。请转换为内部表,或者把测试数据库发上来 |