
アクセス初級者です。
会員登録を管理するシステムを作りたいです。
例えば、「会員登録フォーム」(会員番号(主キー)、名前、性別、生年月日)をテーブル1に格納。
データを修正をする時「検索フォーム」より名前で検索して、「修正フォーム」へ飛び修正フォームから修正をしたいです。
updateメソッドを使ってやってみましたが、会員番号を修正する場合はテーブル1に更新後のレコードが格納できるのですが、それ以外の項目を修正しようとすると(修正のコマンドボタンを押した際)「会員番号の重複」で先へ進めません。
VBAのお詳しい何方か助けて頂けませんでしょうか。

No.10ベストアンサー
- 回答日時:
Option Compare Database
Option Explicit
Private Sub 修正_Click()
On Error Resume Next
DoCmd.RunCommand acCmdSaveRecord
Select Case Err.Number
Case 0
DoCmd.RunCommand acCmdClose
Case 3022
MsgBox "会員番号は使用されています"
Case Else
MsgBox Err.Number & vbCrLf & Err.Description
End Select
End Sub
出来ました!
お忙しい中何度もご教示いただき本当にありがとうございました。
何週間も悩んでいたの事が一瞬にして解決してしまい感動しています^^

No.6
- 回答日時:
Private Sub 修正_Click()
DoCmd.OpenForm "修正"
Forms![修正].Filter = "会員番号=" & Me.RecordSource![会員番号]
Forms![修正].FilterOn = True
End Sub

No.5
- 回答日時:
なんか根本的に、難しく難しく考えているようですね。
Access はテーブルをそのまま開けば、追加変更削除検索すべて出来るようになっています。
なんでも出来すぎて操作ミスが怖いというときにプログラムを作ります。
例えば、検索したいだけなのにチョット触るとデータが変わってしまう、というようなときに検索フォームを作るわけです。
ですから、プログラムでやるべきことは、ああやってこうやってということではなく、この機能を使えなくしてこれも殺してというマイナスの作業です。
検索フォームから修正フォームを開くコマンドボタンは、検索したデータ以外はさわれないようにするということです。
Private Sub 修正_Click()
DoCmd.OpenForm "修正"
Forms![修正].Filter = "会員番号=" & Me![テーブル1]![会員番号]
Forms![修正].FilterOn = True
End Sub
修正フォーム上の[修正]ボタンを使いたいなら、
Private Sub 修正_Click()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdClose
End Sub
これだけ。

No.4
- 回答日時:
>修正フォームのレコードソースは、テーブル1 です。
であれば、VBAで何もしなくても追加、更新、削除ができるはず。
[修正]ボタンを使いたいなら、
Docmd.RunCommand acCmdSaveRecord
これだけ。

No.3
- 回答日時:
"Q会員番号修正"クエリを開示してください。
クエリの中身はSQL文です。
SQLビューで開いて、SQL文を開示してください。
あと、"修正"フォームのプロパティ画面を開いて、レコードソースを開示してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Access(アクセス) MS.Access でサブフォーム付のフォームのレコードの複数コピーについて 1 2021/12/23 11:23
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- 求人情報・採用情報 今日、ホテルのアルバイトに、タウンワークから応募しました。 すると、会社からGメールが届き、事前登録 1 2022/03/31 23:40
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- Access(アクセス) Access コンボボックスで検索した値をレコード自体はそのままでブランクにする方法 1 2021/10/29 09:53
- 中古車 車(C-HR)の中古価格について教えてくださいm(_ _)m 3 2021/10/25 23:16
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです
Access(アクセス)
-
Accessのフォームに表示させたデータを訂正し、テーブルを更新させたい(初心者向けの回答をおねがいします)
その他(データベース)
-
access 登録したデータを修正するフォーム
Access(アクセス)
-
-
4
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
5
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
6
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
7
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
8
Accessでデータを更新したらその日付を自動入力したい
Access(アクセス)
-
9
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
10
アクセスでの、フォームとテーブルの連動の方法を教えてください
Access(アクセス)
-
11
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
12
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
13
ACCESSで条件によってフォーム上のフィールドの色を変更
Access(アクセス)
-
14
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
15
「フォームを作成できませんでした」
Access(アクセス)
-
16
Accessのコンボボックスでリストが選択できない
Word(ワード)
-
17
Accessフォームが入力できません。
Access(アクセス)
-
18
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
19
新規レコード行を非表示にしたい
Access(アクセス)
-
20
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2003で現在時刻の自動取...
-
ユニオンクエリについて質問です
-
フォームを利用したテキストの代入
-
こんな【無料レンタルフォーム...
-
ネット上でコピペしたデータ
-
ACCESSを配布するのあたり
-
Accessのフォームメニュー絡み...
-
Accessのフォームを改ページしたい
-
アクセスの再クエリについて
-
引数をフォームで入力(EXCEL)
-
エクセルに貼り付けた入力フォ...
-
Excelのデータフォームの設定変更
-
PDFファイルにフォームを埋め込む
-
Access2000VBA オブジェクト...
-
ACCESS2000
-
Accessフォームを開くときに決...
-
アクセス 単票フォーム
-
ACCESS / 抽出条件によってレポ...
-
アクセス日付検索について
-
ACCESS2007について教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「フォームを作成できませんで...
-
Excelのデータフォームの設定変更
-
YahooのIDがロックされてしまい...
-
フォームの高さを数値で指定し...
-
MSワード 年齢を計算表示でき...
-
Accessのフォームで開く時のウ...
-
デフォルトでチェックボックス...
-
大至急!アクセスのフォームを...
-
ACCESSでオートメーションエラー
-
Accessフォームを開くときに決...
-
エクセルで各セルをダブルクリ...
-
フォームなどに半角カナで入力...
-
access vba 開いていないフォー...
-
Accessで、フォームからフォー...
-
エクスポートされたエクセルの...
-
アクセス フォームをリクエリ...
-
ACCESS クロス集計クエリの抽...
-
Access2003 フォーム入力中に...
-
帳票フォームのなかにリストを...
-
アクセスで複数列にまたがる同...
おすすめ情報
文字数がオーバーしてしまうので画像を3枚、順に添付させていただきました。
2枚目です。
3枚目です。
*上記3枚のコードで入力しますと質問時と異なり、
ID変更もID以外の変更も格納されますが重複したIDも格納されてしまいます。
・IDを変更した時に重複格納できないようにするにはどのようにすればよろしいでしょうか?
3枚目の画像が抜けていました。
Private Sub 修正_Click()
Dim cn As ADODB.Connectiont
Dim rs As ADODB.Recordset
Dim nret As Long
frg1 = 0
If Dcount("会員番号", "Q会員番号修正") > 0 Then
nret = Msgbox("会員番号が重複しています")
Cancel = True
会員番号.SetFocus
frg1 = 1
End If
If frg1 = 1 Then
会員番号.SetFocus
Exit sub
End If
IF Msgbox("この会員番号で修正しますか?yes/no", vbYesNO, "修正確認") = vbYes Then
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.open "テーブル1", cn, adOpenKeyset, adLockOptimistic
rs.moveFirst
Do Until rs.EOF
rs.Find "会員番号 = " & Forms!検索!会員番号
If rs.EOF Then
Exit Do
Else
rs.Delete
rs.AddNew
rs![会員番号] = me.会員番号
rs![カナ氏名] = me.カナ氏名
rs![生年月日] = me.生年月日
rs.update
rs.MoveNext
Q会員番号修正のSQLは、[Forms]![修正]![会員番号]
修正フォームのレコードソースは、テーブル1 です。
上記の方法を試してみましたが修正ボタンを押してもテーブルに格納されませんでした。
検索フォーム経由で修正フォームを呼び出さず、直接修正フォームに入力するとレコードは格納されるのですが・・・。
登録フォームに入力しテーブル1へ格納
検索フォームの登録ボタンで対象レコードを検索して修正ボタンで修正フォームを開く。
修正フォームで修正→テーブル1へ格納
としたいのですがうまくいきません。
検索フォームに問題があるのでしょうか?
検索フォームから修正フォームを開くコマンドボタンは、
Docmd.Openform "修正"
Forms!修正!会員番号 = Forms!検索!会員番号
Forms!修正!カナ氏名 = Forms!検索!カナ氏名
Forms!修正!生年月日 = Forms!検索!生年月日
レコードソースはテーブル1です。
検索フォームの修正ボタンを押すと、
実行時エラー2465
指定した式で参照されている'テーブル
1'フィールドが見つかりません。
というエラーが出てしまい進めません。なぜでしょうか…
![会員番号]
コンパイルエラー:
対象はコレクションでなければなりません。
で進めません…。