- ベストアンサー
access 登録したデータを修正するフォーム
accessで、データを登録するフォームを作成しました。次にそのデータを修正をするフォームを作成しようとしましたが、うまくいきません。 私の考えた修正方法例 1、「検索フォーム」を作成し、「登録ID」を入力させる。 2、クエリを利用し「登録ID」で抽出する。 3、クエリで得た修正対象のデータを「修正フォーム」に表示させる。 しかしこの方法では、「修正フォーム」を”閉じる”事と”修正(上書き)”が同時になってしまいます。(「修正フォーム」を開いて、間違えた入力をしてしまった場合、後戻りができない。) どのような手順で登録したデータの修正を行えばよいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1っす #3さんの書いているのがまさしく「モジュール」を使った処理ですね。 ちなみにVBAを使ったSQLの操作については http://www.accessclub.jp/samplefile/samplefile_23.htm あたりが簡単に説明してあります。 できれば自分のスキルレベルにあったACCESS VBAの書籍を片手に勉強すると一番良いのですけどね。
その他の回答 (4)
- tsukachan
- ベストアンサー率42% (202/470)
#1っす いろいろ方法ありますが難しい事はわからないでしょうから一番簡単な方法でw 連結データオブジェクトを非表示にしてそこからフォームを開く時に値を代入するマクロつくればOK 実際、VB覚えてモジュール扱えるようになったらもっとスマートにできるんですけどね。
お礼
ありがとうございます。 >スマートにできるんですけどね そのスマートな方法の概要だけでもいいのでお教えいただけますか? 参考になるURLだけでも結構ですので・・・
- Dxak
- ベストアンサー率34% (510/1465)
私なら、フォームの更新前処理に If Me.Dirty Then ' データを訂正されているか確認 If MsgBox("訂正しますか?", vbYesNo, Me.Caption) = vbNo Then Me.Undo ' 訂正してある内容を戻す End If End If と、メッセージボックスとUndoで編集前に戻すことを考えますが・・・
1、データを修正して登録する。 2、修正ミスに気付く。 3、データを再修正して登録する。 これは、通常の手順。 1、データの検索キーの入力を促す。 2、データを非連結フォームに表示する。 3、データ書き込みボタンで修正・書き込みを行う。 これは、チクッとクライアント/サーバーシステムを意識したやり方。 通常は、前者でしょう。その場合、 ・個々のフィールドの入力ミスを復活する方法。 ・登録以前に全体を復活する方法。 ・個々の入力ミスを少なくする工夫。 しかないと思います。
- tsukachan
- ベストアンサー率42% (202/470)
フォームのテキストボックスなどは全て非連結にしてありますか? 読込時に該当IDのデータを非連結のオブジェクトこに代入し、編集後保存ボタンかなにかでデータベースに書き込むためのコードをモジュールで作って実行させましょう。 (もしくはマクロでも可だったと思うです)
お礼
ありがとうございます。 続けて質問させてください。 クエリを使用せず、非連結のオブジェクトに値を代入するのは どうやってやればよいのでしょうか? DLOOKUPでしょうか? SQL文を記述したら、クエリを同じなのでしょうか?
お礼
ありがとうございます。 SQLはある程度書けるので、実験してみました。 SQLはクエリと同機能と思ってましたが、違うんですね。 大体こんな感じなんでいいしょうか? **************************************** Private Sub Form_Load() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection mySQL = "select * from テーブル" rs.Open mySQL, cn, adOpenForwardOnly, adLockOptimistic ’コントロールに代入 Me.No = rs![No] Me.項目 = rs![項目] End Sub ****************************************