2008-10-10 78 views
3

我想在Access VBA中創建一個記錄集,它將向我顯示與表單的當前記錄相關的表中的所有記錄。我目前的代碼如下所示:使用SQL語句在VBA中創建記錄集

Private Sub Form_Load() 

    Dim rst As Recordset 

    Set rst = CurrentDb.OpenRecordset("Select [ID], [Ln] From [Order Detail] Where ((([Order Detail].[ID]) = [Forms]![Order Data Entry Header]![ID]))") 

    rst.MoveLast 
    Forms![Order Data Entry Header].LineNum = rst![Ln] 

End Sub 

我這樣做是爲了在添加新記錄時,可以在最高數字後按順序編號。當我運行表單時,它會得到「運行時錯誤:'3061'參數太少,預期1。」在Set第一行。

任何幫助,將不勝感激。

回答

7

問題是,您看到的字符串正是傳遞給驅動程序的內容。

你需要「建立」的字符串,像這樣:

Set rst = CurrentDb.OpenRecordset("Select [ID], [Ln] From [Order Detail] Where ((([Order Detail].[ID]) = " & [Forms]![Order Data Entry Header]![ID] & "))") 

關注,以確保[表格] [訂單數據錄入頭] [ID]是安全的內容,因爲你!建立一個SQL語句。

+1

也就是說,在將SQL傳遞給OpenRecordset方法之前,您需要解析對Access對象的所有引用。 – 2008-10-11 20:50:59

相關問題