![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Access2000で作成しています。
フォーム上でデータを書き換え後、更新をしない場合はどうしたらよいのでしょうか?
【希望する流れ】
1.データを変更
2.「更新」ボタンクリック
「データの更新をします。よろしいですか?」のメッセージ
(1)更新する場合:データを更新
「データが更新されました」のメッセージ
(2)更新しない場合:データを変更前に戻す
「データの更新がキャンセルされました」のメッセージ
3.フォームを閉じる
4.別のフォームを開く
この動作をフォーム上にある「更新」ボタンのクリック時イベントにすることはできますか?
とりあえず、現在は以下のようなものが作ってあります。
「VBA」
Private Sub Form_BeforeUpdate(Cancel As Integer)
'更新前確認
If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then
Cancel = True
Me.Undo
End If
End Sub
「更新」ボタンクリック時(こちらはマクロです)
・フォームを閉じる
・別のフォームを開く
今の状況では、更新する場合は問題ないのですが、更新しない場合、
「このレコードを保存することができません。
レコードを保存する時にエラーが発生しました。
・・・・・・・・・・・」
というメッセージが出てきてしまいます。
どのようにVBAを作ればよいでしょうか?
説明不足の場合、補足いたします。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'更新前確認
If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then
Me.Undo
MsgBox "データの更新がキャンセルされました"
End If
End Sub
でどうでしょう?
回答ありがとうございます。お世話になります。
Cancel = Trueをとり、MsgBox追加した所・・・できました!
「Cancel = True」が何故必要ないのでしょう?(勉強します…)
このデータベースを作るのが、初Access挑戦で、Accessのことも
VBAのことも全くわからず、、、
本当にありがとうございました。助かりました。
No.1
- 回答日時:
こんにちは。
maruru01です。1つのやり方ですが。
フォームをテーブルと非連結で作ります。フォーム上の入力用テキストボックスなども全部自分で置きます。
フォームの下のほうにあるレコード移動関連のボタンも非表示にし、自分でコマンドボタンを作り、処理を書きます。
それで、データはレコードセットを作成してその都度表示させます。
そして、更新ボタンのイベントにレコードセットの更新処理を書きます。
全部自分で作るのが面倒ですが。
では。
この回答への補足
こんにちは。お世話になります。
回答いただいた方法なのですが、一応、もう一つフォームを作り、
試したものがあるのですが、下記のようなことでよいのでしょうか?
(更新のフォームを開くためにフィルタをかけています)
Private Sub 更新_Click()
On Error GoTo Err_更新_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "F_データ更新"
stLinkCriteria = "[更新先]=" & "'" & Me![更新先名] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Dim rec As New ADODB.Recordset
rec.Open "Q_情報", CurrentProject.Connection, adOpenKeyset
フォームのテキストボックスの名前 = rec.Fields.Item("フィールド名")
・・・(テキストボックス分)
rec.Close
・・・(エラー時処理等)
End Sub
としたものを作ってあるのですが、
「指定した式で参照されている"|"フィールドが見つかりません」
というエラーが出てきてしまいます。
全くの初心者なのでHPや本を見ながら試しているのですが、
そもそも…が良くわかっていないのでどこがどう違うのか
見当がつきません。
やはり、質問の方法ではできないのでしょうか?
ご回答ありがとうございました。
まだまだ勉強不足でわからない事だらけです。
今後教えていただいた方法もできるように頑張りたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
accessの自動更新処理をできないようにするにはどうすれば良いですか?
その他(データベース)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
Accessでレコードの保存をせずにフォームを閉じたい
Access(アクセス)
-
7
Accessで、フォームに情報を入力途中で、やめる(レコードに保存しない)ということは出来ますか?
Access(アクセス)
-
8
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
9
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
10
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
11
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
12
入力途中の入力した値をすべて削除する方法
その他(データベース)
-
13
「Cancel = True」とはどういう意味でし
Word(ワード)
-
14
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
15
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
18
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
19
ACCESSで条件によってフォーム上のフィールドの色を変更
Access(アクセス)
-
20
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセス 前レコード内容を、...
-
異なるフォームに属する関数間...
-
抽出条件が複数ある場合で,抽...
-
Accessでフォーム上に 直前の...
-
レコードを保存するコード ア...
-
帳票フォーム後に
-
Access表形式フォームのデータ...
-
Access レコード移動時イベント...
-
access2010 カウントアップマクロ
-
Accessでチェックボックスで抽...
-
ACCESSフォームのリストボック...
-
アクセス フォームでの行追加
-
新規レコード行を非表示にしたい
-
ACCESSでフォームを使って、テ...
-
Access フォーム上で最初のタ...
-
アクセスでの警告について教え...
-
Access レポート印刷するときに...
-
YahooのIDがロックされてしまい...
-
ユーザーフォームで数字にカン...
-
ACCESS フォームをそのまま印刷...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
フィルタ後のフォームの件数の...
-
ACCESS起動時に所定フォームを...
-
ACCESSでフォームを使って、テ...
-
アクセスの自動保存解除はでき...
-
accessのクエリで、該当するデ...
-
Accessでレコードの保存をせず...
-
AccessVBA RecordSourceのリセ...
-
Accessで上の行を自動でコピー...
-
Accessでフォーム上に 直前の...
-
Access2010、値を入力したら自...
-
Access サブフォームにフィルタ...
-
レコード削除時に(サブ)フォー...
-
Access 帳票フォームでカレント...
-
Accessで新しいレコードに規定...
-
Access レコード移動時イベント...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
おすすめ情報