- ベストアンサー
Access 複数条件から自動入力
Access素人です。 車の管理で車番から管理番号を自動入力したいです。 tb所有者(データ入力済) 管理番号 名前 電話番号 車番1 車番2 車番3 車番4 tb使用(都度入力) 管理番号 車番1 車番2 車番3 車番4 があり tb使用入力フォームより 車番1(テキスト1) 車番2(テキスト2) 車番3(テキスト3) 車番4 (テキスト4) を入力するとtb所有者のデータから管理番号(テキスト5)が自動に入力できるようにしたいです。 また管理番号の該当がなければないまま車番だけテーブルに入力してきたいです よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#2に少し追加です。 If rs.RecordCount > 0 Then rs.MoveFirst Do Until rs.EOF MsgBox rs!管理番号 Forms!F検索!テキスト5 = rs!管理番号 Exit Do rs.MoveNext Loop End If のところを、 If rs.RecordCount > 0 Then rs.MoveFirst Do Until rs.EOF MsgBox rs!管理番号 Forms!F検索!テキスト5 = rs!管理番号 DoCmd.RunCommand acCmdSaveRecord Exit Do rs.MoveNext Loop End If のようにしてください。 DoCmd.RunCommand acCmdSaveRecord を追加します。これでレコードが確定されます。
その他の回答 (5)
- layy
- ベストアンサー率23% (292/1222)
所有者テーブルに検索ようにナンバープレートがあった方が条件1項目です。更新クエリで準備できます。 画面入力したら項目を連結してどのナンバープレートを見つけたらよいか決定しその値でもって所有者テーブルを検索。 選択クエリやDLOOKUP関数を見ておく。 画面入力時の随時でなく、クエリ等で複数レコードまとめて取得処理できることも考えておくことをオススメします。
- piroin654
- ベストアンサー率75% (692/917)
#2です。 tb使用(都度入力)の管理番号には主キーを設定 しないでください。質問の内容だと、tb使用 の管理番号にはデータが入る場合と入らない 場合があります。管理番号に主キーを設定 しておくと、データが無い場合にはシステムエラー が出ます。 したがって、tb使用に何らかの番号が必要な 場合はtb使用に、 ID:オートナンバー を設定しておいてください。 このIDはフォームに表示する必要はとくに ありませんが、必要ならば表示しても いいです。
- shinkami
- ベストアンサー率43% (179/411)
ANo.1です 管理No.は車両毎に付けるのですよね 管理No.に何か意味お持たせたいのでしょうが、重複のないNo.にして 車両を検索するときは他の項目を参照するようにしてシステムを単純化しては 前回提案しましたが、車両ID(オートナンバー)を管理No.(主キー)とします。 ※オートナンバーに設定するとCPが勝手に管理(車両を追加登録する都度 連番設定) してくれます。 TB車両(管理No.、登録No.、所有者ID、車両名、年式、排気量、車両タイプ…) 補足 登録No.は陸運局でユニークなコードを設定してくれるのでこれを主キーに して、管理No.を改めて用意する必要もないと思いますが
- piroin654
- ベストアンサー率75% (692/917)
一応、車番1、車番2、車番3、車番4を入力した場合、 その組み合わせに該当する管理番号は1件以下、すなわち 複数の管理番号は存在しない、という設定にしておきます。 以下で設定してみてください。 (1) クエリの作成 名前:Q検索 SELECT tb所有者.管理番号, tb所有者.名前, tb所有者.電話番号, tb所有者.車番1, tb所有者.車番2, tb所有者.車番3, tb所有者.車番4 FROM tb所有者 WHERE (((tb所有者.車番1)=[A1]) AND ((tb所有者.車番2)=[A2]) AND ((tb所有者.車番3)=[A3]) AND ((tb所有者.車番4)=[A4])); 「デザインビューでクエリを作る」を選択し、 「テーブルの表示」を閉じ、SQLビューを選択し、 上記のSQL文を貼り付け、「Q検索」という名前で 登録します。 (2) フォームの設定 フォームの名前はF検索とします。必要に応じて 変更してください。変更する場合は以下のプログラム の中も変更してください。 DAOを使用しているので、コード表のツール→参照設定 を選択し、Microsoft DAO xxx Object Library を 選択してください。xxxは数値で3.6のようなものです。 これの一番数値のたかいものを選択してください。 もし、Microsoft AvtiveX Data Objects Library xxx が選択されていたらチェックをはずしてください。 形式は単票でも帳票でもいいのですが、一応帳票形式とします。 フォームにボタンを一つ設定します。そのボタンのクリックイベントで、 Private Sub コマンド0_Click() Dim strSQL As String Dim strNUM As String Dim qdf As QueryDef Dim db As Database Dim rs As Recordset Set db = CurrentDb Set qdf = db.QueryDefs("Q検索") qdf.Parameters("A1").Value = Forms!F検索!テキスト1 qdf.Parameters("A2").Value = Forms!F検索!テキスト2 qdf.Parameters("A3").Value = Forms!F検索!テキスト3 qdf.Parameters("A4").Value = Forms!F検索!テキスト4 Set rs = qdf.OpenRecordset If rs.RecordCount > 0 Then rs.MoveFirst Do Until rs.EOF Forms!F検索!テキスト5 = rs!管理番号 Exit Do rs.MoveNext Loop End If qdf.Close: Set qdf = Nothing rs.Close: Set rs = Nothing db.Close: Set db = Nothing End Sub ボタンをクリックすると、カーソルの当たっている 行の管理番号を入れるテキストボックスにデータが 入ります。なければ何もしません。
お礼
早々の回答ありがとうございます。 やってみます。
- shinkami
- ベストアンサー率43% (179/411)
何をどうしたいのか理解しかねます。補足お願いします。 もしかしてタクシー会社の車両管理? 1.TB所有者とは顧客等の個人情報でしょうか 2.管理番号とは何を管理するもので、どのような規則のものですか 3.名前、電話番号はTB所有者内のフィールドの一つですか 4.一つの管理番号で4台の車を管理するのですか ------------------------- 思い違いがあるとは思いますが自分なら次のようなテーブル設計をします。 ()内はフィールド名 TB所有者(所有者ID、所有者名、住所、電話番号、…) TB車両(車両ID、所有者ID、車両名、年式、排気量、車両タイプ…) TB使用(使用ID、車両ID、使用日付、使用始め時刻、使用終了時刻…) TB所有者.所有者ID、TB車両.車両ID 及び使用IDはオートナンバー形式の主キーとし TB所有者.所有者IDとTB車両.所有者IDで両テーブル間にリレーションシップ の設定をします。
補足
説明不足ですいません。 車番1 車番2 車番3 車番4とはナンバープレートです。 例 品川 300 あ 1234 車両を何千台と管理しています。 ナンバープレートから管理番号主キーを自動に入力できないかと。 ナンバーから管理番号(主キー)を自動入力させたいです。
お礼
ありがとうございました。 できました。 次に進めます。