|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 액세스 버전(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 & "일의 휴일(토,일,공휴일)을 제외한 날짜를 입력하였습니다."
|
|