2012-01-25 125 views
0

我正在使用以下代碼來運行傳遞查詢。我正在嘗試運行passthrough查詢,然後檢查返回的記錄數是多少,以確定它是否工作。但是,我得到一個錯誤說訪問傳遞查詢給出錯誤

「無效操作」

爲什麼這樣做,我該如何糾正?

Dim Item As String 
    Item = InputBox("Enter Item needing a surrogate UPC.", "Enter Item") 


Set db = CurrentDb 

Set qdf = db.QueryDefs("spAL_AssignSurrogateUPC") 
qdf.ReturnsRecords = True 
qdf.SQL = "spAL_AssignSurrogateUPC '" & Item & "'" 
With qdf.OpenRecordset(dbOpenSnapshot)  '<--- Error triggered here. 
    If qdf.RecordCount = 1 Then 
     MsgBox "Surrogate UPC assigned." 
    Else 
     MsgBox "ERROR. Could not assign surrogate UPC." 
    End If 
End With 
+0

確實spAL_AssignSurrogateUPC返回行? –

+0

@ConradFrix - 如果它工作,它返回1行,如果它不起作用,它什麼也不返回。 – MAW74656

+0

@HansUp - 請參閱編輯。 – MAW74656

回答

1

使用EXEC語法

qdf.SQL = "EXEC spAL_AssignSurrogateUPC '" & Replace(Item, "'", "''") & "';" 

(我以爲這是SQL服務器。)

我也是爲了應付Item字符串單引號增加了替換功能。這也有助於防止SQL注入。


編輯:

嘗試這樣做的,而不是使用With語句

Dim rs as DAO.Recordset 

... 

Set rs = qdf.OpenRecordset(dbOpenSnapshot) 
If rs.EOF Then 
    MsgBox "ERROR. Could not assign surrogate UPC." 
Else 
    MsgBox "Surrogate UPC assigned." 
End If 
+0

- 是的,它是SQL Server。相同的錯誤,相同的地方。 – MAW74656

+0

而替換不會編譯。 – MAW74656

+0

對不起,你使用的是VBA,而不是VB.NET。它改變了它。 –