-- 作者:xiaohuli
-- 发布时间:2015/7/1 15:27:00
-- 赋值问题
老师,有两张表,一张是信息表,另一张是资产表。资产表中有A类,A类编码,B类,B类编码,C类,C类编码等,同时信息表中也有这些相应的字段,
然后在录入资产表的时候,A类,B类,C类都是从后台数据库中取到的,然后我想实现,当填入A类时,顺便将A类所对应的A类编码也自动从后台数据库中取过来填到资产表中。之前我是通过将信息表加载过来后实现的,代码如下。
Select Case e.DataCol.Name Case "A类" Dim dr As DataRow = DataTables("信息表").Find("A类=\'"& e.DataRow("A类") &"\'") e.DataRow("A类编码") = dr("A类编码") Case "B类" Dim dr As DataRow = DataTables("信息表").Find("B类=\'"& e.DataRow("B类") &"\'") e.DataRow("B类编码") = dr("B类编码") e.DataRow("C类编码") = dr("C类编码") \' Case "C类" Dim dr As DataRow = DataTables("信息表").Find("C类=\'"& e.DataRow("C类") e.DataRow("C类编码") = dr("C类编码") Case "A类编码","B类编码","C类编码" Dim dr As DataRow = e.DataRow Dim pr As DataRow If dr.IsNull("A类编码") OrElse dr.IsNull("B类编码") OrElse dr.IsNull("C类编码") Then dr("顺序号") = Nothing Else Dim bh As String = e.DataRow("A类编码") & e.DataRow("B类编码") & e.DataRow("C类编码") \'生成编号的前缀 If e.DataRow("资产编码").StartsWith(bh) = False \'如果编号前缀不符 Dim max As String Dim idx As Integer Dim flt As String flt = "A类编码 = \'"& e.DataRow("A类编码") & "\' And B类编码 = \'"& e.DataRow("B类编码") & "\' And C类编码 = \'"& e.DataRow("C类编码") & "\' And [_Identify] <> " & e.DataRow("_Identify") max = e.DataTable.Compute("Max(资产编码)",flt) \'取得该类资产编码的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(4,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("顺序号") = Format(idx,"000") e.DataRow("资产编码")= e.DataRow("A类编码") & e.DataRow("B类编码") & e.DataRow("C类编码") & e.DataRow("顺序号") \' End If End If \' End Select
但这样写的话,必须要将信息表从后台加载过来才能取到A类编码的值,否则的话取不到,我现在填入A类的时候,直接将A类编码从后台判断取过来,这样的功能应该怎么才能实现呀。 \'
|