Ok 여기에서 2010에 액세스하십시오.하위 폼 소스 개체로 매개 변수가있는 크로스 탭 쿼리 표시
크로스 탭이 있는데,이를 참조로 사용하는 쿼리에서 폼 컨트롤에 액세스하는 매개 변수가있는 "TestCrosstab"을 호출 할 수 있습니다. 그것은 다음과 같습니다
위에서 볼 수 있듯이 그것은 원본 쿼리,라고 있어요PARAMETERS [Forms]![TestForm]![TextDaysPast] Short;
TRANSFORM max(val) AS MaxValue
SELECT col AS Criteria
FROM (SELECT [Date], 'Crosstab Column Name 0' as Col, [Query Column Name 0] as val
FROM TestQuery
UNION ALL
SELECT [Date], 'Crosstab Column Name 1' as Col, [Query Column Name 1] as val
FROM TestQuery
UNION ALL
'... etc ...
)
GROUP BY col
PIVOT [Date];
"TestQuery,"그것은 다음과 같습니다
SELECT SourceDatabase.Date,
Count(*) AS [Query Column Name 0],
Sum(IIf(Stuff=Stuff And Stuff=Stuff,1,0)) AS [Query Column Name 1],
'... etc ...
FROM SourceDatabase INNER JOIN SecondDatabase ON SourceDatabase.ID = SecondDatabase.ID
WHERE (((SourceDatabase.Date) Between Date() And Date()-Forms!TestForm!TextDaysPast))
GROUP BY SourceDatabase.Date;
그들은 모두 잘 작동 사용자가 숫자로 들어갑니다 양식 컨트롤 "TextDaysPast"및 수동으로 쿼리를 "팝업"으로 실행합니다.
위의 크로스 탭을 서브 폼의 원본 개체로 연결하여 표시하기위한 것입니다. "TextDaysPast"으로 번호를 입력하고으로 쿼리를 실행하면
Me.SubformDisplay.SourceObject = "Query.TestCrosstab"
Me.SubformDisplay.Requery
: VBA, 사용자 후 폼에 교차를 첨부라고, 그 중에서도에 숫자 "TextDaysPast"이 라인을 입력한다 명령 단추를 누르면 크로스 탭에 표시되지 않는 양식이 올바르게 작동합니다 (오류 없음). 원본 쿼리를 정적 "WHERE"로 변경하면 크로스 탭에서 "PARAMETERS"에 대한 필요성이 사라지고 일반적으로 하위 폼 원본 개체로 표시됩니다. "매개 변수"를 사용할 때 크로스 탭이 표시되지 않습니다.
이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 원본 쿼리와 크로스 탭을 하나의 큰 괴물로 결합하면이 문제를 해결할 수 있습니까?
입력 해 주셔서 감사합니다.
내가 알 수있는 한, 문제는 매개 변수 문입니다. VBA에서 크로스 탭에 대한 SQL을 작성하고 결과를 표시하는 방법에 대해 어떻게 생각하십니까? 이렇게하면 SQL에 기록되기 때문에 매개 변수가 필요하지 않습니다. – Fionnuala
다른 어떤 솔루션보다 좋을 것 같습니다. 내 쿼리에있는 구문을 사용하여 VBA에 "포트"할 수 있습니까? 양식 컨트롤 인 "TextDaysPast"는 양식의 VBA에서 쉽게 액세스 할 수 있으므로 크로스 탭에는 매개 변수가 필요하지 않습니다. 맞습니까? – Phizon
예, 단지 vba에 따옴표를주의해서 복사하고 TextDaysPast에 대한 참조를 추가하십시오 :'WHERE Date() - "& Me.TextDaysPast &"...'질의를 유지하고 sql :'CurrentDB.Querydefs ("MyXTab") .SQL = sql' – Fionnuala