-- 作者:狐狸爸爸
-- 发布时间:2008/12/1 10:26:00
--
实现自动输入的基本原理是:
1、有一个基础数据表,输入所有的基础信息,例如订单管理系统中,产品表会输入所有的产品信息。 2、在另一个表输入某关键列的内容,然后自动从基础数据表提取其它列的内容输入到相关列中,例如在订单表输入产品编号,可以从产品表提取该产品的名称、型号、规格,自动输入到订单表的相关列中。
示例一
例如希望在订单表输入产品编号,能够从产品表提取该产品的名称、型号、规格,自动输入到订单表的相关列中。 为实现此目的,可在订单表的DataColChanged事件中输入如下代码:
If e.DataCol.Name = "产品编号" Then \'发生变化的是产品名称吗? \'在产品表找出该产品 Dim dr As DataRow = DataTables("产品").Find("编号 = " & "\'" & e.DataRow("产品编号") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("品名")= dr("品名") e.DataRow("型号")= dr("型号") e.DataRow("规格")= dr("规格") End If End If
示例二
假定项目中有一个名为“行政区域”的基础数据表,分别是省市、市县、区号、邮编,这个表已经输入了全国所有县级行政区域的资料;现在我们在客户表中输入数据,假定客户表也有这么四列,希望输入省市、县市两列的内容后,区号、邮编能够自动输入。
为实现此目的,可在客户表的DataColChanged事件中输入如下代码:
\'如果刚刚输入的不是省市或县市列 If e.DataCol.Name <> "省市" AndAlso e.DataCol.Name <> "县市" Then Return \'则返回 End If \'如果省市或县市列的内容为空 If e.DataRow.IsNull("省市") OrElse e.DataRow.IsNull("县市") Then \'则清除区号和邮编两列的内容 e.DataRow("区号") = Nothing e.DataRow("邮编") = Nothing Return \'然后返回 End If Dim dr As DataRow \'在行政区域表查找所输入省市?县市的行 dr = DataTables("行政区域").Find("[省市] = \'" & e.DataRow("省市") & "\' And [县市] = \'" & e.DataRow("县市") & "\'") If dr IsNot Nothing Then \'如果找到 \'将找到行的区号?邮编内容填入到正在输入的行中. e.DataRow("区号") = dr("区号") \' e.DataRow("邮编") = dr("邮编") End If
代码有点长,但是逻辑很清晰,配合注释,你应该很容易理解。
|