|
1レコードずつ登録変更するのであれば非連結フォームの方が
いいかと思います。
>フォーム"銀行"
> テキストボックス"ID"、"氏名"、"登録番号"(すべてテキスト型)
> テーブル名"銀行テーブル"
>
>コマンドボタン"登録"
このフォームのプロパティ「レコードソース」と各コントロールの
「コントロールソース」を外して(空欄にする)ください。
コマンドボタンのプロパティで「名前」はcmb1として、「課題」は
「登録/変更」とします。
その他テキストボックスの名前はそのままで結構です。
IDテキストボックスの更新後処理のイベントに
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("銀行テーブル", dbOpenDynaset)
rs.Filter = "[ID]='" & Me.ID & "'"
Set rs = rs.OpenRecordset
If rs.RecordCount <> 0 Then
Me.ID = rs!ID
Me.氏名 = rs!氏名
Me.登録番号 = rs!登録番号
End If
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
cmd1コマンドボタンのクリック時のイベントに
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM 銀行テーブル WHERE [ID]='" & Me.ID & "'", dbOpenDynaset)
With rs
If .EOF And .BOF Then
If MsgBox("このレコードを登録してよろしいですか?", vbQuestion + vbYesNo, "確認") = vbYes Then
.AddNew
rs!ID = Me.ID
rs!氏名 = Me.氏名
rs!登録番号 = Me.登録番号
MsgBox "新規登録をしました。", vbInformation, "メッセージ"
Else
Me.ID.SetFocus
.Close: Set rs = Nothing
db.Close: Set db = Nothing
Exit Sub
End If
Else
If MsgBox("このレコードを変更してよろしいですか?", vbQuestion + vbYesNo, "確認") = vbYes Then
.Edit
rs!ID = Me.ID
rs!氏名 = Me.氏名
rs!登録番号 = Me.登録番号
MsgBox "内容の変更をしました。", vbInformation, "メッセージ"
Else
Me.ID.SetFocus
.Close: Set rs = Nothing
db.Close: Set db = Nothing
Exit Sub
End If
End If
.Update
.Close: Set rs = Nothing
End With
db.Close: Set db = Nothing
Me.ID = Null
でどうでしょうか?
※「参照設定」で[Microsoft DAO 3.* Object Library] を参照チェックして
ください。
>テキストボックス"ID"を手入力すると"氏名"、"登録番号"が"銀行テーブル"から抽出、表示されます。(データがあれば)
>
>IDの重複チェックを行い・・・
>1."ID"入力→"氏名"、"登録番号"が表示→氏名、登録番号を修正して登録ボタンをクリックすると上書き保存されるようにする。
>2."ID"が新規のものであれば"登録ボタン"クリック時は新規に登録される。
>
>この2点を設定したいのですが、どのようなVBAを組んだらいいでしょうか?
>お力ください・・_(_^_)_
|
|