使用vba迭代数组以更新MS访问表

问题描述 投票:-1回答:1

您好我试图找出如何遍历列表来更新访问表。

products表有一个条形码列和状态。状态选项是instock,延期交货,已停产。

我有一个可以存储在excel中的条形码列表,或者我可以运行查询但是我需要遍历条形码列表以将每个项目标记为已停止。在没有任何帮助之前没有这样做会非常感谢。

excel vba ms-access access-vba
1个回答
1
投票

以下方法假定您已从Excel文件导入数据或从Access中链接到该文件。

查询方法:如果表或查询中有已停用的条形码,则可以使用此更新查询(对于像您这样的简单案例,建议使用此方法):

UPDATE PRODUCTS SET PRODUCTS.STATUS = "DISCONTINUED"
WHERE PRODUCTS.BARCODE IN (SELECT BARCODE FROM OLD_BARCODES);

VBA方法:如果您坚持使用VBA,则可以使用此功能遍历两个条形码列表并更新您的活动列表:

Function UpdateBarcodeStatus()
    Dim rsDC, rsCur As Recordset

    ' open rs for current barcodes
    Set rsCur = CurrentDb.OpenRecordset("SELECT BARCODE, STATUS FROM BARCODES")
    ' open rs for discontinued barcodes
    Set rsDC = CurrentDb.OpenRecordset("SELECT BARCODE FROM OLD_BARCODES")

On Error GoTo ErrHandler:
    rsCur.MoveFirst

    ' loop through all current barcodes
    While Not rsCur.EOF
        rsDC.MoveFirst
        ' loop through discontinued barcodes for each current barcode
        While Not rsDC.EOF
            If rsDC!BARCODE = rsCur!BARCODE Then
                ' edit current barcode status
                rsCur.Edit
                rsCur!Status = "DISCONTINUED"
                rsCur.Update
            End If

            rsDC.MoveNext
        Wend

        rsCur.MoveNext
    Wend

HandleClose:
    ' close recordsets
    rsDC.Close
    rsCur.Close

    Exit Function

ErrHandler:
    Debug.Print Err.Description
    GoTo HandleClose
End Function
© www.soinside.com 2019 - 2024. All rights reserved.