以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动输入的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=111133)

--  作者:edisontsui
--  发布时间:2017/12/15 17:17:00
--  自动输入的问题
Select Case e.DataCol.Name
    Case
"品名","型号","规格"

       
Dim Filter As String = "[产品编号] = \'" & e.DataRow("编号") & "\'"
       
Dim drs As List(Of DataRow) = DataTables("订单").Select(Filter)
        For
Each dr As DataRow In
drs
            dr(e.
DataCol.Name) = e.DataRow(e.DataCol.Name)
        Next
End
Select

以上是“订单”表里面自动输入“产品”表之数据的代码。如果我还有一个“出入库”表,也要在“产品”表的"品名""型号""规格"变化之后,能够在“出入库”表的“产品名称”、“产品型号”和“产品规格”里面自动跟着变化,应该怎么改写这段代号呢?谢谢。

--  作者:有点甜
--  发布时间:2017/12/15 17:22:00
--  
Select Case e.DataCol.Name
    Case "品名","型号","规格"
        Dim Filter As String = "[产品编号] = \'" & e.DataRow("编号") & "\'"
        Dim drs As List(Of DataRow) = DataTables("订单").Select(Filter)
        For Each dr As DataRow In drs
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        Next
        drs = DataTables("出入库").Select(Filter)
        For Each dr As DataRow In drs
            dr("产品名称") = e.DataRow("品名")
            dr("产品型号") = e.DataRow("型号")
            dr("产品规格") = e.DataRow("规格")
        Next
End Select

--  作者:edisontsui
--  发布时间:2017/12/16 15:10:00
--  
Select Case e.DataCol.Name 
    Case "物料名称"
        Dim Filter As String = "[物料编号] = \'" & e.DataRow("物料编号") & "\'"
        Dim drs As List(Of DataRow) = DataTables("装配产品").Select(Filter)
        For Each dr As DataRow In drs
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name) 
        Next
        drs = DataTables("装配清单").Select(Filter)        
            For Each dr As DataRow In drs
            dr("产品名称") = e.DataRow("物料名称")
        Next

End Select

我的代码是上面那段。其中“装配清单”和“装配产品”两个数据表均要随“物料字典”里面“物料名称”的改变而自动更新。

“装配产品”这个数据表的数据列有:物料编号、物料名称
“装配清单”这个数据表的数据列有:产品代号、产品名称
“物料字典”这个数据表的数据列有:物料编号、物料名称

但是上述代码运行时出现如下错误:

.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.3.18.1
错误所在事件:表,物料字典,DataColChanged
详细错误信息:
调用的目标发生了异常。
未找到列 [物料编号]。

--  作者:edisontsui
--  发布时间:2017/12/16 15:27:00
--  
我找到原因了,已经解决了。
--  作者:edisontsui
--  发布时间:2018/8/17 17:28:00
--  
我在按下enter键时,会增加一个空行,但是我们希望此新增加行的某列数据能够自动重复上一行的某列数据,该在哪里写入什么代码才能实现?比如,我按下enter键并一行增加时,其“订单编号”这列能够自动输入跟上一行一样的“订单编号”。谢谢。
--  作者:有点蓝
--  发布时间:2018/8/17 17:50:00
--  
datarowadded事件

Dim idx As Integer = Tables(e.DataTable.Name).FindRow(e.DataRow)
If idx > 0 Then
    e.DataRow("订单编号") = Tables(e.DataTable.Name).Rows(idx - 1)("订单编号")
End If

--  作者:edisontsui
--  发布时间:2018/8/18 11:38:00
--  
谢谢。
--  作者:edisontsui
--  发布时间:2018/8/18 13:26:00
--  
datarowadded事件

Dim idx As Integer = Tables(e.DataTable.Name).FindRow(e.DataRow)
If idx > 0 Then
    e.DataRow("订单编号") = Tables(e.DataTable.Name).Rows(idx - 1)("订单编号")
End If

如上代码里面,如果我想加多一个功能,即每增加一个空白行,就能够自动输入“行号”,凡是同一个订单编号,其行号依次从1、2、3、4...编下去,不允许重复。请教代码如何谢。谢谢。

--  作者:有点蓝
--  发布时间:2018/8/18 14:15:00
--  
Dim idx As Integer = Tables(e.DataTable.Name).FindRow(e.DataRow)
If idx > 0 Then
    e.DataRow("订单编号") = Tables(e.DataTable.Name).Rows(idx - 1)("订单编号")
e.DataRow("行号") = e.DataTable.compute("max(行号)","订单编号=\'" & e.DataRow("订单编号")  & "\'") + 1
End If

--  作者:edisontsui
--  发布时间:2018/8/18 15:59:00
--  
谢谢。