電子書籍の厳選無料作品が豊富!

こんにちは。お願いします。いつもスイマセン。
入力フォームの[ID]に番号を入力したら、対応するレコードに移動して欲しいのです。
([ID]の書式は数値で、小数点以下は0。主キーにしています。)

ここに番号を入れ、Enterキーを押すと、レコードが移動して欲しいです。
(オプションで、Enterキー入力後の動作は、次のフィールドにしてますけども、
 このままでいいのかも試したけど分かっていません。)

[ID]のテキストボックスのプロパティでは、
イベントの更新後の処理に、マクロ(レコードの検索>次を検索)を
設定しましたが、駄目です。

お分かりいただけたか不安ですが、
カーソルが、[ID]にある状態で、番号を入力して、
検索結果のレコードに移動できるように、望みたいのであります。

A 回答 (3件)

IDのテキストボックスの更新後の処理にイベントプロシジャで



Private Sub ID_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[ID] = " & Str(Me![ID])
Me.Bookmark = rs.Bookmark
End Sub

この記述でIDに入力したコードと同じレコードをフォームに表示することが出来ます。

この回答への補足

O_cyanさん、いつもお世話になるばかりでスイマセン。ありがとうございます。
お教えの通りやってみました。

実行時エラー '3022':
インデックス、主キー、またはリレーションシップで値が重複しているの
で、テーブルを変更できませんでした。重複する値のあるフィールドの値
を変更するか、インデックスを削除してください。または重複する値を使
用できるように再定義してください。

となりまして、デバッグを押下すると、
Me.Bookmark = rs.Bookmark
を示します。
(実際は、[ID]でなく、[整理番号]としているのですが、
 これは、置き換えたらいいだけですよね。)

その後に、入力を続けようとすると、

Update または CancelUpdate メソッドには、対応する AddNew または
Edit メソッドが必要です
とのエラーが出ています。

私の設定が拙いと思うのですが、何処を見ればいいのでしょう。お願いします。

補足日時:2002/08/22 13:50
    • good
    • 0

こんにちは。

maruru01です。

横から口を挟みますが。
入力フォームということですが、[ID]もユーザーが入力するのですか?
主キーになっているのなら、普通はオートナンバーとか、自動で付けられるようにしますが。
まあ、[ID]もユーザーが入力するとして、この入力するための[ID]テキストボックスと、検索用の[ID]テキストボックス(非連結)は別にしないといけません。
入力用の[ID]に、検索するために入力したとしても、それは新規レコードの作成とか、既存レコードの変更と見なされるわけです。
で、レコード移動時に保存しようとすると、検索用に入れたIDはおそらく、既存のIDのはずですので、当然重複してエラーになります。

とにかく、検索用の[ID]テキストボックスは別に用意することです。
O_cyanさんの言うように、フォームのヘッダに検索用の[ID]テキストボックスを置くのがいいでしょう。
検索用のフォームを作るのもいいかも知れません。

あと、別の方法ですが、入力用の[ID]テキストボックスにカーソルを置いて、
メニューの[編集]→[検索]をクリックすると、検索ダイアログが表示され、IDで検索することが出来ます。
また、これとまったく同じ動作を、コマンドボタンのクリックイベントに書くことも出来ます。
この場合、フォーカスの移動も記述すれば、[ID]テキストボックスにカーソルを移動する必要もなくなります。
コードは以下のようになります。


Private Sub ID検索_Click()

  Me!ID.SetFocus
  '検索ダイアログボックスの表示
  DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

End Sub
    • good
    • 0
この回答へのお礼

maruru01さん、ありがとうございます。

 | 入力フォームということですが、[ID]もユーザーが入力するのですか?

入力と申しますか、検索を。ということです。説明不足でスイマセン。
レコードを移動したい。そのために、ナンバーを入力したい。ということです。

 | 主キーになっているのなら、普通はオートナンバーとか、自動で付けられ るようにしますが。

エッ、それは知りませんでした。オートナンバー型を数値型に変えてます。
(欠番の埋め合わせや、ナンバーと氏名が合わなくなったのを編集する為に。
 後で、オートナンバーにしようと思いましたが、面倒そうなので、中止してます。)

 | まあ、[ID]もユーザーが入力するとして、この入力するための[ID]テキスト
 | ボックスと、検索用の[ID]テキストボックス(非連結)は別にしないといけません。

ありがとうございます。その方向でも、やってみています。が、まだ解決しません…。

 | あと、別の方法ですが、入力用の[ID]テキストボックスにカーソルを置い て、

 | コードは以下のようになります。

これも、使えますね。フォーカスを移動さすのは、是非取り入れようと思います。
しかし、やはり、当初からの希望を生かしたいと思いながら、
もう少し、頑張ってみます。

お礼日時:2002/08/22 17:41

#1の記述はフォームのヘッダにIDのテキストボックスがあり詳細にレコードがある様な


フォームでヘッダのIDに入力したキーのレコードを検索するはずなのですが。
単票シート型でも帳票シート型のフォームでも使えるはずなんです。
IDは重複するのですか?

この回答への補足

テーブルのデザインビューで、
標準タブのインデックスをいいえにしたり、
はい(重複なし)にしたりして、試しました。

いろいろ統一されていないせいもありますが、
実は、O_cyanさんにお教えいただいた方法で、
上手く行っています。
しかし、上手く行かない場合もあります。
その違いが分かりません。

ですので、ファイルを最初からやり直してみます。
何日か後で、又、上手く行かなかったら、質問します。
スイマセンでした。ありがとうございました。

補足日時:2002/08/22 18:27
    • good
    • 0
この回答へのお礼

単票シート型、でもなく、帳票シート型でもありません。
Excellでセルに入力したシートをインポートして、
その後フォームを整形しました。

全てのフィールドが、詳細部分にあります。
拙いのでしょうか?今、IDをフォームヘッダに移してみましたが、変化ありません。

この辺で、最初からおかしいのかも知れません。
もう一度、最初から、ファイルを作成しなおそうかとも思います。


> IDは重複するのですか?
ということでありますが、IDに同じ番号は、ありません。
オートナンバーから、数値型に変更したばかりですし、
確認もしました。やはり、分かりません。ありがとうございました。

お礼日時:2002/08/22 16:33

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