以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  赋值问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=70921)

--  作者: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类编码从后台判断取过来,这样的功能应该怎么才能实现呀。
\'


--  作者:大红袍
--  发布时间:2015/7/1 15:29:00
--  

 用SqlFind 代替 Find

 

http://www.foxtable.com/help/topics/2911.htm

 


--  作者:xiaohuli
--  发布时间:2015/7/1 15:50:00
--  

这样的话,还是不对的,根本就取不到值。


--  作者:大红袍
--  发布时间:2015/7/1 15:53:00
--  
 不,可,能