簡體   English   中英

如何從記錄集打開記錄集?

[英]How to open a recordset from a recordset?

我想用另一個記錄集的VBA打開一個記錄集。

如果我編寫SQL並將其保存到名為new_entry和valid_unit的查詢中,則此方法有效

' valid_unit
SELECT *
FROM import_raw_data
WHERE unit_name IN (SELECT unit_name FROM unit);

' new_entry
SELECT *
FROM valid_unit
WHERE id NOT IN (SELECT id FROM serviceman);
WHERE

但是,我想專門在VBA中執行此操作,而不是保存查詢。

Sub testing()
    valid_unit_sql = _
        "SELECT * " _
      & "FROM import_raw_data"
      & "WHERE unit_name IN (SELECT unit_name FROM unit);

    new_entry_sql = _
        "SELECT * "
      & "FROM ( " & valid_unit_sql & ") " _
      & "WHERE id NOT IN (SELECT id FROM serviceman);"

    With CurrentDb
        Set valid_unit = .OpenRecordset(valid_unit_sql)
        ' valid_unit works great
        Set new_entry = .OpenRecordset(new_entry_sql)
        ' this doesnt, it errors out
    End With
End Sub

我可以知道該怎么做嗎? 我應該保存我的valid_unit查詢和FROM valid_unit嗎?

您的引號"和換行符& _有點混亂。我不知道這是否是復制粘貼錯誤,或者這是否是您的實際代碼(無法編譯)。

無論如何,請嘗試以下操作:

Sub testing()       
    valid_unit_sql = "SELECT * " & _
                     "FROM import_raw_data " & _
                     "WHERE unit_name IN (SELECT unit_name FROM unit)"

    new_entry_sql = "SELECT * " & _
                    "FROM (" & valid_unit_sql & ") AS T " & _
                    "WHERE T.id NOT IN (SELECT id FROM serviceman);"

    Debug.Print new_entry_sql

    With CurrentDb
        Set valid_unit = .OpenRecordset(valid_unit_sql)
        Set new_entry = .OpenRecordset(new_entry_sql)
    End With
End Sub

輸出SQL:

SELECT * 
FROM 
    (
        SELECT * 
        FROM import_raw_data 
        WHERE unit_name IN (SELECT unit_name FROM unit)
    ) AS T 
WHERE T.id NOT IN (SELECT id FROM serviceman);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM