access 2003 コマンドボタンのEnabledイベントについて
いつもお世話になっています。
どなたかわかる方アドバイスいただけないでしょうか?
現在、会社の勤務表をaccess2003にて作成しています。
勤務状況を保存する勤務表テーブルと入力用コントロールが
複数あるフォーム1フォームがあります。
出社時間や退社時間、作業内容を入力し登録コマンドボタンの
イベントで入力内容を勤務表テーブルに入力し、同時に
その月1ヶ月分の勤務状況をフォーム1フォーム上のリストボックス
に表示させています。
今回は
表示している1カ月分の勤務に対して前月、翌月の勤務を表示する
コマンドボタンを作成しました。
前月は問題なくできたのですが、翌月に関してはシステム時間に
対して未来の月に関しては表示させない(コマンドボタンを使用不可
にする制限をつけ)ようとしているのですが、できません。
翌月コマンドボタンのイベントで未来の月を表示させようとした時に
使用不可にしようとしても翌月コマンドボタンのイベントで
翌月コマンドボタンを使用不可にはできないみたいですし、
どうにもこまっています。
なにかいい案ありませんでしょうか?どなたかお願いします。
ちなみに翌月ボタンに関するコードです。
'翌月ボタンに関するイベント
Private Sub コマンド89_Click()
DoCmd.SetWarnings False
Dim yokugetucount
Dim yokugetu
yokugetucount = DCount("*", "勤務表", "[ユーザー名] = [Forms]![フォーム1]![コンボ56] AND [日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)")
If yokugetucount > 0 Then
Me!リスト76.RowSourceType = "Table/Query"
Me!リスト76.RowSource = "select id,format([日付],'mm/dd'),曜日,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 where [ユーザー名] = [forms]![フォーム1]![コンボ56] and ([日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)) ORDER BY 日付;"
Else
yokugetu = Format(DateSerial(Year(Calendar6), Month(Calendar6) + 1, 1), "yyyy/mm")
Select Case Right(yokugetu, 2)
Case 1, 3, 5, 7, 8, 10, 12
X = 31
Case 4, 6, 9, 11
X = 30
Case 2
If IsDate(yokugetu & "/29") = True Then
X = 29
Else
X = 28
End If
End Select
For C = 1 To X
Work1 = yokugetu & "/" & Right("00" & C, 2)
Work2 = Format(yokugetu & "/" & Right("00" & C, 2), "aaa")
kakunin = DCount("*", "勤務表", "[ユーザー名] =
[Forms]![フォーム1]![コンボ56] AND 日付 = #" & Work1 & "#")
If (kakunin = 0) And (Me!コンボ56 <> "") Then
DoCmd.RunSQL "Insert into 勤務表(ユーザー名,日付,曜日) values ([forms]![フォーム1]![コンボ56],#" & Work1 & "#,'" & Work2 & "')"
End If
Next
End If
Me!リスト76.RowSourceType = "Table/Query"
Me!リスト76.RowSource = "select id,format([日付],'mm/dd'),曜日,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 where [ユーザー名] = [forms]![フォーム1]![コンボ56] and ([日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)) ORDER BY 日付;"
Calendar6 = DateSerial(Year(Calendar6), Month(Calendar6) + 1, 1)
テキスト88 = Calendar6
DoCmd.SetWarnings True
End Sub
前月ボタンはEnd Subの前に
If DateSerial(Year(Calendar6), Month(Calendar6) + 1, Day(Calendar6)) > DateSerial(Year(Date), Month(Date), Day(Date))
Then
コマンド89.Enabled = False
Else
コマンド89.Enabled = True
End If
を入れる事でやりたい事ができました。
お礼
chie65535様 アドバイスありがとうございます! ご指摘の行の 1 を num に置き換えたところうまくいきました。