드로우홀릭 더베이직
정말 감사합니다. 막혔던 속이 시원하게 뚤리는 기분입니다....
자세하게 설명해주셨는데 말씀대로 여러사람이 사용하는 환경이라면 사용하면 안될것 같습니다....
마지막에 알려주신 방법대로 구현해보려고하는데요...
1. 견적서ID 사용자ID -> 필드형식이 자동으로 증분 되는 값을 말씀하시게 맞을까요?
2. 테이블을 조인한다는 말씀은 쿼리를 만들라는 말씀이실까요..?
3. 2번이 맞다면 이 쿼리를 데이터 원본으로 견적서 폼을 만들고 -> 댓글 상단에 알려주신 대로 구현해보면 될까요??
질문이 많네요...
일단 구현해보고.... 길을 잃으면... 10분 찬스를 써보도록 하겠습니다. ㅎ (교제 구매자 입니다... ㅎㅎ)
좋은 질문이네요~
액세스에서 결과물을 PDF로 만들 때, 'OutputTo' 라는 명령을 사용합니다.
다음과 같이 사용합니다.
'파일 이름을 그때 그때 사용자가 지정하게 하고 싶을 때 docmd.OutputTo acOutputReport,"보고서이름", acFormatPDF '파일 이름을 자동으로 지정하게 하고 싶을 때 docmd.OutputTo acOutputReport,"보고서이름", acFormatPDF, "경로_및_파일이름" '파일 이름을 자동으로 지정하게 하고, PDF 생성 후 바로 열리도록 하고 싶을 때 docmd.OutputTo acOutputReport,"보고서이름", acFormatPDF, "경로_및_파일이름", True
더 많은 옵션이 있으니, 액세스 도움말 꼭 참고하시고요~
네, 좋은 질문입니다.
실무에서 많이 궁금해 하실 만한 질문입니다.
1. 보고서 폼을 열 때, 모든 체크박스가 체크되어 있지 않도록 설정하기
보고서 폼이 열릴 때, '견적서' 테이블의 모든 체크박스를 체크되지 않은 상태로 바꾸어 줘야 합니다.
2. 보고서 작업 완료 후, 체크박스가 자동으로 체크되어 있지 않도록 설정하기
이것은 명령 자체는 1번 작업과 동일합니다만, 이벤트를 어디에 설정하느냐가 관건입니다.
프리뷰를 종료하였을 때 자동으로 하는 것은 썩 좋지 않습니다.
(프리뷰를 하고, 조금 더 추가해서 선택하고 싶을 때도 있을 텐데.. 선택이 초기화 되어 있다면 짜증이 좀 나겠죠.)
이런 상황은 보고서 폼(그러니까 보고서를 열기 위한 대화상자 폼)이 닫힐 때, 해당 작업을 해 주면 됩니다.
추가로, 개념적인 설명을 좀 덧붙여 보겠습니다.
보통 '체크박스'를 이용해서 불규칙적인 '선택'을 하기 위해서 이런 테크닉을 사용하는데..
이 방식의 가장 큰 문제는 내가 선택하는 행동이 '레코드를 수정'한다는 데 있습니다.
일단 저희 회사에서는 이런 방식으로는 절대 사용하지 않습니다.
'레코드를 수정'하는 것은 정말 필요할 때만 해야 합니다.
단순히 내가 어떤 항목을 선택했는데, 그 결과가 '레코드를 수정'하는 것으로 되면 곤란합니다.
(지면 관계상 자세히 말씀드리긴 어렵지만 '쓰기 충돌 오류'도 자주 발생하고요.)
(내가 '선택'하는 것은 내 PC의 메모리에서만 이루어져야 하지, 내가 '선택'하는 것이 DB에 반영되는 건 좋지 않습니다.)
또, 여러 사람이 동시 사용하는 시스템이라면, 절대로 이렇게 사용해서는 안 됩니다.
그래서 저희는 보통 이런 상황이라면 '목록 상자'를 사용합니다.
여러 항목을 선택할 수 있는 목록 상자를 사용합니다.
그런데, 이러한 목록 상자는 사용 편의성이 좀 떨어지긴 합니다.
특히 목록이 매우 길 때, 키 한 번 잘못 누르면 선택된 것이 싹 초기화 되기도 하죠.
그래서, 불편하지만 정 체크박스를 사용해야 한다면.. 다음과 같은 테크닉을 사용합니다.
이 방식은 여러 사람이 동시 사용하는 시스템이라고 해도 잘 동작합니다.
1. 별도의 '선택 전용' 테이블을 만듭니다.
여기에서는 '견적서_선택' 테이블을 만듭니다.
필드는 다음과 같습니다.
견적서ID 사용자ID 선택
2. 이렇게 하고, 이 테이블과 '견적서' 테이블을 조인해서 표시해 줍니다.
이렇게 하면, 내가 '선택'하게 되면, '견적서 선택' 테이블에만 선택값이 반영됩니다.
'사용자ID'도 있기 때문에, 여러 사용자가 사용하더라도 별 문제가 없습니다.