こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessの再クエリについて

Win2000、Access2000を使用しています。
1.すでに入力してあるデータ(Aフォーム、単票形式)の内容を変更して
  「登録ボタン」をクリックすると再クエリを行う
2.「Bを開くボタン」をクリックすると、Bフォーム(単票形式)が開く
3.BフォームにはAフォームの変更が反映されている。
という流れにするため、Aフォームの登録ボタンをクリックしたら、再クエリをするようにVBを組みました。
AとBは、ID(オートナンバー型)でリレーションを組んでいます。
Aフォームは閉じないでそのまま表示させておき、Bフォームを開くボタンを作成しました。
ところが、再クエリをすると、1件目のデータを表示させてしまいます。
変更したフォームが2件目とか3件目であっても1件目を表示させてしまうので、変更したフォームを表示させたいんですが、どなたかおわかりになる方がいましたら、お教えください。
再クエリのVBは以下のとおりです。

Private Sub btn_登録_Click()

Dim touroku As Integer

touroku = MsgBox("このデータを登録しますか?", vbYesNo + vbQuestion, "登録")

If touroku = vbYes Then

DoCmd.Requery

End If

End Sub

説明がわかりずらくって申し訳ありませんが、よろしくお願いします。

投稿日時 - 2003-11-22 17:03:43

QNo.712351

すぐに回答ほしいです

質問者が選んだベストアンサー

FindRecordは検索するテキストボックス(フィールド)にカーソルを当ててからでないと動かなかった気がします。

例えば「商品ID」などで探すときは、
(商品IDtbxという名前の連結テキストボックスがあったとすると)

Dim idnumber As Long '(商品IDを長整数型と仮定して、)商品IDを格納する変数を定義

idnumber = Me!商品IDtbx

Me!Requery
Me!商品IDtbx.SetFocus
DoCmd.FindRecord idnumber


と、こんな感じでしょうか・・・

投稿日時 - 2003-11-27 11:45:06

お礼

たびたびのご回答ありがとうございます。
お礼が遅くなりまして申し訳ございません。
うまくいきました。
また質問すると思いますが、そのときはよろしくお願いします。

投稿日時 - 2003-12-02 22:51:28

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Requery は 1件目のレコードに戻ってしまうという「仕様」なので、btn_登録_Click時にカレントになっているレコードの主キーの値を何かの変数に入れておき、Requery した後にそこへDocmd.FindRecord などで戻る という方法でよいのではないでしょうか?

もしくは、Requery ではなく Refresh を試してみるとか・・・

投稿日時 - 2003-11-22 22:01:47

補足

ご回答ありがとうございます。
以下のようにVBを組み直してみましたが、カレントレコードへは行ってくれませんでした。

Private Sub btn_登録_Click()

Dim touroku As Integer
Dim curren As Long

touroku = MsgBox("このデータを登録しますか?", vbYesNo + vbQuestion, "登録")

If touroku = vbYes Then
curren = Me.CurrentRecord
DoCmd.Requery
DoCmd.FindRecord curren
End If
End Sub

大変申し訳ありませんが、再度お教え下さい。
よろしくお願いします。

投稿日時 - 2003-11-25 19:11:53

あなたにオススメの質問