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 |