以文本方式查看主题

-  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=157304)

--  作者:江南小镇
--  发布时间:2020/10/11 22:47:00
--  [求助]复制
老师,下面代码重置审核列为不停的复制,我想在重置审核列时如果收支表的单据编号列有相同的就不复制。

If e.DataCol.Name = "审核"
    If e.DataRow("审核") = True Then
        Dim nma() As String = {"_Identify","入库单编号明细" , "入库日期","客户ID","客户名称","商品ID","商品名称","项目分类","规格","入库_数量","入库_单价","入库_单位","入库_折扣合计" } \'A表数据来源列
        Dim nmb() As String = {"ID" ,"单据编号" , "日期","客户ID","客户","商品ID","项目名称","项目类别","规格","数量","单价","单位","支出" } \'B表数据接收列
        e.DataRow.save
        Dim dr2 As DataRow = DataTables("收支表").Find("单据编号 = \'" & e.DataRow("入库单编号明细") & "\'")             \'找到指定返回的行
        If dr2 Is Nothing Then
            Dim dr3 As DataRow = DataTables("收支表").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr3(nmb(i)) = e.DataRow(nma(i))
            Next
            dr3("来源") = "采购" \'入库表就改为"采购",其他表改为"其它"
        End If
    Else
        DataTables("收支表").deletefor("ID = \'" & e.DataRow("_Identify") & "\'")
    End If
End If


--  作者:有点蓝
--  发布时间:2020/10/11 23:19:00
--  
代码没有问题,如果数据没有加载,Find改为sqlFind
--  作者:江南小镇
--  发布时间:2020/10/12 6:11:00
--  
老师好,数据加载了,就是重置审核列会继续复制。(重置入库明细审核列收支表单据编号列有相同的就禁止复制
[此贴子已经被作者于2020/10/12 6:18:41编辑过]

--  作者:有点蓝
--  发布时间:2020/10/12 8:36:00
--  
说明没有对应编号的数据,或者数据有问题
--  作者:江南小镇
--  发布时间:2020/10/12 9:05:00
--  
老师,重置审核列他会重复复制相同行数据,重置审核列希望复制单据编号不相同的行数据。



If e.DataCol.Name = "审核"
    If e.DataRow("审核") = True Then
        Dim nma() As String = {"_Identify","入库单编号明细" , "入库日期","客户ID","客户名称","商品ID","商品名称","项目分类","规格","入库_数量","入库_单价","入库_单位","入库_折扣合计" } \'A表数据来源列
        Dim nmb() As String = {"ID" ,"单据编号" , "日期","客户ID","客户","商品ID","项目名称","项目类别","规格","数量","单价","单位","支出" } \'B表数据接收列
        e.DataRow.save
        Dim dr2 As DataRow = DataTables("收支表").Find("单据编号 = \'" & e.DataRow("入库单编号明细") & "\'")             \'找到指定返回的行
        If dr2 Is Nothing Then
            Dim dr3 As DataRow = DataTables("收支表").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr3(nmb(i)) = e.DataRow(nma(i))
            Next
            dr3("来源") = "采购" \'入库表就改为"采购",其他表改为"其它"
        End If
    Else
        DataTables("收支表").deletefor("ID = \'" & e.DataRow("_Identify") & "\'")
    End If
End If


--  作者:有点蓝
--  发布时间:2020/10/12 9:23:00
--  
请上传实例说明
--  作者:江南小镇
--  发布时间:2020/10/13 7:25:00
--  

老师好,我把下面事件MainTableChanged的代码屏蔽后重置审核列在支出表中就没有重复行了。有的表要通过重置列来更新数据我应该把代码摆到哪里。

\'DataTables("入库明细").DataCols("入库单编号明细").RaiseDataColChanged()
\'DataTables("入库明细").DataCols("客户名称").RaiseDataColChanged()
\'DataTables("入库明细").DataCols("商品ID").RaiseDataColChanged()

--  作者:有点蓝
--  发布时间:2020/10/13 8:44:00
--  
说明"入库明细"表格的datacolchanged事件代码之间互相有冲突。具体请上传实例说明
--  作者:江南小镇
--  发布时间:2020/10/15 4:51:00
--  
老师,我想把审核列(逻辑型)改成收支列(字符型)当收支列中出现支出字段就复制到支出表
                                                                      当收支列中出现收入字段就复制到收入表






If e.DataCol.Name = "审核"
    If e.DataRow("审核") = True Then




        Dim nma() As String = {"_Identify","入库单编号明细" , "入库日期","客户ID","客户名称","商品ID","商品名称","项目分类","规格","入库_数量","入库_单价","入库_单位","入库_折扣合计" } \'A表数据来源列
        Dim nmb() As String = {"ID" ,"单据编号" , "日期","客户ID","客户","商品ID","项目名称","项目类别","规格","数量","单价","单位","支出" } \'B表数据接收列
        e.DataRow.save
        Dim dr2 As DataRow = DataTables("收支表").Find("单据编号 = \'" & e.DataRow("入库单编号明细") & "\'")             \'找到指定返回的行
        If dr2 Is Nothing Then
            Dim dr3 As DataRow = DataTables("收支表").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr3(nmb(i)) = e.DataRow(nma(i))
            Next
            dr3("来源") = "采购" \'入库表就改为"采购",其他表改为"其它"
        End If
    Else
        DataTables("收支表").deletefor("ID = \'" & e.DataRow("_Identify") & "\'")
    End If
End If

--  作者:有点蓝
--  发布时间:2020/10/15 9:05:00
--  
If e.DataCol.Name = "审核"
    If e.DataRow("审核") = "支出" Then
        对支出表的操作
    ElseIf e.DataRow("审核") = "收入" Then
        对收入表的操作
    Else
        输入其它值的操作
    End If
End If