Как уже упоминалось, поскольку таблицы в SELECT
и INSERT
одинаковы, скорее всего, вы хотите запустить UPDATE
с IIF
условной логикой c. Однако, поскольку вы используете 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
Конечно. если row включает в себя все строки данных, то l oop, параметр или даже QueryDef не требуются:
db.Execute "UPDATE QA09_Adj q SET q.EV_DebCred = IIF(q.Debito_Credito_1 = 'C', 'D', 'C')", dbFailOnError