プロが教える店舗&オフィスのセキュリティ対策術

 accessで、データを登録するフォームを作成しました。次にそのデータを修正をするフォームを作成しようとしましたが、うまくいきません。

私の考えた修正方法例
1、「検索フォーム」を作成し、「登録ID」を入力させる。
2、クエリを利用し「登録ID」で抽出する。
3、クエリで得た修正対象のデータを「修正フォーム」に表示させる。

しかしこの方法では、「修正フォーム」を”閉じる”事と”修正(上書き)”が同時になってしまいます。(「修正フォーム」を開いて、間違えた入力をしてしまった場合、後戻りができない。)

どのような手順で登録したデータの修正を行えばよいのでしょうか?

A 回答 (5件)

#1っす



#3さんの書いているのがまさしく「モジュール」を使った処理ですね。
ちなみにVBAを使ったSQLの操作については
http://www.accessclub.jp/samplefile/samplefile_2 …
あたりが簡単に説明してあります。

できれば自分のスキルレベルにあったACCESS VBAの書籍を片手に勉強すると一番良いのですけどね。
    • good
    • 1
この回答へのお礼

ありがとうございます。

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
****************************************

お礼日時:2007/04/28 01:50

#1っす


いろいろ方法ありますが難しい事はわからないでしょうから一番簡単な方法でw

連結データオブジェクトを非表示にしてそこからフォームを開く時に値を代入するマクロつくればOK

実際、VB覚えてモジュール扱えるようになったらもっとスマートにできるんですけどね。
    • good
    • 1
この回答へのお礼

ありがとうございます。

>スマートにできるんですけどね
そのスマートな方法の概要だけでもいいのでお教えいただけますか?
参考になるURLだけでも結構ですので・・・

お礼日時:2007/04/27 16:23

私なら、フォームの更新前処理に



If Me.Dirty Then ' データを訂正されているか確認
If MsgBox("訂正しますか?", vbYesNo, Me.Caption) = vbNo Then
Me.Undo ' 訂正してある内容を戻す
End If
End If

と、メッセージボックスとUndoで編集前に戻すことを考えますが・・・
    • good
    • 1

1、データを修正して登録する。


2、修正ミスに気付く。
3、データを再修正して登録する。

これは、通常の手順。

1、データの検索キーの入力を促す。
2、データを非連結フォームに表示する。
3、データ書き込みボタンで修正・書き込みを行う。

これは、チクッとクライアント/サーバーシステムを意識したやり方。

通常は、前者でしょう。その場合、

・個々のフィールドの入力ミスを復活する方法。
・登録以前に全体を復活する方法。
・個々の入力ミスを少なくする工夫。

しかないと思います。
    • good
    • 0

フォームのテキストボックスなどは全て非連結にしてありますか?



読込時に該当IDのデータを非連結のオブジェクトこに代入し、編集後保存ボタンかなにかでデータベースに書き込むためのコードをモジュールで作って実行させましょう。
(もしくはマクロでも可だったと思うです)
    • good
    • 0
この回答へのお礼

ありがとうございます。

続けて質問させてください。
クエリを使用せず、非連結のオブジェクトに値を代入するのは
どうやってやればよいのでしょうか?

DLOOKUPでしょうか?
SQL文を記述したら、クエリを同じなのでしょうか?

お礼日時:2007/04/27 15:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A