以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]FOR .....NEXT  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=2096)

--  作者:狐哥
--  发布时间:2009/3/14 10:11:00
--  [求助]FOR .....NEXT
哪位老师帮我修改一下如下循环公式,第一行变动时总是提示错,点确认后下一行又出错,不能循环.


For Each sjmxdr As dataRow In datatables("收据明细").dataRows
    if sjmxdr isnot nothing then
        Select Case e.DataCol.Name
        Case "币制"
            Dim zsdrs As List(Of datarow) = DataTables("折算表").select("[币制] = \'" & sjmxdr("币制") & "\' and [折算币制] = \'" & sjmxdr("收据币制") & "\'")
            For Each zsdr As datarow In zsdrs
                if zsdr isnot nothing then
                    sjmxdr("折算符") = zsdr("折算符")
                    sjmxdr("兑换率") = zsdr("汇率")
                end if
            Next
        case "兑换率","收据币制"
            Dim s As String = sjmxdr("金额") & sjmxdr("折算符") & sjmxdr("兑换率")
            sjmxdr("收据金额") = eval(s)
        case "收据金额"
            dim sjdr as datarow = tables("收据").Current.DataRow
            If sjdr IsNot Nothing Then
                dataTables("收据").dataCols("折合币制").RaiseDataColChanged(sjdr)
            End If
    end select
end if
next
--  作者:kylin
--  发布时间:2009/3/14 10:22:00
--  
sjmxdr("金额")和 sjmxdr("兑换率")是数值型的话,则 sjmxdr("金额") & sjmxdr("折算符") & sjmxdr("兑换率")是错误的,提供例子吧

[此贴子已经被作者于2009-3-14 10:22:00编辑过]

--  作者:狐哥
--  发布时间:2009/3/14 11:09:00
--  
以下是引用kylin在2009-3-14 10:22:00的发言:
sjmxdr("金额")和 sjmxdr("兑换率")是数值型的话,则 sjmxdr("金额") & sjmxdr("折算符") & sjmxdr("兑换率")是错误的,提供例子吧

[此贴子已经被作者于2009-3-14 10:22:00编辑过]

谢谢你

Dim dr As DataRow = e.DataRow
Dim s As String = dr("金额") & dr("折算符") & dr("兑换率")
            dr("收据金额") = eval(s)

这个在当前行中用是正确定的,金额与兑换率都是数值,折算符就是:" *  " 与 " / "

但就不知如何在集合中循环使用!


*****附件如下,窗口为收据窗口, 进入系统后,点 客户为: 广州衡洋 这个客户, 进入 费用录入 点:打印收据,因这个客户内有录入数具.
窗口位于收据表,关闭窗口中也有公式,但我不知公式错在哪.如有时间帮我看看.
万分感谢.

密码:barryyong

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

[此贴子已经被作者于2009-3-14 12:21:13编辑过]

--  作者:lxl
--  发布时间:2009/3/14 12:10:00
--  

没密码,进不去图片点击可在新窗口打开查看


--  作者:狐哥
--  发布时间:2009/3/14 12:10:00
--  
不好意思,不好意思,忘了
barryyong
--  作者:czy
--  发布时间:2009/3/14 12:11:00
--  
密码多少啊?
--  作者:lxl
--  发布时间:2009/3/14 17:03:00
--  

程序太复杂了,要理清结构感觉很费力
不知道能不能把问题简化一下。


另外,发现你好多地方都这样试用了:
For Each r As DataRow In Tables("表A").DataRows
    If r IsNot Nothing Then
         代码……
    End If

Next

这里If判断r是否为nothing感觉没必要。
如果表A没有数据,DataRows为空集合,是不会执行中间的代码。

[此贴子已经被作者于2009-3-14 17:03:34编辑过]

--  作者:狐哥
--  发布时间:2009/3/15 15:16:00
--  
以下是引用lxl在2009-3-14 17:03:00的发言:

程序太复杂了,要理清结构感觉很费力
不知道能不能把问题简化一下。


另外,发现你好多地方都这样试用了:
For Each r As DataRow In Tables("表A").DataRows
    If r IsNot Nothing Then
         代码……
    End If

Next

这里If判断r是否为nothing感觉没必要。
如果表A没有数据,DataRows为空集合,是不会执行中间的代码。

是的,这个是多余的,因为以前我想记录收据,所以才这样设置代码.后来想想没有必要,所以代码没有改过来.

此程序因是此行业的需要。其实问题就只是在三个表中间相互引用与触发:收据表 收据明细表 折算表。
收据明细表 只是用来提取 费用管理表中(也就是 业务录入.费用管理)的数据.
折算表 是用来设置 收据明细表--收据币制与折算符这二列的数据,
问题是:设置折算表中的折算币制与收据明细表中的收据币制一样时,则:收据明细中只要是符合币制与折算币制相符时,则此行的收据汇率与折算符要与折算表的当前行的一致。

呵,麻烦各位了,只看这三人表,其它表不用看:收据表 收据明细表 折算表


--  作者:狐哥
--  发布时间:2009/3/15 15:20:00
--  
我好像有点明白了,代码放错表了。周一再试试吧。到时如不明再请教大家。