自动输入的实现

实现自动输入的基本原理是:

1、有一个基础数据表,输入所有的基础信息,例如订单管理系统中,产品表会输入所有的产品信息。
2、在另一个表输入某关键列的内容,然后自动从基础数据表提取其它列的内容输入到相关列中,例如在订单表输入产品编号,可以从产品表提取该产品的名称、型号、规格,自动输入到订单表的相关列中。

示例一

例如希望在订单表输入产品编号,能够从产品表提取该产品的名称、型号、规格,自动输入到订单表的相关列中。
为实现此目的,可在订单表的
DataColChanged事件中输入如下代码:

If e.DataCol.Name = "产品编号" Then '发生变化的是产品编号吗?
    '在产品表找出该产品
   
Dim dr As DataRow
    dr =
DataTables("产品").Find("编号 = '" & e.DataRow("产品编号") & "'" )
   
If dr IsNot Nothing '如果找到, 则设置各列内容
        e.
DataRow("品名")= dr("品名")
        e.
DataRow("型号")= dr("型号")
        e.
DataRow("规格")= dr("规格")
   
End If
End
If

如果希望在产品表修改了某产品的品名、型号或规格后,能自动更新订单表中的品名、型号、规格,可以在产品表的DataColChanged事件中加入代码:

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

或者:

Select Case e.DataCol.Name
    Case
"品名","型号","规格"

       
Dim Filter As String = "[产品编号] = '" & e.DataRow("编号") & "'"
       
Dim nm As String = e.DataCol.Name
        DataTables(
"订单").ReplaceFor(nm, e.DataRow(nm), Filter)
End
Select

示例二

假定项目中有一个名为“行政区域”的基础数据表,分别是省市、市县、区号、邮编,这个表已经输入了全国所有县级行政区域的资料;现在我们在客户表中输入数据,假定客户表也有这么四列,希望输入省市、县市两列的内容后,区号、邮编能够自动输入。

为实现此目的,可在客户表的DataColChanged事件中输入如下代码:

'如果刚刚输入的是省市或县市列
If
e.DataCol.Name = "省市" Orelse e.DataCol.Name = "县市" Then
    Dim
dr As DataRow

    Dim
Filter As String
    Filter = "[省市] = '" & e.DataRow("省市") & "' And [县市] = '" & e.DataRow("县市") & "'"
    dr =
DataTables("行政区域").Find(Filter ) '在行政区域表查找所输入省市和县市的行
    If dr IsNot Nothing Then '如果找到
        '将找到行的区号、邮编内容填入到正在输入的行中.

        e.
DataRow("区号") = dr("区号")
        e.
DataRow("邮编") = dr("邮编")
    Else
       
'否则清除区号和邮编两列的内容
        e.
DataRow("区号") = Nothing
        e.
DataRow("邮编") = Nothing
    End
If
End
If

代码逻辑很清晰,配合注释,你应该很容易理解。


本页地址:http://www.foxtable.com/webhelp/topics/1458.htm