![](/img/trans.png)
[英]I'm having this error in ms access query input must contain at least one table or query
[英]MS Access Query Input must contain at least one table or query
在運行以下代碼部分時需要幫助
db.Execute "ALTER TABLE QA09_Adj ADD COLUMN EV_DebCred text;"
Dim debCred As String
For nId = 1 To rows
strSQL = "SELECT Debito_Credito_1 FROM QA09_Adj WHERE Id = "
Set rs = db.OpenRecordset(strSQL & nId)
debCred = rs!Debito_Credito_1
rs.Close
Set rs = Nothing
If debCred = "C" Then
strSQL = "INSERT INTO QA09_Adj (EV_DebCred) VALUES ('D') WHERE Id = "
Set qdf = db.CreateQueryDef("", strSQL & nId)
qdf.Execute dbFailOnError
Else
strSQL = "INSERT INTO QA09_Adj (EV_DebCred) VALUES ('C') WHERE Id = "
Set qdf = db.CreateQueryDef("", strSQL & nId)
qdf.Execute dbFailOnError
End If
Next nId
End Sub
嘗試了幾種變體都沒有成功。 調試顯示錯誤qdf.Execute dbFailOnError上提到的錯誤
謝謝!
如前所述,由於SELECT
和INSERT
中的表是相同的,因此您可能希望使用IIF
條件邏輯運行UPDATE
。 但是,由於您使用的是 QueryDefs,因此請考慮正確的參數化而不是串聯:
' PREPARED STATEMENT
strSQL = "PARAMETERS [paramId] LONG;" _
& " UPDATE QA09_Adj q" _
& " SET q.EV_DebCred = IIF(q.Debito_Credito_1 = 'C', 'D', 'C')" _
& " WHERE Id = [paramId];"
Set qdf = db.CreateQueryDef("", strSQL) ' INITIALIZE QUERYDEF
For nId = 1 To rows
qdf!paramId = nId ' BIND PARAMETER
qdf.Execute dbFailOnError ' EXECUTE ACTION
Next nId
Set qdf = Nothing ' RELEASE RESOURCE
當然。 如果rows包含所有數據行,則不需要循環或參數甚至 QueryDef:
db.Execute "UPDATE QA09_Adj q SET q.EV_DebCred = IIF(q.Debito_Credito_1 = 'C', 'D', 'C')", dbFailOnError
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.