Office中国论坛/Access中国论坛

标题: 求助andymark及各位大虾 [打印本页]

作者: nw168    时间: 2007-5-11 22:01
标题: 求助andymark及各位大虾
编制程序如下, 运行结果都显示正常, 可查询"入库记录"和"仓库信息"两个数据库, 并没有更新数据, 求教问题在哪里, 非常感谢!

Private Sub 商品入库_Click()
Dim sql As String
Dim rst As ADODB.Recordset
Dim number As Integer
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 入库记录"
        'rst.Close
        Set rst = Nothing
        Set rst = New ADODB.Recordset
        rst.ActiveConnection = CurrentProject.Connection
        rst.CursorType = adOpenKeyset
        rst.LockType = adLockBatchOptimistic
        rst.Open sql
            With rst
            .AddNew
            !编号 = Me![编号]
            !仓库编号 = Me![仓库编号]
            !入库日期 = Me![入库日期]
            !经手人 = Me![经手人]
            !商品编号 = Me![商品编号]
            !数量 = Me![数量]
            !采购价格 = Me![采购价格]
            !供应商编号 = Me![供应商编号]
            !备注 = Me![备注]
            End With
        rst.Close
        Set rst = Nothing
        '添加或者修改库存信息
        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
            With rst
                .AddNew
                !仓库编号 = Me![仓库编号]
                !商品编号 = Me![商品编号]
                !当前库存数量 = Me![数量]
            End With
            Exit Sub
            Me.Visible = False
        End If
    Else
        rst.Close
        Set rst = Nothing
        MsgBox "系统中没有该商品的信息, 请先添加商品详细信息"
        Exit Sub
        Me.Visible = False
    End If
End Sub

作者: 红尘如烟    时间: 2007-5-12 07:17
最好把具体文件发上来,光看代码我头晕
作者: Grant    时间: 2007-5-12 07:19
忘记更新了update
作者: nw168    时间: 2007-5-12 18:09


With rst
            .AddNew
            !编号 = Me![编号]
            !仓库编号 = Me![仓库编号]
            !入库日期 = Me![入库日期]
            !经手人 = Me![经手人]
            !商品编号 = Me![商品编号]
            !数量 = Me![数量]
            !采购价格 = Me![采购价格]
            !供应商编号 = Me![供应商编号]
            !备注 = Me![备注]
            End With
后加了 .Update, 还是不行。 在调试状态下, 看到With模块这里显示“对象变量或With块变量未设置”

不知是什么问题?
作者: wuaza    时间: 2007-5-12 18:26
把Set rst = Nothing改成rst.Close

作者: nw168    时间: 2007-5-15 23:03
也不行, 郁闷!
作者: Grant    时间: 2007-5-15 23:22
            .AddNew
            !编号 = Me![编号]
            !仓库编号 = Me![仓库编号]
            !入库日期 = Me![入库日期]
            !经手人 = Me![经手人]
            !商品编号 = Me![商品编号]
            !数量 = Me![数量]
            !采购价格 = Me![采购价格]
            !供应商编号 = Me![供应商编号]
            !备注 = Me![备注]

            .update           

而End With应该在其后,不然..可以rst.update
作者: andymark    时间: 2007-5-16 00:21
update放在end with 前面,另建议用2个Recordset分开处理

作者: nw168    时间: 2007-5-16 02:15
感谢两位兄弟的帮助, 试了一下,还是不行。想把程序发给两位帮忙看一下,可以吗?
作者: Grant    时间: 2007-5-16 03:06
精简压缩后发到论坛就可以了~
作者: nw168    时间: 2007-5-16 05:13
文件压缩后还有2.2M, 无法上传。我的邮件地址是: nw168@citiz.net, 能告知电子邮件吗?谢谢!
作者: 一点通    时间: 2007-5-16 05:36
将无关联的东西全部删除,然后再用ACCESS自带的压缩功能压缩一下
作者: nw168    时间: 2007-5-16 23:49
根据 Andymark的建议, 把2个Recordset分开处理, 问题解决, 非常感谢!



还有一个小问题:

If Not (Rs_kc.EOF) Then
            number = Rs_kc!当前库存数量
            number = number + Me![数量]
            Rs_kc!当前库存数量 = number
            Set Rs_kc = Nothing
            Db_kc = "当前库存数量为: " & number
            MsgBox Db_kc


执行该段代码, MsgBox 反馈数字正确,可不对数据库进行数据更新。后增加update语句如下:

Update 仓库信息.当前库存数量 Set 仓库信息.当前库存数量 = number where 仓库编号 = " & Me![仓库编号] & " And 商品编号 = " & Me![商品编号] & "

可总显示语句出错,请教!

作者: andymark    时间: 2007-5-17 00:09
try

Update 仓库信息.当前库存数量 Set 仓库信息.当前库存数量 = " & number & " where 仓库编号 = " & Me![仓库编号] & " And 商品编号 = " & Me![商品编号] & "
作者: nw168    时间: 2007-5-17 00:25
显示编译错误:

缺少语句结束。


作者: andymark    时间: 2007-5-17 00:36


Update 仓库信息 Set 仓库信息.当前库存数量 = " & number & " where 仓库编号 = " & Me![仓库编号] & " And 商品编号 = " & Me![商品编号] & "
作者: nw168    时间: 2007-5-17 00:55
Db_kc = "select * from 仓库信息 where 仓库编号 = " & Me![仓库编号] & " And 商品编号 = '" & Me![商品编号] & "'"
        Set Rs_kc = New ADODB.Recordset
        Rs_kc.ActiveConnection = CurrentProject.Connection
        Rs_kc.CursorType = adOpenDynamic
        Rs_kc.LockType = adLockOptimistic
        Rs_kc.Open Db_kc
        If Not (Rs_kc.EOF) Then
            number = Rs_kc!当前库存数量
            number = number + Me![数量]
            Rs_kc!当前库存数量 = number
            'Rs_kc.Close
            'Set Db_kc = Nothing
            Db_kc = "当前库存数量为: " & number
            MsgBox Db_kc
            
            Update 仓库信息 Set 仓库信息.当前库存数量 = " & number & " where 仓库编号 = " & Me![仓库编号] & " And 商品编号 = " & Me![商品编号] & "
            

            Exit Sub
        Else
            With Rs_kc
                .AddNew
                !仓库编号 = Me![仓库编号]
                !商品编号 = Me![商品编号]
                !当前库存数量 = Me![数量]
                .Update
            End With
            Exit Sub
            Me.Visible = False

还是不行,抱歉,麻烦再看看这段程序,主要是怎么更新当前库存数量。update语句好象不完整(显示缺少语句结束),不知道为什么。谢了
作者: eyewitnes    时间: 2007-5-19 00:16
把你的update语句用DEBUG.PRINT 打印出来,然后粘贴到一个新建的查询里面运行或者保存一下就知道哪里有问题了




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