设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 那位高手帮帮忙 条件更新表和添加代码错误问题

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-27 14:50:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Dim i, j As Integer
Dim stemp As String
Dim Rs As ADODB.Recordset
Dim Rs1 As ADODB.Recordset
Set Rs = New ADODB.Recordset
Set Rs1 = New ADODB.Recordset
  
    stemp = "Select * From 库存明细"
    Rs.Open stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    stemp = "Select * From 库存"
    Rs1.Open stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
   
   If Rs.RecordCount < 1 Or Rs1.RecordCount < 1 Then

      Exit Sub
    End If
    For i = 1 To Rs1.RecordCount
     Rs1.MoveFirst
   
     Rs.MoveFirst
     For j = 1 To Rs.RecordCount
      If Rs1("条码号") = Rs("条码号") And Rs1("编号") = Rs("商品编号") Then
       Rs("数量") = Rs("数量") + Rs1("数量")
       Rs("金额") = Rs("数量") * Rs("单价")
       Rs.Update
       Rs1.Delete 1
       Rs1.Update
       Exit For
       Me.库存_子窗体2.Requery
         
       Else
         Rs.MoveNext
       End If
       Next j
      
       If j = Rs.RecordCount Then
        Rs("产品名称") = Rs1("产品名称")
        Rs("日期") = Rs1("日期")
        Rs("型号规格") = Rs1("型号规格")
        Rs("数量") = Rs1("数量")
        Rs("单价") = Rs1("零售价")
        Rs("金额") = Rs1("零售金额")
        Rs("仓库号") = Rs1("仓库号")
        Rs("类别") = Rs1("类别")
        Rs("商品编号") = Rs1("编号")
        Rs("毛利率") = Rs1("毛利率")
        Rs("条码号") = Rs1("条码号")
        Rs.Update
        Rs1.Delete 1
        Rs1.Update
        Exit For
        Exit For
        Me.库存_子窗体2.Requery
        
        Rs1.MoveNext
        End If
        Next i
        Rs.Close
   

    Set Rs = Nothing
    Set Rs1 = Nothing

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-6-27 15:08:38 | 只看该作者
文棣 发表于 2011-6-27 14:50
Dim i, j As Integer
Dim stemp As String
Dim Rs As ADODB.Recordset

看不懂想干点什么
3#
 楼主| 发表于 2011-6-27 15:12:04 | 只看该作者
就是通个一个按键 从库存表 更新库存明细表 如果库存明细表有对应记录 则执行更新 没有则追加该条记录 更新可以 但追加就不晓得如何做了
4#
 楼主| 发表于 2011-6-27 15:14:47 | 只看该作者
回复 todaynew 的帖子

其实就是如何达到从库存表 更新库存明细表 有相同的记录 更新数量 无记录则执行追加 不管是更新 还是追加 执行后删除该条记录
5#
 楼主| 发表于 2011-6-27 15:19:23 | 只看该作者
回复 todaynew 的帖子

对for循环使用较少
6#
发表于 2011-6-27 15:35:42 | 只看该作者
本帖最后由 todaynew 于 2011-6-27 17:49 编辑
文棣 发表于 2011-6-27 15:19
回复 todaynew 的帖子

对for循环使用较少


Dim i As Integer
Dim stemp As String
Dim Rs As New ADODB.Recordset
Dim Rs1 As New ADODB.Recordset
stemp = "Select * From 库存"
Rs1.Open stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If Rs1.RecordCount = 0 Then Exit Sub
'更新库存明细表
For i = 1 To Rs1.RecordCount
       stemp = "Select * From 库存明细 where 条码号='" & Rs1("条码号").Value & "' and 商品编号='" & Rs1("商品编号").Value & "'"
       Rs.Open stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
       If Rs.RecordCount = 0 Then
           Rs.AddNew  '无对应记录则追加
       End If
       Rs("产品名称").Value = Rs1("产品名称").Value
       Rs("日期").Value = Rs1("日期").Value
       Rs("型号规格").Value = Rs1("型号规格").Value
       Rs("数量").Value = Nz(Rs("数量").Value, 0) + Rs1("数量").Value
       Rs("单价").Value = Rs1("零售价").Value
       Rs("金额").Value = Rs("数量").Value * Rs("单价").Value
       Rs("仓库号").Value = Rs1("仓库号").Value
       Rs("类别").Value = Rs1("类别").Value
       Rs("商品编号").Value = Rs1("编号").Value
       Rs("毛利率").Value = Rs1("毛利率").Value
       Rs("条码号").Value = Rs1("条码号").Value
       Rs.Update
       Rs1.MoveNext
       Rs.Close
Next

'删除库存表中记录
for i=1 to Rs1.RecordCount
    rs1.delete
    rs1.update
    rs1.movenext
next

Me.库存_子窗体2.Requery
Rs1.Close
Set Rs = Nothing
Set Rs1 = Nothing
7#
 楼主| 发表于 2011-6-27 18:13:54 | 只看该作者
回复 todaynew 的帖子

删除 不行 提求EOF有一个为真
8#
 楼主| 发表于 2011-6-27 18:15:46 | 只看该作者
回复 todaynew 的帖子

BOF或EOF有一个是真,或当前记录已被删除,所需操作要求一个当前记录
9#
发表于 2011-6-28 08:19:07 | 只看该作者
文棣 发表于 2011-6-27 18:15
回复 todaynew 的帖子

BOF或EOF有一个是真,或当前记录已被删除,所需操作要求一个当前记录

呵呵,漏了一条语句。在删除之前加一句
rs1.movefirst
10#
 楼主| 发表于 2011-6-28 08:52:37 | 只看该作者
回复 todaynew 的帖子

感谢了 我找了好久原因是我还是没有指向第一条记录 呵呵 谢谢你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 03:57 , Processed in 0.096663 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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