以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]Table当前行定位问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68124) |
-- 作者:青鸟 -- 发布时间:2015/5/10 17:18:00 -- [求助]Table当前行定位问题 请教: 我有2个Table,希望在 Table_VO报表台账 中录入新记录时,用新记录的“合同or费用编号”为关键字段,来定位Table_支付汇总 中对应的记录,并写入数据,代码如下:执行代码的时候,红色msgbox()输出的值都是正确的,并且大部分时间代码运行正确,但出现过两次向Table_支付汇总写入记录时,写到了第0行了,不知道是什么原因,请高人指点一下: Dim id As Integer Dim r As Row Dim dr As DataRow Dim dr1 As DataRow Dim wz As Integer \'位置 Dim htbdze As String \'合同变动后总额 Dim flt As String flt ="合同or费用编号 = \'"&forms("VO报表录入").controls("TextBox1").text &"\' And 审核状态 = \'已审定\' And 审定日期 <= \'# " & forms("VO报表录入").controls("DateTimePicker2").text & " #\'" With Tables("VO报表台账") If .Current IsNot Nothing Then id = Tables("VO报表台账").Current.Index msgbox(id) r = Tables("VO报表台账").Rows(id) dr = DataTables("支付汇总").Find("合同or费用编号 = \'"& r("合同or费用编号") &"\'") dr1 = DataTables("合同or费用台账").Find("合同or费用编号 = \'"& r("合同or费用编号") &"\'") If dr IsNot Nothing Then wz = Tables("支付汇总").findrow(dr) msgbox(wz) CurrentTable.Position = wz Tables("支付汇总").Current.Locked = False Tables("合同or费用台账").Current.Locked = False Tables("支付汇总").current("累计VO审定金额") = DataTables("VO报表台账").Compute("sum(审定金额)", flt) Tables("支付汇总").current("累计VO审定份数") = DataTables("VO报表台账").Compute("Count(审定金额)", flt) Tables("支付汇总").current("变更后合同or费用总额") = dr1("合同or费用总额") + Tables("支付汇总").current("累计VO审定金额") |
-- 作者:大红袍 -- 发布时间:2015/5/10 17:32:00 -- 不严谨
Dim id As Integer CurrentTable.Position = idx [此贴子已经被作者于2015/5/10 17:32:13编辑过]
|
-- 作者:青鸟 -- 发布时间:2015/5/11 10:17:00 -- 谢谢大红袍!我按照你的代码做了修改,当 Idx>=0 时没问题,但当 Idx = -1 时,我需要的是追加新记录Addnew(),但运行报错中断,“索引 -1 不是为负数,就是大于行数。”怎么办? |
-- 作者:Bin -- 发布时间:2015/5/11 10:19:00 -- If idx >= 0 Then 有了这个判断不可能进入代码,也无从报错啊. |
-- 作者:大红袍 -- 发布时间:2015/5/11 11:24:00 -- 以下是引用青鸟在2015/5/11 10:17:00的发言:
谢谢大红袍!我按照你的代码做了修改,当 Idx>=0 时没问题,但当 Idx = -1 时,我需要的是追加新记录Addnew(),但运行报错中断,“索引 -1 不是为负数,就是大于行数。”怎么办?
追加新记录,这样写啊
Dim cr As Row If idx >= 0 Then cr = Tables("支付汇总").Rows(idx) Else cr = Tables("支付汇总").AddNew End If |
-- 作者:青鸟 -- 发布时间:2015/5/11 14:46:00 -- 上面那个问题解决了,再请教: 执行了红色代码后,Tables("支付汇总")的指针是严谨了,但Tables("VO报表台账")的当前指针跟着一起动了,我现在的解决办法是把要向Tables("VO报表台账")当前行写入的数据全部拿到红色代码段前面,指针动就动了,但这样就不能写更多的这两个表之间的数据判断了,比如:我需要根据Tables("支付台账")和Tables("进度报表台账")录入的数据,向Tables("支付汇总")中写入累计已付总额,再用这个累计总额来与Tables("支付台账")中的支付录入数据和Tables("进度报表台账")中的进度录入数据相比较,判断是否超支了。 能否实现主表的指针不动,而只让关联表的指针动?谢谢! With Tables("VO报表台账") CurrentTable.Position = idx |
-- 作者:大红袍 -- 发布时间:2015/5/11 14:52:00 -- 你为什么要执行这句代码?去掉不可以么?或者,你可以写到最后
CurrentTable.Position = idx |
-- 作者:青鸟 -- 发布时间:2015/5/11 16:42:00 -- 哦,晕,确实多余,3Q |