
いつもお世話になっています。
どなたかわかる方アドバイスいただけないでしょうか?
現在、会社の勤務表を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
を入れる事でやりたい事ができました。
No.1ベストアンサー
- 回答日時:
コードをまるっきり読んでませんが・・・質問内容は判りました
コマンドボタンの使用不可、使用可能の制御は、普通
Currentイベント(レコード移動時)に、初期の記載
条件が変化した際、使用不可、使用可能の制御を行う場合、そのコントロール上のイベントに、記載します
(大体、Currentイベントを呼び出して終わり)
と、言うことで判ります?
イベント発生のCurrentイベントは、フォームを開いた後、レコードのデータを呼び出してくる時にも、レコードが移動して、データを呼び出してくる時にも、発生するイベントで、レコードのデータは、入れ替わった後になってます
アドバイスありがとうございました。
大変感謝しております!!!
アドバイス頂いた方法にてやりたい事ができる
ようになり、一歩前進することができました。
また、何かありましたらよろしくお願いします。
では、失礼します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0でフォルダのアクセス制限...
-
コマンドプロンプトが実行中か...
-
MS-DOSのカーソルキーの設定に...
-
VBでネットワーク上のコンピュ...
-
【PC98x1/国民機】N88 BASIC 6.1
-
dd for windowsで教えてください
-
コンボボックス(最終行取得)
-
PC間の時刻合わせ
-
bashのシェルスクリプトの書き方
-
VBの印刷について
-
webと連携したソフトウェアの作...
-
ホームページ 静的 動的 の動的...
-
Object ARXで
-
コマンドプロンプトでのSCP
-
テキストボックスの値を出力
-
バッチファイルについて
-
マクロ VBA ユーザーフォーム
-
HDDについて
-
メニューによりサブルーチンを...
-
コマンドラインで一定時間処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
Tera Term Proに関する質問です。
-
バッチファイルでキー操作を行う。
-
別のユーザーフォームのコマン...
-
VBA でshell関数を使ってコマン...
-
VBユーザーフォームで時間入力
-
【Teratermマクロ】文字列の一...
-
文字の点滅はどうやるのですか?
-
system関数でのシェル起動について
-
EEPROMのデータの初期化について
-
PowerShell実行結果をデスクト...
-
VBでDosコマンドを動かすには
-
ディスクの空き容量を取得する...
-
コンボボックス(最終行取得)
-
"伴われる"は正しい日本語ですか?
-
コマンドキーがないんですけど...
-
CreateProcessでの実行ファイル...
-
DOSコマンドでポートから受信
おすすめ情報