|
ㅇ상황
1) 테이블에는 Temp, Live 2개가 있고, 옵션박스에도 Temp, Live 로 되어 있습니다
2) 쿼리1은 테이블 Temp를 레코드 소스로 되어 있고,
이 쿼리1은 여러개의 다른 쿼리에서 사용하고 있죠
즉, Temp Table -> 쿼리 1 -> 쿼리2~~~~10
ㅇ질문
폼의 옵션박스에서 "Live", "Temp" 선택에 따라 쿼리1의
레코드 소스 테이블도 "Live" or "Temp"로 변경하고 싶습니다
쿼리 1의 레코드소스 테이블이 달라짐에 따라
그 이하 쿼리2 ~~~10 등 여러개는 자동으로 결과값이 달라지겠죠,,,
부탁드립니다 ~
==============[WinWin님 글에 대한 답변입니다]==============
1. 'Live' 및 'Temp' 테이블의 구조가 같아야 합니다.
-> Live는 성별 , Temp는 남여로 되어있음.
2. '쿼리1'을 원본으로 해야 하므로 쿼리 2,3,4 의 FROM 뒤에 '쿼리1'이 와야 됩니다.
-> 'Temp'로 되어있는 부분 전부 '쿼리1'로 변경
3. 아래 VBA코드로 '쿼리1'의 SQL을 변경합니다.
'열려있는 쿼리를 모두 닫습니다.
DoCmd.Close acQuery, "쿼리1"
DoCmd.Close acQuery, "쿼리2직업별"
DoCmd.Close acQuery, "쿼리3성씨별"
DoCmd.Close acQuery, "쿼리4남여별"
'SQL문을 입력할 변수
Dim strSQL As String
'옵션상자 결과에 따라 SQL문 변경 및 알림 메세지 송출
'Select * 또는 Select ID, 이름, 직업, 남여 From ...
If Me.Option = 1 Then
strSQL = "SELECT * FROM Temp"
MsgBox "Data Soucre = Temp "
ElseIf Me.Option = 2 Then
strSQL = "SELECT * FROM Live"
MsgBox "Data Soucre = Live "
End If
'쿼리 SQL 변경
CurrentDb.QueryDefs("쿼리1").SQL = strSQL
'쿼리 실행
DoCmd.OpenQuery "쿼리2직업별"
DoCmd.OpenQuery "쿼리3성씨별"
DoCmd.OpenQuery "쿼리4남여별"
4. 편의성을 위해 옵션 그룹이 최초 아무것도 선택되지 않도록 합니다.
|
|