- ベストアンサー
Accessでの締め切り作成方法に困っています
- Access2000で締め切りを設定する方法について教えてください。
- カレンダーテーブルを作成しており、休日フラグを設定しています。しかし、祝日や年末年始などの休日の扱いが難しいです。
- VBAで締め切りを実装する方法をご教授いただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
' 流れとしては次のようになります。 ' どこで現在時刻を取得するのかわかりませんが、サンプルでは ' Sub Start の Now で取得しています。 ' その取得した現在時刻を GetDate に渡して、以後 それを元に ' 日付計算をしています。。 ' エラー処理はきっちりとはしていないので想定外のデータが入 ' った時やデータが存在しない場合、落ちる場合があります。 ' レベル的には ACCESS VBAの入門書に載っている範囲なので一度 ' お求めになってはどうでしょうか? ' テーブルは [日付]-[休日フラグA]-[休日フラグB] などのフィー ' ルドを前提としています。 ' 休日フラグはAB共にチェックを入れてください。 '--------------------------------------------------------------- Private Sub Start() MsgBox "取得する日付は " & GetDate(Now) & " です。" End Sub '--------------------------------------------------------------- '--------------------------------------------------------------- Public Function GetDate(pTime As Date) As String Dim myRSAs ADODB.Recordset Dim myCN As New ADODB.Connection Dim SQL As String Dim 時刻 As String SetTodayValid -1 時刻 = Format(pTime, "HH:MM:SS") GetDate = "有効な日付がえられませんでした。" SQL = "SELECT * FROM Calender WHERE 休日フラグB=0 ORDER BY 日付 ASC" Set myRS= New ADODB.Recordset Set myCN = CurrentProject.Connection myRS.Open SQL, myCN, adOpenKeyset, adLockOptimistic If myRS.RecordCount > 0 Then myRS.MoveFirst myRS.Find "日付=" & Date If 時刻 > #3:00:00 PM# Then myRS.MoveNext '今日より前の日付がほしければ myRS.MovePrevious myRS.MoveNext Else myRS.MoveNext End If GetDate = myRS!日付 End If SetTodayValid 0 myRS.Close Set myRS = Nothing myCN.Close Set myRS = Nothing End Function '--------------------------------------------------------------- '--------------------------------------------------------------- Private Sub SetTodayValid(pFunc As Boolean) Dim myRS As ADODB.Recordset Dim myCN As New ADODB.Connection Dim SQL As String SQL = "SELECT * FROM Calender WHERE 日付 = #" & Date & "#" Set myCN = CurrentProject.Connection Set myRS= New ADODB.Recordset myRS.Open SQL, myCN, adOpenKeyset, adLockOptimistic If myRS.RecordCount > 0 Then Select Case pFunc Case -1 myRS!休日フラグB = 0 myRS.Update Case 0 If myRS!休日フラグA = -1 Then myRS!休日フラグB = -1 myRS.Update End If End Select End If myRS.Close Set myRS = Nothing myCN.Close Set myRS = Nothing End Sub '---------------------------------------------------------------
その他の回答 (1)
DAOもしくはADOを使ってレコードセット処理はできますか? SQLは書けますか?
補足
少しだけ書いた事はありますが、自信はないです。 是非、教えてください。
お礼
お返事が遅くなってすいませんでした。 ご回答いただきましたものを参考にさせていただき 見事、締切を作ることができました。 やはり、SQLをちゃんと勉強しなくっちゃって痛感しました。 ありがとうございました。