드로우홀릭 더베이직
안녕하세요.
일반 쿼리에서는 SetTempVar로 변환한 값을 불러올 수 있으나, 크로스탭 쿼리에서는 어떻게 하는지 몰라 질문 드립니다.
간단한 예를 만들어 첨부하오니 답변해주시면 감사하겠습니다.
안녕히 계세요.
이렇게 되면, 열 제목이 그때 그때 달라지게 됩니다.
(이런 것을 '동적으로 변화'한다고 표현합니다.)
따라서, 다음 두 가지 작업을 하셔야 합니다.
1. 쿼리의 ColumnHeading 속성을 그때 그때 알맞게 변경해 줘야 합니다.
2. 폼을 사용한다면, 폼의 컨트롤의 '컨트롤 원본' 속성을, 그때 그때 알맞게 변경해 줘야 합니다.
이 두 가지 작업을 하는 방법을 간략히 설명드릴 수는 있겠습니다만..
이정도 설명으로 구현 가능하실지 모르겠네요.
일단 설명 드려 보겠습니다.
1. 쿼리의 ColumnHeading 속성 변경하기
크로스탭 쿼리를 SQL 보기로 전환해 보면 다음과 비슷합니다.
TRANSFORM Sum(q주문서_내역.금액) AS 금액의합계 SELECT 고객업체.고객업체코드, 고객업체.고객업체명 FROM 고객업체 INNER JOIN (주문서 INNER JOIN q주문서_내역 ON 주문서.주문서번호 = q주문서_내역.주문서번호) ON 고객업체.고객업체코드 = 주문서.고객코드 GROUP BY 고객업체.고객업체코드, 고객업체.고객업체명 PIVOT Format([수주일],"yyyy/mm") In ("2019-01","2019-02")
맨 마지막에 보면 'In ("2019-01","2019-02")' 이라는 부분이 있지요? 이것을 그때 그때 만들어 줘야 합니다.
예를 들어, 2019년 1월부터 3월까지 봐야 한다면, 다음과 같이 만들어 줘야겠지요.
In ("2019-01","2019-02", "2019-03")
그리고, 이렇게 만든 SQL 구문을 쿼리에 적용시켜 줘야 합니다.
CurrentDB("QueryName").SQL = strSQL
2. 폼 컨트롤의 컨트롤 원본 속성 제어하기
일단, 데이터시트 폼을 만듭니다. 폼에 있는 모든 컨트롤의 '컨트롤 원본' 속성은 비워둡니다.
컨트롤 이름을 'txt01', 'txt02' 처럼, 숫자를 이용해서 규칙성 있게 만듭니다.
그리고, 해당 폼의 Open 이벤트 프로시저에 코드를 다음과 유사하게 입력합니다.
txt01.ControlSource="2019-01" txt02.ControlSource="2019-02" txt03.ControlSource="2019-03" ...
이상입니다. 아마, 이 정도 설명만 듣고 구현하기가 쉽지 않으실 겁니다.
일단 시도해 보시고, 잘 모르는 것은 '새 글'로 질문 올려 주세요.
댓글로 계속 질문하는 것 보다는, 그 편이 더 나을겁니다.
그리고, 이 정도 Q&A는, 튜터링이 훨씬 낫습니다.
10~30분 정도면 충분한 설명이 되리라 생각합니다.
크로스탭 쿼리에서는 임시 변수 뿐만 아니라, 매개변수도 제대로 동작하지 않습니다.
쿼리 디자인 보기에서 쿼리 도구 - 디자인 - 표시/숨기기 - 매개 변수 를 클릭하면 매개 변수를 정의하는 창이 표시됩니다.
여기에서 매개 변수를 정의하면 잘 동작할 것입니다.