SQL ExecuteQuery 3061错误消息

时间:2017-02-23 19:27:03

标签: sql ms-access access

我有这个:

sql = "INSERT INTO instroom ( " & _
        "team_id, " & _
        "proces_id, " & _
        "datum, " & _
        "aantal_instroom, " & _
        "ctime, " & _
        "cuser, " & _
        "mtime, " & _
        "muser " & _
        ") "
    sql = sql & "SELECT " & _
        "team_id, " & _
        "proces_id, " & _
        "datum, " & _
        "SUM(aantal_instroom), " & _
        "#" & Format(MTime, "yyyy-mm-dd hh:mm:ss") & "#, " & _
        "" & mod_global.RealUserID & ", " & _
        "#" & Format(MTime, "yyyy-mm-dd hh:mm:ss") & "#, " & _
        "" & mod_global.RealUserID & " " & _
        "FROM tmp_import_instroom " & _
        "WHERE userid = '" & EscapeString(LCase(mod_global.RealUser)) & "' " & _
        "AND team_id <> 0 " & _
        "AND proces_id <> 0 "
    sql = sql & "GROUP BY team_id, proces_id, datum " & _
        "HAVING SUM(aantal_cases) > 0 "

当它通过时:

-- Execute Query
Private Function executeSQL(ByVal sql As String, Optional ByVal autoCommit As Boolean = False) As Boolean
On Error GoTo executeSQLError

executeSQL = False
If mod_global.DevStart Then QueryNum = QueryNum + 1

If mod_global.DevStart Then Call saveQueryToFile(sql)

' Check if database is open
If Not testConn Then
    Call openDB
End If

If startTrans Then
    db.Execute sql
    executeSQL = True

    If autoCommit Then
        executeSQL = commitDB
    End If
End If

DoEvents

Exit Function
executeSQLError:
Debug.Print ("executeSQL - " & Err.Number & " : " & Err.Description)
Call writeToLog("executeSQL - " & Err.Number & " : " & Err.Description)
End Function

我收到错误消息

  

“运行时错误3061:参数太少。预计为1.”。

我错过了什么?我做了debug.print但仍然找不到错误。

以下是来自tmp_import_instroom的列名:

enter image description here

debug.print

的结果
insert into instroom (
   team_id
 , proces_id
 , datum
 , aantal_instroom
 , ctime
 , cuser
 , mtime
 , muser
 )
select 
   team_id
 , proces_id
 , datum
 , SUM(aantal_instroom)
 , #2017-02-23 20:22:33#
 , 310
 , #2017-02-23 20:22:33#
 , 310
from tmp_import_instroom
where userid = 'xg30222' 
  and team_id <> 0 
  and proces_id <> 0
group by team_id
 , proces_id
 , datum
having SUM(aantal_cases) > 0

1 个答案:

答案 0 :(得分:0)

除非它没有显示,否则表中没有ctime,cuser,mtime或muser。因此,您需要为计算字段设置别名。

sql = sql & "SELECT " & _
    "team_id, " & _
    "proces_id, " & _
    "datum, " & _
    "SUM(aantal_instroom) as aantal_instroom, " & _
    "#" & Format(MTime, "yyyy-mm-dd hh:mm:ss") & "# as ctime, " & _
    "" & mod_global.RealUserID & " as cuser, " & _
    "#" & Format(MTime, "yyyy-mm-dd hh:mm:ss") & "# as mtime, " & _
    "" & mod_global.RealUserID & " as muser " & _
    "FROM tmp_import_instroom " & _
    "WHERE userid = '" & EscapeString(LCase(mod_global.RealUser)) & "' " & _
    "AND team_id <> 0 " & _
    "AND proces_id <> 0 "