0

私は投薬管理アプリを書いています。メイン テーブル名は ResidentMedications です。2 番目のテーブル名は Resident24HourTable です。私のメイン フォームは ResidentMedicationsExtended で、サブフォームは Resident24HourPeriod です。Resident24HourPeriod には、1 日の各時間に 1 つずつ、計 24 のチェック ボックスが含まれています。(12A、1A、2A、3Aなど)。

ResidentMedicationsExtended フォーム内には、コンボ ボックス [Frequency] があります。簡単にするために、「1 日 4 回」に対して「Q4H」が選択されているとします。別のフィールド [First Dosse] では、ユーザーは入所者が最初の 1 日用量を受け取る時間を入力できます。午前 6 時としましょう。

頻度フィールドと初回投与フィールドに基づいて、サブフォームで適切な時間を確認するコマンド ボタンがあります。これまでのところ、次のように書いています。

Private Sub Command90_Click()
If Me.FirstDose = "12:00:00 AM" Then
Forms!ResidentMedicationsExtended.Form.Resident24HourTable![12A] = True
ElseIf Me.FirstDose = "1:00:00 AM" Then
Forms!ResidentMedicationsExtended.Form.Resident24HourTable![1A] = True
ElseIf Me.FirstDose = "2:00:00 AM" Then
Forms!ResidentMedicationsExtended.Form.Resident24HourTable![2A] = True
ElseIf Me.FirstDose = "3:00:00 AM" Then
Forms!ResidentMedicationsExtended.Form.Resident24HourTable![3A] = True

などなど - 多くの行。毎回別々の行を書いたり、チェックボックスをFalseにするためにさらに書いたりできることはわかっています. .

代わりに使用できるループまたは何かがありますか? たくさんの投稿を読みましたが、解決策を思いつくことができませんでした。

お時間をいただきありがとうございます!

4

2 に答える 2

0

と を使用Hour()TimeValue()て「1:00:00 AM」を 1 などに変換し、この番号を使用してコントロールを識別します。

Dim hrFirst As Integer

hrFirst = Hour(TimeValue(Me.FirstDose)) 'returns 0 for 12am, 1 for 1am
hrFirst = IIF(hrFirst = 0, 12, hrFirst)

Forms!ResidentMedicationsExtended.Form.Resident24HourTable.Controls(hrFirst & "A") = True
于 2013-07-18T21:03:39.087 に答える