以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多个表有同一订单,能不能实现,只修改一个然后根据订单编号,  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50845)

--  作者:JPG7
--  发布时间:2014/5/14 15:12:00
--  多个表有同一订单,能不能实现,只修改一个然后根据订单编号,
假设“生产订单”里有个订单“备注”和“规格”被修改,能不能用个button去实现,让其他表(各个车间)的数据根据订单编号同步数据?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试系统.table


--  作者:Bin
--  发布时间:2014/5/14 15:18:00
--  
我觉得,你应该设置关联, 用生产订单表作为主表, 那些表作为子表.

然后用表达式列,直接引用数据更加好.

--  作者:lsy
--  发布时间:2014/5/14 15:26:00
--  
Select e.DataCol.Name
    Case "规格","备注"
        If e.NewValue <> e.DataRow.OriginalValue(e.DataCol.Name) Then
            For Each dt As DataTable In DataTables
                If dt.Name.EndsWith("车间") Then
                    Dim dr As DataRow = dt.SQLFind("订单编号 = \'" & e.DataRow("订单编号") & "\' And 订单编号 Is Not Null")
                    If dr IsNot Nothing Then
                        dr("规格") = e.DataRow("规格")
                        dr("备注") = e.DataRow("备注")
                    End If
                End If
            Next
        End If
End Select

--  作者:JPG7
--  发布时间:2014/5/14 15:56:00
--  
以下是引用Bin在2014-5-14 15:18:00的发言:
我觉得,你应该设置关联, 用生产订单表作为主表, 那些表作为子表.

然后用表达式列,直接引用数据更加好.
我也想设置关联,但是每个工序之间要设置关联,前下料和裁剪要和生产订单关联,这样关联表太多
--  作者:JPG7
--  发布时间:2014/5/14 16:02:00
--  
以下是引用lsy在2014-5-14 15:26:00的发言:
Select e.DataCol.Name
    Case "规格","备注"
        If e.NewValue <> e.DataRow.OriginalValue(e.DataCol.Name) Then
            For Each dt As DataTable In DataTables
                If dt.Name.EndsWith("车间") Then
                    Dim dr As DataRow = dt.SQLFind("订单编号 = \'" & e.DataRow("订单编号") & "\' And 订单编号 Is Not Null")
                    If dr IsNot Nothing Then
                        dr("规格") = e.DataRow("规格")
                        dr("备注") = e.DataRow("备注")
                    End If
                End If
            Next
        End If
End Select

这段代码写在哪的?第一句对么?

[此贴子已经被作者于2014-5-14 16:02:52编辑过]

--  作者:有点甜
--  发布时间:2014/5/14 16:33:00
--  
以下是引用JPG7在2014-5-14 16:02:00的发言:

这段代码写在哪的?第一句对么?

[此贴子已经被作者于2014-5-14 16:02:52编辑过]

 

写在表的事件datacolchanged


--  作者:JPG7
--  发布时间:2014/5/14 17:28:00
--  

图片点击可在新窗口打开查看甜甜老师,给解答下

 

 

以下是引用JPG7在2014-5-14 15:15:00的发言:

If e.Row("编辑者") = User.Name Then \'如果编辑者是当前用户
    Return
End If
Dim cmd As New SQLCommand
Dim exp As String  = "编辑者 Is Null And [_Identify] = " & e.Row("_Identify")
cmd.CommandText = "Update {客户订单} Set 编辑者 = \'" & User.Name & "\' Where " & exp
If cmd.ExecuteNonQuery = 1 Then
    e.Row("编辑者") = User.Name
Else
    cmd.CommandText = "Select 编辑者 From {客户订单} Where [_Identify] = " & e.Row("_Identify")
    Dim nm As String = cmd.ExecuteScalar
    If nm > "" Then
        MessageBox.show(nm & "正在编辑此行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        MessageBox.show("此行可能已经被删除,无法编辑!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
    e.Cancel = True \'取消编辑
End If

 

 

 假如这段代码出现这个错误,如下图

 


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

--  作者:Bin
--  发布时间:2014/5/14 17:29:00
--  
如果用的是外部数据源,你没有指定数据源名称


--  作者:JPG7
--  发布时间:2014/5/14 17:36:00
--  回复:(有点甜)以下是引用JPG7在2014-5-14 16:02:00...

lsy 老师写的代码,貌似不管用啊


--  作者:有点甜
--  发布时间:2014/5/14 17:41:00
--  
以下是引用JPG7在2014-5-14 17:36:00的发言:

lsy 老师写的代码,貌似不管用啊

 

lsy老师用了  dt.SQLFind("订单编号 = \'" & e.DataRow("订单编号") & "\' And 订单编号 Is Not Null")

意思是直接修改后台的数据了,你前台不会有体现的,如要要体现出来,就重新加载行/表。

 

或者,你直接用find不用sqlfind