使用vba遍历数组以更新MS访问表

时间:2019-04-15 16:38:48

标签: excel vba ms-access access-vba

您好,我正在尝试找出如何遍历列表以更新访问表的方法。

products表具有一列,用于显示条形码和状态。状态选项为库存,缺货,已停产。

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

1 个答案:

答案 0 :(得分: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