
こんにちは。お願いします。いつもスイマセン。
入力フォームの[ID]に番号を入力したら、対応するレコードに移動して欲しいのです。
([ID]の書式は数値で、小数点以下は0。主キーにしています。)
ここに番号を入れ、Enterキーを押すと、レコードが移動して欲しいです。
(オプションで、Enterキー入力後の動作は、次のフィールドにしてますけども、
このままでいいのかも試したけど分かっていません。)
[ID]のテキストボックスのプロパティでは、
イベントの更新後の処理に、マクロ(レコードの検索>次を検索)を
設定しましたが、駄目です。
お分かりいただけたか不安ですが、
カーソルが、[ID]にある状態で、番号を入力して、
検索結果のレコードに移動できるように、望みたいのであります。
No.1ベストアンサー
- 回答日時:
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 メソッドが必要です
とのエラーが出ています。
私の設定が拙いと思うのですが、何処を見ればいいのでしょう。お願いします。
No.3
- 回答日時:
こんにちは。
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
maruru01さん、ありがとうございます。
| 入力フォームということですが、[ID]もユーザーが入力するのですか?
入力と申しますか、検索を。ということです。説明不足でスイマセン。
レコードを移動したい。そのために、ナンバーを入力したい。ということです。
| 主キーになっているのなら、普通はオートナンバーとか、自動で付けられ るようにしますが。
エッ、それは知りませんでした。オートナンバー型を数値型に変えてます。
(欠番の埋め合わせや、ナンバーと氏名が合わなくなったのを編集する為に。
後で、オートナンバーにしようと思いましたが、面倒そうなので、中止してます。)
| まあ、[ID]もユーザーが入力するとして、この入力するための[ID]テキスト
| ボックスと、検索用の[ID]テキストボックス(非連結)は別にしないといけません。
ありがとうございます。その方向でも、やってみています。が、まだ解決しません…。
| あと、別の方法ですが、入力用の[ID]テキストボックスにカーソルを置い て、
| コードは以下のようになります。
これも、使えますね。フォーカスを移動さすのは、是非取り入れようと思います。
しかし、やはり、当初からの希望を生かしたいと思いながら、
もう少し、頑張ってみます。
No.2
- 回答日時:
#1の記述はフォームのヘッダにIDのテキストボックスがあり詳細にレコードがある様な
フォームでヘッダのIDに入力したキーのレコードを検索するはずなのですが。
単票シート型でも帳票シート型のフォームでも使えるはずなんです。
IDは重複するのですか?
この回答への補足
テーブルのデザインビューで、
標準タブのインデックスをいいえにしたり、
はい(重複なし)にしたりして、試しました。
いろいろ統一されていないせいもありますが、
実は、O_cyanさんにお教えいただいた方法で、
上手く行っています。
しかし、上手く行かない場合もあります。
その違いが分かりません。
ですので、ファイルを最初からやり直してみます。
何日か後で、又、上手く行かなかったら、質問します。
スイマセンでした。ありがとうございました。
単票シート型、でもなく、帳票シート型でもありません。
Excellでセルに入力したシートをインポートして、
その後フォームを整形しました。
全てのフィールドが、詳細部分にあります。
拙いのでしょうか?今、IDをフォームヘッダに移してみましたが、変化ありません。
この辺で、最初からおかしいのかも知れません。
もう一度、最初から、ファイルを作成しなおそうかとも思います。
> IDは重複するのですか?
ということでありますが、IDに同じ番号は、ありません。
オートナンバーから、数値型に変更したばかりですし、
確認もしました。やはり、分かりません。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) アクセス IDが空白の時、メッセージボックスがでるようにするには 1 2022/08/04 11:06
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
アクセス:フォーム入力で、最...
-
ACCESS起動時に所定フォームを...
-
レコード削除時に(サブ)フォー...
-
アクセスの自動保存解除はでき...
-
アクセス データの競合を非表...
-
Access データのないフォーム...
-
Access2010、値を入力したら自...
-
Accessでのデータ消滅に...
-
ACCESSのクエリで抽出したデー...
-
新規レコード行を非表示にしたい
-
アクセスのフォームとクエリの...
-
AccessVBA RecordSourceのリセ...
-
アクセス 前レコード内容を、...
-
ACCESSでフォームを使って、テ...
-
Access非連結フォームから複数...
-
Accessでフォーム上に 直前の...
-
フィルタ後のフォームの件数の...
-
アクセス帳票フォームのループ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセスでフォームビューがみ...
-
レコード削除時に(サブ)フォー...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
アクセスのフォームで立ち上げ...
-
ACCESSフォームのリストボック...
-
アクセスの自動保存解除はでき...
-
アクセス:フォーム入力で、最...
-
Accessで一件の新規レコードの...
-
フィルタ後のフォームの件数の...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
Accessでのデータ消滅に...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
アクセスでの警告について教え...
おすすめ情報