Office中国论坛/Access中国论坛

标题: 高手帮我看看错在哪里 [打印本页]

作者: jin03219    时间: 2006-11-17 22:50
标题: 高手帮我看看错在哪里
我在做进销存,希望在保存进货记录时能按"可累计"或"不可累计"分别修改库存,代码如下:

现在"不可累计"的正常增加了新库存记录,"可累计"或库存为0的没有按理想的修改库存记录,也没增加新记录.

Private Sub 保存_Click()
On Error GoTo Err_保存_Click


'定义保存商品库存记录是否已经存在的布尔变量
Dim BlnExist As Boolean
'定义字符型变量
Dim STemp As String
'定义数据集变量
Dim rs As ADODB.Recordset
'为定义的数据集变量分配空间
Set rs = New ADODB.Recordset
'为打开数据表“查询语句”字符变量赋值
STemp = "Select * From 库存资料"
'打开“库存资料”数据表
rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
         
         '更新商品的库存信息
        BlnExist = False   '为BlnExist变量赋初值
        '判断商品库存记录是否已经存在
            rs.MoveFirst    '把记录集指针移到第一记录
            For i = 1 To rs.RecordCount
                '判断商品库存记录是否已经存在
                If rs("商品ID") = Me![商品ID] Then
                    '如果存在,则判断是否可以累计
                    If (rs("累计") = yes) Or (rs("库存数量") = 0) Then
                    '如果可以累计,则增加库存数量
                        rs("库存数量") = rs("库存数量") + Me![数量]
                      BlnExist = True    '把BlnExist变量值设置为“真”

                        Exit For      '退出For…Next循环语句
                        
                    Else          '不可以累计,则添加新记录

                     rs.AddNew
                     rs("商品ID") = Me![商品ID]
                     rs("厂家编号") = Me![厂家编号]
                     rs("进货ID") = Me![进货ID]
                     rs("仓库") = Me![仓库]
                     rs("库存数量") = Me![数量]
                     rs("累计") = Me![累计]
                     rs("备注") = Me![备注]
                     rs.Update    '刷新记录集
                     BlnExist = True    '把BlnExist变量值设置为“真”
                        Exit For      '退出For…Next循环语句

                    End If
                    
                    
                Else           '如果商品库存记录不存在

                    rs.MoveNext    '把记录指针移到下一条记录
               
                End If
            Next
               

        '判断商品库存记录是否已经存在
        If BlnExist = False Then
            '如果商品库存记录不存在,则添加新记录
            rs.AddNew
            rs("商品ID") = Me![商品ID]
            rs("厂家编号") = Me![厂家编号]
            rs("进货ID") = Me![进货ID]
            rs("仓库") = Me![仓库]
            rs("库存数量") = Me![数量]
            rs("累计") = Me![累计]
            rs("备注") = Me![备注]
            rs.Update    '刷新记录集
            BlnExist = True    '把BlnExist变量值设置为“真”
        End If
               

    '释放系统为Rs数据集分配的空间
    Set rs = Nothing
   
   

Exit_保存_Click:
    Exit Sub

Err_保存_Click:
    MsgBox Err.Description
    Resume Exit_保存_Click
   
End Sub




[此贴子已经被作者于2006-11-17 16:04:55编辑过]


作者: jin03219    时间: 2006-11-17 23:04
修改了一下,还是有问题,为什么和第1条记录相同的商品就不能保存呢?

[此贴子已经被作者于2006-11-17 16:06:31编辑过]


作者: fan0217    时间: 2006-11-18 03:12
附上例子是否更能说明问题呢?
作者: jin03219    时间: 2006-11-18 17:50
以下是引用fan0217在2006-11-17 19:12:00的发言:
附上例子是否更能说明问题呢?

需要什么样的例子呢?

上面是进货入库"保存"按纽的代码.
作者: zhaoxiaolin    时间: 2006-11-18 20:19
把这句改为 For i = 0 To rs.RecordCount-1呢



作者: zhaoxiaolin    时间: 2006-11-18 20:23
这句好像也有点问题
作者: fan0217    时间: 2006-11-18 20:28
你把你的例子传上来,方便调试。

你让大家在这使隔山打牛的功夫啊!
作者: zhaoxiaolin    时间: 2006-11-19 07:24
你的这个窗体是单一窗体吧,如果是单一窗体就没有这么复杂,你的意思不知是不是如果有记录就库存相加,如果没有记录就添加记录,请先回复
作者: jin03219    时间: 2006-11-20 02:13
由于我在表中添加了许多图片,数据库变得很大,不便上传,请大家原谅.

这是个"保存"按纽的指令,应该很简单的,不知道出了什么问题,现在我发现如下删除全部循环也不能实现记录的修改:


'定义数据集变量
Dim rs As ADODB.Recordset
'为定义的数据集变量分配空间
Set rs = New ADODB.Recordset
'为打开数据表“查询语句”字符变量赋值
STemp = "Select * From 库存资料"
'打开“库存资料”数据表
rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
         
            rs.MoveFirst    '把记录集指针移到第一记录
                      rs("库存数量") = rs("库存数量") + Me![数量]

    '释放系统为Rs数据集分配的空间
    Set rs = Nothing
   
Exit_保存_Click:
    Exit Sub

Err_保存_Click:
    MsgBox Err.Description
    Resume Exit_保存_Click
   
End Sub
作者: huangqinyong    时间: 2006-11-20 03:33
哈哈哈,有意思.
作者: zhaoxiaolin    时间: 2006-11-21 05:37
应该还要加WHERE条件,因为应该是你输入的商品ID和库存表里的商品ID相同才能相加,  rs.MoveFirst    '把记录集指针移到第一记录,这句在你的程序里好像没太大作用





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