以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:流水账与重置列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=42826)

--  作者:L88919138
--  发布时间:2013/11/23 8:01:00
--  求助:流水账与重置列

在帮助文件中“流水账与重置列”里例子存在这样个缺点,如果流水账采用动态加载技术只加载部份数据,而一旦按例子中程序代码运行,是从每个产品第一行开始计算,这样计算结果与实际正确值可能会有出入。而我的假设是也采用动态加载技术加载部份数据,假设第一行库存数据已经核对无误(无需再参与重置列计算),如果我们重置列程序代码能够作到从每个产品第二行(动态加载数据后)开始计算,就有可能保证后面数据计算与实际值相符(上传附件中数据假定是采用动态加载技术后的结果),这个程序代码怎么写?兄弟我调试三天还没结果,请各位大师赐教?

 

帮助中原程序代码:

Dim nms As New List(Of String)
Dim
drs As New List(of DataRow)
With DataTables(
"例子二")
    nms
= .GetValues("产品")
    For Each
nm As String In nms \'找出每个产品的第一行数据, 添加到集合drs中
       
drs.Add(.Find("产品 = \'" & nm & "\'", "[_SortKey]"))
    Next
    For Each
dr As DataRow In drs
        .
DataCols("入库").RaiseDataColChanged(dr)
    Next
End With


--  作者:L88919138
--  发布时间:2013/11/23 8:04:00
--  

不好意思,例子没上传成功,现在上传下。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:流水账.zip


--  作者:Bin
--  发布时间:2013/11/23 9:15:00
--  
呵呵,这里有现成的例子可供参考


--  作者:L88919138
--  发布时间:2013/11/23 10:03:00
--  

多谢大师指点,惭愧原来论坛上已有答案,我还在瞎操心。

 


--  作者:L88919138
--  发布时间:2013/11/27 15:20:00
--  

在流水账与重置列中如入代码:

Dim nms As New List(Of String)
Dim drs As New List(of DataRow)
With DataTables("采购付款表")
    nms = .GetValues("客户简称")
    For Each nm As String In nms \'找出每个产品的第一行数据, 添加到集合drs中
        drs.Add(.Find("客户简称 = \'" & nm & "\'", "[_SortKey]"))
    Next
    For Each dr As DataRow In drs
        .DataCols("进仓金额").RaiseDataColChanged(dr)
    Next
End With

程序运行时提示错误:

System.NullReferenceExceptioon:未将对象引用设置到对象的实例。在FOXtable.datatable.0000000000I0000(DATACOL 01,datarow 01)

在FOXTABLE.DATACOL.RAISEDATACOLCHANGED(DATAROW 01)在USERCODE.CLICK-96F2A240(controleventargs e)


--  作者:Bin
--  发布时间:2013/11/27 15:22:00
--  
引用了空值
建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因

--  作者:狐狸爸爸
--  发布时间:2013/11/27 15:51:00
--  

For Each nm As String In nms \'找出每个产品的第一行数据, 添加到集合drs中
        drs.Add(.Find("客户简称 = \'" & nm & "\'", "[_SortKey]")) 
Next

 

改一下:

 

For Each nm As String In nms \'找出每个产品的第一行数据, 添加到集合drs中
        Dim rr AS datarow  = .Find("客户简称 = \'" & nm & "\'", "[_SortKey]")

        if rr Isnot Nothing then

             drs.Add(rr)

        End If

Next

原因:不是任何时候,你都能找到符合条件的行的。


--  作者:L88919138
--  发布时间:2013/11/27 18:31:00
--  

多谢两位大师指点。狐爸就是高手,帮我解开这段代码疑惑。

 


--  作者:L88919138
--  发布时间:2013/12/2 16:15:00
--  
为何我增加重置列按钮进行流水账重置列,而之前sqlcommand数据为何没有参与计算?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:流水账.zip


--  作者:Bin
--  发布时间:2013/12/2 16:24:00
--  
你需要先执行SQL获得前面的数据.