【问题标题】:How to loop in Visual Basic 6, my FOR loop is not working如何在 Visual Basic 6 中循环,我的 FOR 循环不起作用
【发布时间】:2016-08-31 11:07:25
【问题描述】:

大家好!

我正在尝试在我的 vb6 项目中使用 FOR 循环。在主题中有两个记录集。第一个记录集在 MS Access 数据库表中找到记录并获取一些值,然后第二个记录集使用这些值在另一个表中更新。 当我编译没有错误,但在表中没有值更新。此外,这个循环只工作一次,我的意思是它没有循环。怎么了?请帮忙! 谢谢

Sub UpdatePreQty()
    Dim rsTmp As New ADODB.Recordset
    Dim rsStock As New ADODB.Recordset
    Dim tmpICODE As String
    Dim tmpBCODE As String
    Dim tmpQty As String

    For I = 1 To Val(txtTmpItemCount.Text)
        Dim strsql As String '-----Write this line only once on a form
        strsql = "SELECT * FROM [bill_details] WHERE  [bill_sno] =" & sno
        If rsTmp.State = adStateOpen Then rsTmp.Close
            rsTmp.Open strsql, cn, adOpenStatic, adLockOptimistic
            tmpICODE = rsTmp("prod_sno")
            tmpBCODE = rsTmp("Batch")
            tmpQty = rsTmp("qty")

            If rsStock.State = adStateOpen Then rsStock.Close
                rsStock.Open "SELECT * FROM Batch where BCODE='" & tmpBCODE & "' and ICODE ='" & tmpICODE & "' and [ccode]='" & Ccode & "'", cn, adOpenDynamic, adLockOptimistic
                rsStock("OUT") = (Val(rsStock("OUT")) - tmpQty)
                rsStock("CBAL") = Val(rsStock("OBAL")) + Val(rsStock("IN")) - Val(rsStock("OUT")) '
                rsStock.Update
    Next

    MsgBox "Previous stock update"
    If rsStock.State = adStateOpen Then rsStock.Close
    If rsTmp.State = adStateOpen Then rsTmp.Close

End Sub

【问题讨论】:

  • Next 更改为Next I

标签: mysql sql ms-access vb6


【解决方案1】:

通过将 FOR LOOP 更改为 DO WHILE 解决

Do While Not rsTmp.EOF
Loop

谢谢大家

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 2018-06-12
    • 2015-10-18
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多