以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  跨年结转  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194787)

--  作者:g1j2h3
--  发布时间:2025/1/14 14:28:00
--  跨年结转
我想从2024年12月份的结存转成2025年的上年结转,结果出现了错误,恳求大师指导

图片点击可在新窗口打开查看此主题相关图片如下:结转.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建 文本文档.txt



--  作者:有点蓝
--  发布时间:2025/1/14 14:39:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错
--  作者:g1j2h3
--  发布时间:2025/1/14 14:42:00
--  
在加载2025年数据时,下边这段代码出错,不知是什么原因
Dim lst As New List(Of String)
For i As Integer = DataTables("库存信息_Table8").DataCols.Count - 1 To 8 Step - 2
    Dim ss() As String = DataTables("库存信息_Table8").DataCols(i).Caption.Split("_")
    Dim aa() As String = DataTables("库存信息_Table8").DataCols(i).Name.Split("_")
    If aa(1) = "1" Then
        DataTables("库存信息_Table8").DataCols.Add(ss(0) & "_" & ss(1) & "_结存", GetType(Integer), "IsNull([上年结转],0) + IsNull([入库数量_" & aa(1) & "],0)  - ISNULL([出库数量_" & aa(1) & "],0)")
    Else
        lst.Add(ss(0) & "_" & ss(1) & "_结存")
        DataTables("库存信息_Table8").DataCols.Add(ss(0) & "_" & ss(1) & "_结存", GetType(Integer), "IsNull([上年结转],0) + IsNull([入库数量_" & aa(1) & "],0)  - ISNULL([出库数量_" & aa(1) & "],0)")
    End If 
    
    Tables("库存信息_Table8").Cols(ss(0) & "_" & ss(1) & "_结存").Move(i + 1)
Next

--  作者:有点蓝
--  发布时间:2025/1/14 14:48:00
--  
调试

Dim lst As New List(Of String)
msgbox(1)
For i As Integer = DataTables("库存信息_Table8").DataCols.Count - 1 To 8 Step - 2
msgbox(i)
msgbox(DataTables("库存信息_Table8").DataCols(i).Name)
msgbox(DataTables("库存信息_Table8").DataCols(i).Caption)
    Dim ss() As String = DataTables("库存信息_Table8").DataCols(i).Caption.Split("_")
    Dim aa() As String = DataTables("库存信息_Table8").DataCols(i).Name.Split("_")
    If aa(1) = "1" Then
        DataTables("库存信息_Table8").DataCols.Add(ss(0) & "_" & ss(1) & "_结存", GetType(Integer), "IsNull([上年结转],0) + IsNull([入库数量_" & aa(1) & "],0)  - ISNULL([出库数量_" & aa(1) & "],0)")
    Else
        lst.Add(ss(0) & "_" & ss(1) & "_结存")
        DataTables("库存信息_Table8").DataCols.Add(ss(0) & "_" & ss(1) & "_结存", GetType(Integer), "IsNull([上年结转],0) + IsNull([入库数量_" & aa(1) & "],0)  - ISNULL([出库数量_" & aa(1) & "],0)")
    End If 
    msgbox(ss(0) & "_" & ss(1) & "_结存")
    Tables("库存信息_Table8").Cols(ss(0) & "_" & ss(1) & "_结存").Move(i + 1)
Next

--  作者:g1j2h3
--  发布时间:2025/1/14 15:11:00
--  
调试后,
msgbox(1)显示1
msgbox(i)显示9
msgbox(DataTables("库存信息_Table8").DataCols(i).Name)显示是上年结转
msgbox(DataTables("库存信息_Table8").DataCols(i).Caption)显示是空白
随后就出现了错误提示


--  作者:有点蓝
--  发布时间:2025/1/14 15:20:00
--  
不理解代码就是这样的了,别人给的只会抄,如果要添加功能就会乱了。

把下面代码放到最后

DataTables("库存信息_Table8").DataCols.Add("上年结转", GetType(Integer), "")
Tables("库存信息_Table8").Cols("上年结转").Move(7)

--  作者:g1j2h3
--  发布时间:2025/1/14 15:47:00
--  
以下是引用有点蓝在2025/1/14 15:20:00的发言:
不理解代码就是这样的了,别人给的只会抄,如果要添加功能就会乱了。

把下面代码放到最后

DataTables("库存信息_Table8").DataCols.Add("上年结转", GetType(Integer), "")
Tables("库存信息_Table8").Cols("上年结转").Move(7)

放到最后,就提示找不到上年结转列


--  作者:有点蓝
--  发布时间:2025/1/14 16:01:00
--  
那就改这里

For i As Integer = DataTables("库存信息_Table8").DataCols.Count - 1 To
10 Step - 2
--  作者:g1j2h3
--  发布时间:2025/1/14 16:08:00
--  
改这里也出错,我试了
--  作者:有点蓝
--  发布时间:2025/1/14 16:19:00
--  
那就调试啊,出什么错,调试是什么结果,说啊。