以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据复制到后台  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103636)

--  作者:实话实说
--  发布时间:2017/7/13 10:33:00
--  数据复制到后台

以下代码是销售明细表数复制到生产计划表,2个表是在已经加载的情况下复制的,如果生产计划表没有加载,直接复制到后台的生产计划表,代码如何?

\'勾选[排产]后复制数据到生产计划,取消勾选则删除
If e.DataCol.Name = "排产" Then
    If e.DataRow("排产") = True Then
        \'Dim tr As DataRow =DataTables("销售明细").find("订单编号 =\'" & e.DataRow("订单编号") & "\'") \'只能找到1条记录
        Dim trs As List(Of DataRow) = DataTables("销售订单明细").Select("订单编号 =\'" & e.DataRow("订单编号") & "\'")
        For Each tr As DataRow In trs
        If tr IsNot Nothing Then
            Dim nma() As String = {"订单编号","客户","产品分类","产品型号","产品规格","订单数量","交货日期","备注"} \'销售明细表数据来源列
            Dim nmb() As String = {"订单编号","客户","产品分类","产品型号","产品规格","订单数量","交货日期","生产要求"} \'生产计划表数据接收列
            Dim dr As DataRow = DataTables("生产计划").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = tr(nma(i))
            Next
        End If
        Next
    Else
        If e.DataRow("排产") = False Then
            DataTables("生产计划").DeleteFor("订单编号 = \'" & e.DataRow("订单编号")& "\'")
        End If
    End If
End If


--  作者:有点甜
--  发布时间:2017/7/13 10:37:00
--  

为什么不把表加载出来?你可以不加载数据,单纯加载表结构。

 

反过来 http://www.foxtable.com/webhelp/scr/2137.htm

 


--  作者:实话实说
--  发布时间:2017/7/13 11:03:00
--  

1、如果加载表则要一同加载与生产计划相关联的表,我不想这样。

2、用数据合并的方法,如何修改我上面的代码?


--  作者:有点甜
--  发布时间:2017/7/13 11:30:00
--  

AfterOpenProject事件执行下面代码得到临时表

 

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = "数据源名称"
cmd.CommandText = "SELECT * From {生产计划} where 1=2"
dt = cmd.ExecuteReader(True)

vars("生产计划") = dt


 

然后写

 

If e.DataCol.Name = "排产" Then
    If e.DataRow("排产") = True Then
        \'Dim tr As DataRow =DataTables("销售明细").find("订单编号 =\'" & e.DataRow("订单编号") & "\'") \'只能找到1条记录
        Dim trs As List(Of DataRow) = DataTables("销售订单明细").Select("订单编号 =\'" & e.DataRow("订单编号") & "\'")
        For Each tr As DataRow In trs
        If tr IsNot Nothing Then
            Dim nma() As String = {"订单编号","客户","产品分类","产品型号","产品规格","订单数量","交货日期","备注"} \'销售明细表数据来源列
            Dim nmb() As String = {"订单编号","客户","产品分类","产品型号","产品规格","订单数量","交货日期","生产要求"} \'生产计划表数据接收列
            Dim dr As DataRow = vars("生产计划").AddNew
            For i As Integer = 0 To nma.Length - 1
                dr(nmb(i)) = tr(nma(i))
            Next

            dr.save
        End If
        Next
    Else
        If e.DataRow("排产") = False Then
            vars("生产计划").sqlDeleteFor("订单编号 = \'" & e.DataRow("订单编号")& "\'")
        End If
    End If
End If

[此贴子已经被作者于2017/7/13 11:29:59编辑过]

--  作者:实话实说
--  发布时间:2017/7/18 14:46:00
--  

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = "数据源名称"
cmd.CommandText = "SELECT * From {生产计划} where 1=2"
dt = cmd.ExecuteReader(True)

vars("生产计划") = dt

 

1、以上代码能否写在窗口的AferLoad;2、如果生产计划表已经加载了有影响吗?


--  作者:有点甜
--  发布时间:2017/7/18 14:56:00
--  

1、代码你写到哪里都可以;

 

2、是否加载,都不影响。