指定フォームの条件をクエリで使う
文字の部分一致
(指定すれば指定文字と一致したものが抽出され、指定しなければ、全データとなる)
Like "*" & [Forms]![fo指定フォーム名]![指定コントロール名] & "*"
範囲指定の場合
(指定範囲は、必須入力項目となります)
Between [Forms]![fo指定フォーム名]![開始] And [Forms]![fo指定フォーム名]![終了]
フォームでの入力支援
数値入力項目のヌル値回避
数値の入力欄で、Deleteキーを押されたとき、空白のままだと計算できないので、
コントロールの[フォーカス喪失時]に、次のように書きます
If IsNull([数値入力のコントロール名]) Then
Me.数値入力のコントロール名 = 0
End If
Escボタン処理
Escボタンが押されたときと同じ状態にしたいとき、
フォームのデータを変更しないで戻りたいとき(キャンセルして戻る)
ボタンの[クリック時]に次のように書きます
If Me.Dirty Then
Me.Undo
End If
必須入力項目のチェック
登録ボタンが押されたとき、入力必須項目のチェック
登録ボタンの[フォーカス取得時]に次のように書きます
If IsNull([住所録番号]) Then
MsgBox ("住所録番号を入力して下さい。 ")
DoCmd.GoToControl "住所録番号"
Exit Sub
End If
入力桁数をチェック
コントロールの[フォーカス喪失時]に次のように書きます
If Len(Me.住所録番号) <> 5 Then
MsgBox ("数字5桁で入力して下さい。")
DoCmd.CancelEvent
End If
主キーの項目の重複登録チェック
主キーの登録コード(住所録番号など)の入力チェック
新規入力での重複チェックをしています
コントロールの[フォーカス喪失時]に次のように書きます
If DCount("住所録番号", "ta住所録", "[住所録番号]='" & Me.住所録番号 & "'") <> 0 Then
MsgBox ("この番号は使用済みです。")
DoCmd.CancelEvent
End If
モジュールのレコード操作
テーブルを先頭から開いて、1つずつレコードを読んで、処理する
("PrimaryKey"は主キーの名前、規定値でこの名前になる)
("to誕生日ca"は、テーブル名)
(指定フォームの条件を元に、年齢を計算して、年齢というフィールドに書き込んでいます)
次のように書きます
Dim dbs As Database
Dim rsttable As Recordset
Set dbs = CurrentDb
Set rsttable = dbs.OpenRecordset("to誕生日ca", dbOpenTable)
If rsttable.RecordCount = 0 Then
rsttable.Close
Exit Function
End If
rsttable.Index = "PrimaryKey"
rsttable.MoveFirst
Do Until rsttable.EOF
rsttable.Edit
rsttable!年齢 = IIf(Format(Form_fo誕生日ca.基準日, "mmdd") >= Format(rsttable!生年月日, "mmdd"), DateDiff("yyyy", rsttable!生年月日, Form_fo誕生日ca.基準日), DateDiff("yyyy", rsttable!生年月日, Form_fo誕生日ca.基準日) - 1)
rsttable.Update
rsttable.MoveNext
Loop
rsttable.Close
クエリを先頭から開いて、1つずつレコードを読んで、処理する
("qu誕生日ca"は、クエリ名)
(指定フォームの条件を元に、年齢を計算して、年齢というフィールドに書き込んでいます)
次のように書きます
Dim dbs As Database
Dim rst01 As Recordset
Set dbs = CurrentDb
Set rst01 = dbs.OpenRecordset("qu誕生日caかな順", dbOpenDynaset)
If rst01.RecordCount = 0 Then
rst01.Close
Exit Function
End If
rst01.MoveFirst
Do Until rst01.EOF
rst01.Edit
rst01!年齢 = IIf(Format(Form_fo誕生日ca.基準日, "mmdd") >= Format(rst01!生年月日, "mmdd"), DateDiff("yyyy", rst01!生年月日, Form_fo誕生日ca.基準日), DateDiff("yyyy", rst01!生年月日, Form_fo誕生日ca.基準日) - 1)
rst01.Update
rst01.MoveNext
Loop
rst01.Close