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

 황동준 (bogri2000)

추천:  0
파일:     240131_날짜자동입력_휴일제외.accdb (512KB) 조회:  159
제목:   [RE]연도, 월별 날짜 자동계산이 가능할까요?
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 액세스 버전(95,97,2000,xp,2003,2007): 2003

* 아래줄에 질문을 작성하세요 >> 

안녕하세요.

날짜별로 데이터를 입력하는 프로그램을 제작중인데

날짜를 자동계산해서 필드값에 넣을 수 있을까요?

예를들어 

"작업"이라는 테이블에 "날짜"필드가 있고 

폼에서 "2024년 2월" 이라는 값을 입력하고 실행하면

2024년 2월 1일
.
.
.
.
2024년 2월 29일

이런식으로 테이블에 2024년 2월에 해당하는 모든 날짜값이 

"작업"테이블에 "날짜"필드로 들어갈 수 있도록요.

가능하다면 꼭 좀 부탁드립니다..!! ㅠ
==============[김민기님 글에 대한 답변입니다]==============


    'DAO 레코드 셋
    Dim rs As DAO.Recordset
    Set rs = Me.f_작업하위.Form.Recordset
    
    '하위폼에 이미 데이터가 있으면 확인 후 진행
    If rs.RecordCount > 0 Then
        '아니오를 누르면 실행 중단
        If MsgBox("해당월에 이미 데이터가 있습니다." & vbLf & "계속하여 추가 하시겠습니까?", vbYesNo, "확인") = vbNo Then
            Exit Sub
        End If
    End If
    
    '1일부터 이번달 말일까지의 데이터 입력
    For i = 1 To Format(DateSerial(Year(Me.txtYM), Month(Me.txtYM) + 1, 0), "dd")
        rs.AddNew
        rs!날짜 = DateSerial(Year(Me.txtYM), Month(Me.txtYM), i)
        rs.Update
    Next i
    
    Set rs = Nothing

==============[황동준님 글에 대한 답변입니다]==============

ㅇ 휴일을 지정하는 테이블이 필요합니다.


    'DAO 레코드 셋
    Dim rs As DAO.Recordset
    Set rs = Me.f_작업하위.Form.Recordset
    
    '하위폼에 이미 데이터가 있으면 확인 후 진행
    If rs.RecordCount > 0 Then
        '아니오를 누르면 실행 중단
        If MsgBox("해당월에 이미 데이터가 있습니다." & vbLf & "계속하여 추가 하시겠습니까?", vbYesNo, "확인") = vbNo Then
            Exit Sub
        End If
    End If
    
    '패스날짜 카운트용
    Dim passDay
    passDay = 0
    
    '1일부터 이번달 말일까지의 데이터 입력
    For i = 1 To Format(DateSerial(Year(Me.txtYM), Month(Me.txtYM) + 1, 0), "dd")
        '해당 날짜를 변수에
        Dim sDate As Date
        sDate = DateSerial(Year(Me.txtYM), Month(Me.txtYM), i)
        '토요일,일요일 및 t_공휴일 테이블에 저장된 휴일일 경우 패스
        If Weekday(sDate) = 7 Or Weekday(sDate) = 1 Or DLookup("날짜", "t_공휴일", "날짜 = #" & sDate & "#") Then
            '패스한 날짜 개수 더하기
            passDay = passDay + 1
        Else
            rs.AddNew
            rs!날짜 = DateSerial(Year(Me.txtYM), Month(Me.txtYM), i)
            rs.Update
        End If
    Next i
    
    Set rs = Nothing
    
    Me.f_작업하위.Requery
    
    MsgBox "총 " & passDay & "일의 휴일(토,일,공휴일)을 제외한 날짜를 입력하였습니다."
 
[불량 게시물 신고]  
김민기토 일 주말만 제외되고 공휴일은 출력되네요.

이것만해도 만족합니다!

감사합니다!!
02-01 (16:27)
삭제 ■신고
황동준첨부파일 확인 하시지 않으셨나요? 공휴일 테이블에 등록된 날짜는 제외됩니다.02-01 (17:35)
삭제 ■신고
김민기아 첨부파일이 있었군요;

공휴일도 처리됐습니다.

감사합니다!!!
02-02 (08:43)
삭제 ■신고
        
  

작성일 : 2024-01-31(18:11)
최종수정일 : 2024-01-31(18:11)
 


 ◎ 관련글

  제 목   작성자   날짜
연도, 월별 날짜 자동계산이 가능할까요? 김민기 2024-01-30
[RE]연도, 월별 날짜 자동계산이 가능할까요? 황동준 2024-01-31
[RE]연도, 월별 날짜 자동계산이 가능할까요? 황동준 2024-01-31