사용자가 응용 프로그램을 시작할 때마다 'windows 로그인 이름'_Temp이라는 해당 사용자의 임시 테이블을 만듭니다. 내 보고서 중 하나에서 해당 테이블을 사용하여 쿼리해야하며 테이블의 이름이 항상 다르므로 쿼리를 만들어 보고서의 리 소스 소스로 설정할 수는 없습니다.VBA 문자열 길이 문제
내가 시도한 다음 프로그래밍 방식으로 쿼리를 실행하고 폼의 레코드 집합을 쿼리의 레코드 집합으로 설정하여 보고서의 레코드 집합을 프로그래밍 방식으로 설정했습니다. 이것을 시도 할 때 쿼리에 대한 오류가 발생했습니다.
디버깅을 시도했는데 문자열 변수가 전체 쿼리를 한 번에 포함 할 수 없음을 발견했습니다. 내가 브레이크 포인트로 달리고 문자열 변수에 대한 시계를 추가하면 중간에 쿼리가 끊어지는 것을 알 수있다.
이전에이 문제가 발생했지만 이는 UPDATE 쿼리와 관련이 있습니다. 그런 다음 두 개의 쿼리로 분할하고 두 개를 따로 실행했습니다. 이 중 하나는 SELECT 쿼리이며이를 나눌 방법이 없습니다. 도와주세요!
감사합니다
Heres는 내가 일을 시도했다 :
ReturnUserName 사용자이 strQuery에 포함 된 내용을
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
의 바로 로그인 ID를 반환하는 모듈의 기능입니다 rsCmd.CommandText = strQuery
에 중단 점을 추가합니다.
SELECT myusername_Temp.EmpNumber, [FName] & ' ' & [LName] AS [Employee Name], CourseName, DateCompleted,
tblEmp_SuperAdmin.[Cost Centre] FROM
(tblCourse INNER JOIN (myusername_Temp INNER JOIN tblEmpCourses ON
myusername_Temp.EmpNumber = EmpNo) ON tblCourse.CourseID=
(모두 한 줄이지만 텍스트 밑줄이 밑줄로 표시되어 있으므로이 글을 썼습니다.)
오류가 발생하면 런타임 오류 : 가입이 지원되지 않습니다.
임시 테이블은 사용자 이름을 보유하는 유일한 목적입니까? 또는 사용자에게 연결된 다른 데이터가 있습니까 – CaRDiaK
일부 코드를 게시하십시오. 수정하기가 쉽지 않을 것으로 생각됩니다. – Fionnuala
임시 테이블에 다른 데이터도 있습니다. – zohair