Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不支持联接表达式_Sql_Vba_Ms Access - Fatal编程技术网

Sql 不支持联接表达式

Sql 不支持联接表达式,sql,vba,ms-access,Sql,Vba,Ms Access,我收到错误3296连接表达式不受支持的访问错误,但我似乎无法找出原因。。。有什么想法吗 Public Sub BuildTempTable() If IsDebugMode = 0 Then On Error GoTo BuildTempTable_Error Dim strSQL As String CurrentDb.Execute ("DELETE *FROM tblTempCalendar") strSQL = "INSERT INTO tblTem

我收到错误3296连接表达式不受支持的访问错误,但我似乎无法找出原因。。。有什么想法吗

Public Sub BuildTempTable()
    If IsDebugMode = 0 Then On Error GoTo BuildTempTable_Error

    Dim strSQL As String

    CurrentDb.Execute ("DELETE *FROM tblTempCalendar")

    strSQL = "INSERT INTO tblTempCalendar ( ActivityID, Activity, ActivityCompleted, ActivityTime, ActivityDate, ActivityType, ActivityDesc ) " _
           & " SELECT tblActivity.ActivityID, IIf(IsNull([tblActivity].[ContactID])=False,[tblContact].[LastName] & ', ' & [tblContact].[FirstName] & ', ' & tblContact.Company,IIf(IsNull([tblActivity].[EmployeeID])=False,[tblEmployee].[EmployeeLastName] & ', ' & [tblEmployee].[EmployeeFirstName],'N/A')) AS Activity, tblActivity.ActivityCompleted, tblActivity.ActivityTime, tblActivity.ActivityDate, tblActivity.ActivityType, IIf(IsNull([activitytime]),'',[activitytime] & '   ') & IIf(IsNull([tblActivity].[employeeid]),'','Employee: ' & [tblEmployee].[employeelastname] & ', ' & [tblemployee].[employeefirstname] & '   ') & IIf(IsNull([tblActivity].[ContactID]),'','Contact: ' & [tblContact].[LastName] & ', ' & [tblContact].[FirstName] & '   ') & IIf(IsNull([tblActivity].[Description]),'','Description: ' & [tblActivity].[Description]) AS ActivityDesc " _
           & " FROM ((tblActivity LEFT JOIN tblEmployee ON tblActivity.EmployeeID = tblEmployee.EmployeeID) LEFT JOIN tblEmployee ON tblActivity.EmployeeID = tblEmployee.EmployeeID) "
    strSQL = strSQL & " WHERE format(ActivityDate,'yyyym') = " & intCalYear & intCalMonth
    If Nz(Me.comboFilterCompleted, 999) <> 999 Then
        strSQL = strSQL & " AND ActivityCompleted = " & Me.comboFilterCompleted
    End If
    If Nz(Me.comboFilterType, "(All)") <> "(All)" Then
        strSQL = strSQL & " AND ActivityType = '" & Me.comboFilterType & "'"
    End If
    If Nz(Me.comboFilterEmployee, 0) <> 0 Then
        strSQL = strSQL & " AND tblActivity.EmployeeID = " & Me.comboFilterEmployee
    End If

    If Nz(Me.comboFilterCompleted, 999) <> 999 Or Nz(Me.comboFilterType, "(All)") <> "(All)" Or _
       Nz(Me.comboFilterEmployee, 0) <> 0 Or strRecordSource = "qryActivityListFilter" Then
        Me.cmdShowAll.Visible = True
    Else
        Me.cmdShowAll.Visible = False
    End If

    CurrentDb.Execute (strSQL)

BuildTempTable_Exit:
    Exit Sub

BuildTempTable_Error:
    Call ErrorLog(Err.Description, Err.Number, Me.Name, Erl, "BuildTempTable")
    Resume BuildTempTable_Exit
End Sub

ON条件需要引用唯一的项。添加一个“as tblemployee2”,并将ON更改为引用tblemployee2.employeeid

FROM   ((tblactivity
     LEFT JOIN tblemployee
            ON tblactivity.employeeid = tblemployee.employeeid)
    LEFT JOIN tblemployee  as tblemployee2
           ON tblactivity.employeeid = tblemployee2.employeeid)

你能发布Debug.Print strsqls的输出吗?为什么对同一个表2使用left jointimes@VigneshKumar这没什么问题,但我希望至少其中一个上面会有一个别名。我还希望这里涉及一些分隔符
strSQL=strSQL&“WHERE format(ActivityDate,'yyyyym')=”&intCalYear&intCalMonth
当我将sql命令作为字符串时,我总是首先让它作为实际的查询来工作,以确保查询本身是正确的。
FROM   ((tblactivity
     LEFT JOIN tblemployee
            ON tblactivity.employeeid = tblemployee.employeeid)
    LEFT JOIN tblemployee  as tblemployee2
           ON tblactivity.employeeid = tblemployee2.employeeid)