以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  凭证明细,如何在:科目代码变化 后,取:一级,二级,三级科目?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101429)

--  作者:yancheng
--  发布时间:2017/5/31 11:17:00
--  凭证明细,如何在:科目代码变化 后,取:一级,二级,三级科目?
在凭证明细,表datacolchanged。。。。写晕了。下面写得乱
\'科目代码变化后,提取一级科目,二级科目等信息--------------------------------------------------------------------------------
If e.DataCol.Name = "科目代码" Then
    Dim dr As DataRow = e.DataRow
    Dim strs() As String={"1","2","3"}
    Dim strs1() As String={"4","6","8"}
    Dim strs2() As String={"会计科目_一级科目","会计科目_二级科目","会计科目_三级科目"}
    Dim i1 As Integer = CStr(dr("科目代码")).Length
    For i As Integer = 0 To i1/2-1
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SE LECT * From {会计科目} Where [科目代码] = \'" & CStr(dr("科目代码")).SubString(0,i1) & "\'"
    dt = cmd.ExecuteReader
    If dt.DataRows.Count > 0 Then
        dr(strs1(i)) = dt.DataRows(0)("科目名称")
        \'dr("银行帐号") = dt.DataRows(0)("取值列2")
        \'dr("帐户类别") = dt.DataRows(0)("类别")
    Else
        dr(strs1(i) = Nothing
        \'dr("银行帐号") = Nothing
        \'dr("帐户类别") = Nothing
    End If
Next
End If


--  作者:有点色
--  发布时间:2017/5/31 11:23:00
--  
 没看懂你写的代码。做个例子上来说明你的需求。
--  作者:yancheng
--  发布时间:2017/5/31 11:28:00
--  
会计科目:
科目代码    科目名称
1                A              一级科目
10             AB                  二级科目
100            ABC                          三级科目

我在,凭证明细,表,科目代码,变化为:为:100时,我希望,凭证明细,的一级,二级,三级科目都提取出来

--  作者:有点色
--  发布时间:2017/5/31 11:44:00
--  

加入代码 msgbox(dr("科目代码").SubString(0,i1))

 

看弹出的信息是否正确,如果正确,那就肯定能找到对应的值。


--  作者:yancheng
--  发布时间:2017/5/31 12:04:00
--  
嗯。试了一下,这样可以:

\'科目代码变化后,提取一级科目,二级科目等信息--------------------------------------------------------------------------------
If e.DataCol.Name = "科目代码" Then
    Dim dr As DataRow = e.DataRow
    Dim strs1() As String={"4","6","8"}
    Dim strs2() As String={"会计科目_一级科目","会计科目_二级科目","会计科目_三级科目"}
    Dim i1 As Integer = CStr(dr("科目代码")).Length
    For i As Integer = 0 To i1/2-2
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "SELE CT * From {会计科目} Where [科目代码] = \'" & CStr(dr("科目代码")).SubString(0,strs1(i)) & "\'"
        dt = cmd.ExecuteReader
        If dt.DataRows.Count > 0 Then
            dr(strs2(i)) = dt.DataRows(0)("科目名称")
        Else
            dr(strs2(i)) = Nothing
        End If
    Next
End If