设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2059|回复: 5
打印 上一主题 下一主题

[Access本身] 请教ADO批更新

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-4 09:29:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 accesscx 于 2010-8-4 09:33 编辑

库拆分为前后端,前端采用ADO+临表的方式,现已把需修改的2条记录下载并显示在子窗体_排期表内,


想实现:将pqid为186和131的备注修改为1,然后保存,

问题:只保存了其中一条记录的修改,应该怎么做才能全部保存?


现在的代码:
tcnndb的赋值:
Option Compare Database
Public tcnndb As ADODB.Connection
Function MJAutoExec_SysStartRun() '起动时,打开服务数据库Data的connection连接
On Error GoTo err_1

Set tcnndb = New ADODB.Connection
tcnndb.CursorLocation = adUseClient
tcnndb.Provider = "Microsoft.Jet.OLEDB.4.0"
tcnndb.Open "Data Source=" & "\\srv-lj-01\tooling_Data.mdb;Jet OLEDbataBase Password=123456"
err_2:
  Exit Function

err_1:
MsgBox err.Number & err.Description
Resume err_2
End Function


保存的代码:
Dim rst As Object
    If MsgBox("是否保存批量排期操作?", vbQuestion + vbYesNo, "保存提示") = vbYes Then
        Set rst = CreateObject("ADODB.Recordset")
        rst.CursorLocation = adUseClient
        rst.Open "排期表", tcnndb, adOpenKeyset, adLockBatchOptimistic, adCmdTable
        With Me.子窗体_排期表.Form.Recordset
            If .RecordCount > 0 Then .MoveFirst
            Do Until .EOF
                 rst.Filter = "pqid=" & !pqid & ""
                 If rst.RecordCount > 0 Then
                    rst!备注 = !备注
                    rst.Update
                End If
                .MoveNext
            Loop
            rst.UpdateBatch
        End With
        rst.Close
        MsgBox "保存成功!"
    Else
         GoTo err01
    End If


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-8-4 10:19:00 | 只看该作者
我始终没有明白你为什么不将两表联接起来处理?
3#
发表于 2010-8-4 10:24:45 | 只看该作者
用事务试一下:
  1. Dim rst As Object
  2. Dim strSQL As String
  3. Dim lngAffected As Long

  4. If MsgBox("是否保存批量排期操作?", vbQuestion + vbYesNo, "保存提示") = vbYes Then
  5.     With Me.子窗体_排期表.Form.Recordset
  6.         If .RecordCount > 0 Then
  7.             tcnndb.BeginTrans
  8.             .MoveFirst
  9.             Do Until .EOF
  10.                 strSQL = "UPDATE 排期表 SET 预计加工日期=#" & !预计加工日期 & "#,预计完成日期=#" & !预计完成日期 & "#," & _
  11.                          "模号='" & !模号 & "',注塑机='" & !注塑机 & "',备注='" & !备注 & "' WHERE pqid=" & pqid
  12.                 tcnndb.Execute strSQL, lngAffected
  13.                 If lngAffected = 0 Then
  14.                     strSQL = "INSERT INTO 排期表(预计加工日期,预计完成日期,模号,注塑机,备注) " & _
  15.                              "VALUES(#" & !预计加工日期 & "#,#" & !预计完成日期 & "#,'" & !模号 & "','" & !注塑机 & "','" & !备注 & "')"
  16.                     tcnndb.Execute strSQL
  17.                 End If
  18.                 .MoveNext
  19.             Loop
  20.             tcnndb.CommitTrans
  21.             MsgBox "保存成功!"
  22.         End If
  23.     End With
  24. Else
  25.     GoSub err01
  26. End If
复制代码
4#
 楼主| 发表于 2010-8-4 11:24:34 | 只看该作者
我始终没有明白你为什么不将两表联接起来处理?
todaynew 发表于 2010-8-4 10:19


将后台的排期表连接到前台?

我想不要连接表

5#
 楼主| 发表于 2010-8-4 11:39:46 | 只看该作者
红尘老师,

事务处理更新成功,不过日期不能为空,如果5条记录里,只需要修改3条的日期就麻烦了




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
发表于 2010-8-4 15:42:50 | 只看该作者
用事务试一下:
红尘如烟 发表于 2010-8-4 10:24

不明白为何记录集与更新查询交替使用,直接用更新查询两三句不就完事了吗?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-30 00:36 , Processed in 0.102938 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表