Da2333 2019-12-02 22:50 采纳率: 0%
浏览 381

如何用VBA代码更新access中的表记录,我的其中一段代码出现了问题(更新操作 .AddNew)

Private Sub Command14_Click()
Dim rst As ADODB.Recordset
Dim number As Integer
Dim sql As String

If IsNull(Me![仓库编号]) Then
    MsgBox "请选择仓库"
    DoCmd.GoToControl "仓库编号"
ElseIf IsNull(Me![商品编号]) Then
    MsgBox "请选择商品编号"
    DoCmd.GoToControl "商品编号"
ElseIf IsNull(Me![数量]) Then
    MsgBox "请选择数量"
    DoCmd.GoToControl "数量"
ElseIf IsNull(Me![经手员工编号]) Then
    MsgBox "请选择经手员工编号"
    DoCmd.GoToControl "经手员工编号"
ElseIf IsNull(Me![出库日期]) Then
    MsgBox "请选择出库日期"
    DoCmd.GoToControl "出库日期"
ElseIf IsNull(Me![订单编号]) Then
    MsgBox "请选择订单编号"
    DoCmd.GoToControl "订单编号"
ElseIf IsNull(Me![送货方式]) Then
    MsgBox "请选择送货方式"
    DoCmd.GoToControl "送货方式"
Else
    sql = "select * from 商品表 where 商品编号='" & Me.商品编号 & "'"
    Set rst = New ADODB.Recordset
    rst.ActiveConnection = CurrentProject.Connection
    rst.CursorType = adOpenDynamic
    rst.LockType = adLockOptimistic
    rst.Open sql
    If Not (rst.EOF) Then
        '修改库存信息
        sql = "select *from 商品表 where 仓库编号='" & Me.仓库编号 & "'and 商品编号='" & Me.商品编号 & "'"
        Set rst = New ADODB.Recordset
        rst.ActiveConnection = CurrentProject.Connection
        rst.CursorType = adOpenDynamic
        rst.LockType = adLockOptimistic
        rst.Open sql
        If Not (rst.EOF) Then
            number = rst!数量
            number = number - Me![数量]
            rst!数量 = number
            'rst.Close
            'Set rst = Nothing
            sql = "当前库存数量为:" & number
            MsgBox sql
            Exit Sub
        Else
            rst.Close
            Set rst = Nothing
            MsgBox "没有该商品的库存信息,不能出库"
            Exit Sub
        End If
    '添加出库记录
        sql = "select * from 出库记录表"
        rst.Close
        Set rst = Nothing
        Set rst = New ADODB.Recordset
        rst.ActiveConnection = CurrentProject.Connection
        rst.CursorType = adOpenKeyset
        rst.LockType = adLockOptimistic
        rst.Open sql

With rst

.AddNew

.Update = Me![仓库编号]

!商品编号 = Me![商品编号]

!数量 = Me![数量]

!经手员工编号 = Me![经手员工编号]

!出库日期 = Me![出库日期]

!订单编号 = Me![订单编号]

!送货方式 = Me![送货方式]

End With

rst.Close

Set rst = Nothing

    Else
        rst.Close
        Set rst = Nothing
        MsgBox "系统中没有该商品的信息,请先添加商品详细信息"
        Exit Sub
        Me.Visible = False
    End If
End If

End Sub

加粗的代码不能正常执行
  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 05:06
    关注

    根据你提供的代码和问题描述,可能的问题是在.AddNew这行代码出现了错误。具体的原因可能有多种,如表的字段设置不正确,记录已经存在等。为了更准确地定位问题,你可以通过以下几种方式来调试代码:

    1. .AddNew之前添加一些代码,输出相关字段的值,以确保这些值是正确的。例如:
    Debug.Print Me![仓库编号]
    Debug.Print Me![商品编号]
    
    1. .AddNew之后添加一些代码,检查是否有任何错误发生。例如:
    If Err.Number <> 0 Then
        MsgBox Err.Description
    End If
    
    1. 使用Access自带的调试工具查看错误,进一步确定原因。

    希望以上建议能够帮助你解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?