私はいくつかのVBAを書きました:
For x = LBound(resProdID) To UBound(resProdID)
CurrentDb.QueryDefs("qry_findID_vba").SQL = "" & _
"SELECT tbl_products.ProdID " & _
"FROM tbl_products " & _
"WHERE (tbl_products.Size = " & resSize(x) & " " & _
"AND tbl_products.SupplID = '" & Forms.frm_suppliers.SupplID & "')"
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("qry_findID_vba")
MsgBox rst.RecordCount
If rst.RecordCount <> 0 Then
rst.MoveLast
rst.MoveFirst
newProdID(x) = rst.Fields(0).Value
MsgBox "This never fires"
End If
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
Next x
実行すると、ボックスがポップアップして 0 と表示されます。[OK] をクリックすると、もう一度繰り返されます。これは、resProdID 配列に 2 つの項目があるためです。
しかし、クエリ「qry_findID_vba」を開くと、期待どおりに1行が表示されます。
VBA がこの行を返さないのはなぜですか? 私は何か悪いことをしましたか?