나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황동준 (bogri2000)

추천:  0
파일:     230308_쿼리SQL변경vba.accdb (516KB) 조회:  483
제목:   [RE]쿼리의 레코드 소스 변경하는 방법
     
  ㅇ상황

 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. 편의성을 위해 옵션 그룹이 최초 아무것도 선택되지 않도록 합니다.
 
[불량 게시물 신고]  
WinWin아 ! 무슨 말씀인지 200%로 이해했습니다. 전에 알려주신 방식이네요.....정말 고맙습니다~~~. 벌써 몇년째 도움을 받고 있는지 모르겠네요!! < 꾸벅 !!>03-08 (09:37)
삭제 ■신고
WinWin자세한 주석 설명 고맙습니다 !!03-08 (11:46)
삭제 ■신고
        
  

작성일 : 2023-03-08(08:59)
최종수정일 : 2023-03-08(09:02)
 


 ◎ 관련글

  제 목   작성자   날짜
쿼리의 레코드 소스 변경하는 방법 WinWin 2023-03-06
[RE]쿼리의 레코드 소스 변경하는 방법 황동준 2023-03-08