循环哪里出了错?

laodifang 2003-09-11 01:07:50
----为什么我只能检查出一条记录已存在,并修改。而事实在有多条记录存在
Dim rs1 As New Recordset, rs2 As New Recordset
Dim strTem As String

Private Sub Command1_Click()
Command1.Caption = "数据处理中……"
Dim a, b As Integer
a = 0
b = 0
strTem = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""DBQ=" & App.Path & "\前表.xls;DefaultDir=app.path\前表.x;Driver={Microsoft Excel Driver (*.xls)};DriverId=790;FIL=excel 8.0;FILEDSN=app.path\Book1.dsn;MaxBufferSize=2048;MaxScanRows=16;PageTimeout=5;ReadOnly=0;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"""
rs1.Open "SELECT * FROM [预算$]", strTem, adOpenDynamic, adLockOptimistic

strTem = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""DBQ=" & App.Path & "\后表.xls;DefaultDir=app.path\后表.x;Driver={Microsoft Excel Driver (*.xls)};DriverId=790;FIL=excel 8.0;FILEDSN=app.path\Book2.dsn;MaxBufferSize=2048;MaxScanRows=16;PageTimeout=5;ReadOnly=0;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"""
rs2.Open "SELECT * FROM [替换物$]", strTem, adOpenDynamic, adLockOptimistic

rs2.MoveNext ''''移到第一条记录(因为该表有两行列标题)

Do Until rs2.EOF
If IsNull(rs2.Fields("商品编号")) Then GoTo Continue

rs1.Find "商品编号 = " & rs2.Fields("商品编号")
If rs1.EOF Then ''''如果EOF则说明没找到相同记录
''''Add
Else
b = b + 1
If a = 0 Then
If MsgBox("商品编号" & rs1.Fields("商品编号") & "已经存在,是否把上月销售数量替换?", vbExclamation + vbYesNo + vbSystemModal, "数量更新") = vbYes Then
Replace
If MsgBox("以后直接替换,不提示", vbExclamation + vbYesNo + vbSystemModal, "提示") = vbYes Then
a = 1
End If
End If
ElseIf a = 1 Then
Replace
End If
End If
Continue:
rs2.MoveNext
Loop
Label1.Caption = b
Label2.Visible = True
If b = 0 Then
MsgBox "商品代码均没重复!没有做任何操作。", vbOKOnly, "OK"
End If
rs2.Close
Command1.Caption = "处理完毕,请关闭"
Command1.Enabled = False
End Sub

Private Sub Replace()
''''替换的提示
For i = 0 To rs2.Fields.Count - 1
rs1.Fields(8) = rs2.Fields(3)
Next i
End Sub
Private Sub Form_Load()
Command1.Caption = "Click me!"
Label1.Caption = ""
Label2.Caption = "个已存在商品已经处理"
Label2.Visible = False
End Sub

----为什么我只能检查出一条记录已存在,并修改。而事实在有多条记录存在。why
...全文
28 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
laodifang 2003-09-11
  • 打赏
  • 举报
回复
谢谢楼上的几位的。。ff说的已经很详细了。。我也明白了。。分数大家收一下吧
第一次发贴,这么快解决了。高兴
feiqinfeiwhw 2003-09-11
  • 打赏
  • 举报
回复
把这段代码改成
Do Until rs2.EOF
If IsNull(rs2.Fields("商品编号")) Then GoTo Continue
rs1.movefrist
do until rs1.eof or rs1.bof
rs1.Find "商品编号 = " & rs2.Fields("商品编号")
If rs1.EOF Then ''''如果EOF则说明没找到相同记录
''''Add
Else
b = b + 1
If a = 0 Then
If MsgBox("商品编号" & rs1.Fields("商品编号") & "已经存在,是否把上月销售数量替换?", vbExclamation + vbYesNo + vbSystemModal, "数量更新") = vbYes Then
Replace
If MsgBox("以后直接替换,不提示", vbExclamation + vbYesNo + vbSystemModal, "提示") = vbYes Then
a = 1
End If
End If
ElseIf a = 1 Then
Replace
End If
rs1.movenext
End If
loop
Continue:
rs2.MoveNext
rs1.move
Loop
rexyudl 2003-09-11
  • 打赏
  • 举报
回复
拜托!缩进一下啊!
planetike 2003-09-11
  • 打赏
  • 举报
回复
楼主,代码太长了.好难看.
Fearfulness 2003-09-11
  • 打赏
  • 举报
回复
rs2.MoveNext ''''移到第一条记录(因为该表有两行列标题)
应该为:rs2.MoveFirst吧?

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧