У меня есть приложение Access, в котором каждый раз, когда пользователь входит в приложение, оно создает временную таблицу для этого пользователя, которая называется «их имя входа в Windows». В одном из моих отчетов мне нужно выполнить запрос с использованием этой таблицы, и я не могу просто сделать запрос и установить его в качестве источника ресурсов отчета, поскольку имя таблицы всегда отличается.
Тогда я попытался программно установить набор записей отчета, выполнив запрос и установив набор записей формы в качестве набора записей запроса. Когда я пробовал это, он продолжал давать мне ошибку о запросе.
Я попытался отладить и обнаружил, что строковая переменная не может содержать весь запрос сразу. Когда я запустил его с точками останова и добавил наблюдение за строковой переменной, он показывает мне, что обрезает запрос где-то посередине.
Ранее я сталкивался с этой проблемой, но это было с запросом UPDATE. Затем я просто разделил его на два запроса и запустил оба по отдельности. Это запрос SELECT, и я не могу разделить его. Пожалуйста, помогите!
Спасибо
Вот что я пытался сделать:
ReturnUserName - это функция в модуле, которая возвращает только идентификатор входа пользователя в систему
Private Sub Report_Open(Cancel As Integer)
Dim strQuery As String
Dim user As String
user = ReturnUserName
strQuery = "SELECT " & user & "_Temp.EmpNumber, [FName] & ' ' & [LName] AS [Employee Name], " & _
"CourseName, DateCompleted, tblEmp_SuperAdmin.[Cost Centre] " & _
"FROM (tblCourse INNER JOIN (" & user & "_Temp INNER JOIN tblEmpCourses ON " & _
user & "_Temp.EmpNumber = EmpNo) ON tblCourse.CourseID = tblEmpCourses.CourseID) " & _
"INNER JOIN tblEmp_SuperAdmin ON " & user & "_Temp.EmpNumber = tblEmp_SuperAdmin.EmpNumber" & _
"WHERE (((" & user & "_Temp.EmpNumber) = [Forms]![Reports]![txtEmpID].[Text])) " & _
"ORDER BY CourseName;"
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim rsCmd As ADODB.Command
Set rsCmd = New ADODB.Command
rsCmd.ActiveConnection = CurrentProject.Connection
rsCmd.CommandText = strQuery
rs.Open rsCmd
Me.Recordset = rs
rs.Close
End Sub
Это то, что содержит strQuery, когда я добавляю точку останова на rsCmd.CommandText = strQuery
:
SELECT myusername_Temp.EmpNumber, [FName]
& '' & [LName] AS [Имя сотрудника],
CourseName, DateCompleted,
tblEmp_SuperAdmin. [Учетный отдел] ОТ
(tblCourse INNER JOIN (myusername_Temp
ВНУТРЕННЕЕ СОЕДИНЕНИЕ tblEmpCourses ON
myusername_Temp.EmpNumber = EmpNo) ON
tblCourse.CourseID =
(это всего одна строка, но я написал это так, потому что текст курсивом выделен подчеркиванием)
И ошибка, которую я получаю, говорит «Ошибка времени выполнения: присоединение не поддерживается».