Office中国论坛/Access中国论坛

标题: 请教一段代码 [打印本页]

作者: zzcjp    时间: 2008-5-20 02:46
标题: 请教一段代码
以下这段代码用在ACCESS的mdb后端,使用正常,n.Update 这一句可以更新数据。现在我把ACCESS 2000的后端升迁到sql 2000,这段代码依然可以运行,但是 n.Update 这一句已经不能更新数据了。我查阅aaccess帮助:
记录集类型基于 SQL 数据基于 Jet 数据
ADO读/写(1)只读
DAON/A读/写

可知在DAO记录集基于SQL数据时读写的状态不可知,需要改写成ADO记录集类型或DAO记录集类型,基于JET数据,我不太懂如何改写,请大侠们出手代劳。这一段代码基于窗体来循序处理数据更新非常直观。


Dim fphj
  Dim n As DAO.Recordset
  fphj = 0
If [20到款资料].Form![到款金额] > 0 Then
  Set n = [20商品资料].Form.Recordset
    n.MoveLast                      '移动到最后一笔
    n.MoveFirst                      '再移动回第一笔
    Do Until n.EOF                 '逐笔处理
     n.Edit                               '设定为可编辑状态
     If [20到款资料].Form![到款金额合计] - fphj >= [20商品资料].Form.发货金额 Then   '如果到款总计-分配到款累计大于本笔发货金额 则
      [20商品资料].Form![分配到款金额] = [20商品资料].Form.发货金额
      fphj = fphj + [20商品资料].Form.发货金额    '分配到款累加
     Else
      [20商品资料].Form![分配到款金额] = [20到款资料].Form![到款金额合计] - fphj     '本笔分配到款=到款总计余额
      Exit Do
     End If                             '结束处理
     n.Update                        '储存
     n.MoveNext                    '下一笔
   Loop
作者: zzcjp    时间: 2008-5-21 22:17
标题: 已解决
在代码中去掉:
Dim n As DAO.Recordset
n.Edit                              '设为可编辑状态
n.Update                         '储存
以上这三行代码是DAO专用格式,除去后,楼主的代码段就可以更新改写。
作者: tz-chf    时间: 2008-5-21 22:46
一个字:乱

既然用n,循环里又用控件名称,而且循环的逻辑也是,exit do了,那上句还要不要update呀!

还有设变量不太规范。。。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3