• ベストアンサー

Access 複数条件から自動入力

Access素人です。 車の管理で車番から管理番号を自動入力したいです。 tb所有者(データ入力済) 管理番号 名前 電話番号 車番1 車番2 車番3 車番4 tb使用(都度入力) 管理番号 車番1 車番2 車番3 車番4 があり tb使用入力フォームより 車番1(テキスト1) 車番2(テキスト2) 車番3(テキスト3) 車番4 (テキスト4) を入力するとtb所有者のデータから管理番号(テキスト5)が自動に入力できるようにしたいです。 また管理番号の該当がなければないまま車番だけテーブルに入力してきたいです よろしくお願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

#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 を追加します。これでレコードが確定されます。

gigen21
質問者

お礼

ありがとうございました。 できました。 次に進めます。

その他の回答 (5)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

所有者テーブルに検索ようにナンバープレートがあった方が条件1項目です。更新クエリで準備できます。 画面入力したら項目を連結してどのナンバープレートを見つけたらよいか決定しその値でもって所有者テーブルを検索。 選択クエリやDLOOKUP関数を見ておく。 画面入力時の随時でなく、クエリ等で複数レコードまとめて取得処理できることも考えておくことをオススメします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

#2です。 tb使用(都度入力)の管理番号には主キーを設定 しないでください。質問の内容だと、tb使用 の管理番号にはデータが入る場合と入らない 場合があります。管理番号に主キーを設定 しておくと、データが無い場合にはシステムエラー が出ます。 したがって、tb使用に何らかの番号が必要な 場合はtb使用に、 ID:オートナンバー を設定しておいてください。 このIDはフォームに表示する必要はとくに ありませんが、必要ならば表示しても いいです。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

ANo.1です 管理No.は車両毎に付けるのですよね 管理No.に何か意味お持たせたいのでしょうが、重複のないNo.にして 車両を検索するときは他の項目を参照するようにしてシステムを単純化しては 前回提案しましたが、車両ID(オートナンバー)を管理No.(主キー)とします。 ※オートナンバーに設定するとCPが勝手に管理(車両を追加登録する都度 連番設定) してくれます。 TB車両(管理No.、登録No.、所有者ID、車両名、年式、排気量、車両タイプ…) 補足 登録No.は陸運局でユニークなコードを設定してくれるのでこれを主キーに して、管理No.を改めて用意する必要もないと思いますが

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

一応、車番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 ボタンをクリックすると、カーソルの当たっている 行の管理番号を入れるテキストボックスにデータが 入ります。なければ何もしません。

gigen21
質問者

お礼

早々の回答ありがとうございます。 やってみます。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.1

何をどうしたいのか理解しかねます。補足お願いします。 もしかしてタクシー会社の車両管理? 1.TB所有者とは顧客等の個人情報でしょうか 2.管理番号とは何を管理するもので、どのような規則のものですか 3.名前、電話番号はTB所有者内のフィールドの一つですか 4.一つの管理番号で4台の車を管理するのですか ------------------------- 思い違いがあるとは思いますが自分なら次のようなテーブル設計をします。 ()内はフィールド名 TB所有者(所有者ID、所有者名、住所、電話番号、…) TB車両(車両ID、所有者ID、車両名、年式、排気量、車両タイプ…) TB使用(使用ID、車両ID、使用日付、使用始め時刻、使用終了時刻…) TB所有者.所有者ID、TB車両.車両ID 及び使用IDはオートナンバー形式の主キーとし TB所有者.所有者IDとTB車両.所有者IDで両テーブル間にリレーションシップ の設定をします。

gigen21
質問者

補足

説明不足ですいません。    車番1 車番2 車番3 車番4とはナンバープレートです。 例  品川   300   あ   1234    車両を何千台と管理しています。 ナンバープレートから管理番号主キーを自動に入力できないかと。 ナンバーから管理番号(主キー)を自動入力させたいです。

関連するQ&A

  • ACCESS2002の入力値からフィルタをかける

    はじめまして 会社で商品マスタという、データベースのテーブルを持っています。 テーブルから、フォームフィルタを使って特定の番号・データを持ったものだけ抽出して表示する方法をよく使っていてわかるのですが、テーブルを直接触るので危険と思っています。 そこで、次のようなフォーム画面を作って誰でも抽出できるように運用しようとしています。 (抽出クエリを個々に作ってもらう案もありましたが・・実用的ではないので却下されてしまいました。) まず、フォーム画面に非連結のテキストボックス5個とコマンドボックス1個を設置して テキストボックスの5個の内、1個でも入力がある状態で[cmd]を押すと テキストボックスの内容で抽出したクエリを表示するという物を作りたいと思っています。 (テキストボックス5個全て入力した場合は、入力があるごとにandにしようと思っています。) ま た、5個全て入力がない状態で[cmd]を押したら、エラーメッセージを出したいと考えています。 フォームのデータ テキストボックス:[Tx1],[Tx2],[Tx3 ],[Tx4],[Tx5] コマンドスイッチ:[cmd] テーブルのデータ テーブル:[tb1],[tb2],[tb3],[tb4],[tb5],[tb6],[tb7],[tb8],[tb9] ボタンは、フォームの実行を選択しています。が、うまくいきません。 いろいろググっているのですが、ACCESS初心者ですので、『これが参考になる』過去ログとか、 『このHPが』とかもわかりません。 どなたかご教授願えないでしょうか? 細かく教えていただければ幸いです。

  • Access97で自動入力と反映が違うテーブルの場合

    こんにちは、前の質問などでフォームへの自動入力は何とかできるようになったのですが、今度はその入力したデータを他のテーブルBに反映させたいのですが、どうしたら良いのでしょうか? テーブルA 店舗コード 店舗名 ※テーブルAの管理者は私ではなく、ネットワークで私のPCと「テーブルのリンク」でつながっています。 テーブルB 店舗コード 店舗名 商品番号 他に店の情報フィールドをいくつか作成 フォームC 店舗コード 店舗名 商品番号 他に店の情報テキストボックスをいくつか作成 フォームCで、店舗コードを入力したら店舗名が自動的に入力される方法は、フォームCのレコードソースをテーブルAにして、店舗コードの更新後処理をイベントプロシージャにして、下記イベントコードを設定しました。 Private Sub 店舗コード_AfterUpdate() Me![店舗名]=DLookup("店舗名","テーブルA","店舗コード=" & Me![店舗コード] & " ") End Sub そして、フォームの残りのテキストボックスに、店と商品に関するデータを入力し、入力した全てのデータをテーブルBに反映させたいのですが、どうしたら良いのでしょうか? 自動入力の方法でDLookupを使用したのがいけなかったのでしょうか? また、できればテーブルBは商品番号順に並びかえられているのですが、入力したら商品番号のリストの一番下に挿入されるという形にしたいのです。 どうかよろしくお願いします。

  • フォームでの自動入力

    Access2002を使用していますが、フォームでの自動入力につき質問させてください。 勘定科目テーブルというのがあって、コード番号と科目名だけの簡単なテーブルですが、会計取引入力のフォームを作成して、「コード番号を入力したら(勘定科目テーブルを参照して)該当する科目名を別のフィールドに自動表示&入力する」、という処理を行いたいのですが可能でしょうか? Excelのlookup関数のようなものですね。 どなたか教えてください。

  • (ACCESS)入力フォームについて

    こんにちはmynannです またまた困っているのでよかったらヒントを いただきたいと思い質問させていただきます まずテーブルが二つあり 商品マスタには管理番号(主キー)と価格の二つの項目があります。 もうひとつは販売マスタというのがあり フィールドは管理番号、販売可(チェックボックス) の二つです。 この二つはリレーションシップの関係にあります そしてこの二つを一つにした 販売可商品マスタクエリがあります 商品マスタにはすでに多くのデータがあり それ専用の入力フォームもあります 今販売マスタの入力フォームを作りたいのです どのようなものかといいますと 管理番号を入力すると価格用のテキストボックスに 自動的に入力された管理番号の価格(商品マスタから調べると思うのですが)を表示するようにしたいのです 管理番号[       ]←ここに値を入力 価格[       ]←管理番号が入力されると自動的にでる 販売可 □ ←自分でチェックする イメージはこのような感じです 更新後処理を使うということはなんとなくわかるのですが どのような処理をさせていいかわかりません 助けてください!お願いします!

  • Access2002 フォームに行番号を自動的に入力するには

    以下のフォームがあります。    製品 001 ABC  -------------------------------------  行番号  原料(使用成分) 容量 ・・・   10    ABC       5kg   20    EFG       3kg   ・ 製品に含まれる原料を管理(入力、編集)するフォームです。このフォームで「行番号」を10、20、30と自動的に入力させたいのですが・・・。 オートNoではテーブル内で連番になってしまいますが、製品が異なれば再度10、20、30・・・と入力させます。 以上、よろしくお願いします。

  • Access 複数条件で自動入力

    いつもお世話になっております。 OS:Windows 7 Access 2007 現在Access で日報管理を作成しています。 弊社では職務と職位で給料段階が違います。 それで以下のようにテーブルが作っております。 職務テーブル  職務ID 職務名称   1    研修生   2    職人   3    リーダー 給与情報テーブル  職務ID 職位 基本給 手当 月給 日給 それぞれ職務に対して職位は3段階があります。それぞれに基本給などが変わっていきます。 以上の二つテーブルから社員の給与明細のフォームを作成しています。 日付  社員ID 社員名 職務 職位 月給 日給 ここで教えていただきたいのは職務と職位を入力すると月給と日給は自動的表示することです。 よろしくお願いします。

  • ACCESS フォームの入力で

    フォームの入力でコード番号を入力すると項目が自動入力出来るようにしたくて 2つ目のテキストボックスのコントロールソースに=DLookUp("[商品名]","テーブル2","[商品コード] = [コード] ")と入力したのですが 1つ目のテキストボックスに入力すると そのときは2つ目のテキストボックスは白紙で 一度フォームを閉じてから立ち上げると2つ目のテキストボックスにも入力されています。 これは閉じないと入力されないのでしょうか? 1つ目を入力した後に表示されるようにしたいのですが・・・。 よろしくお願いします。

  • Access 抽出条件を自動で入力したい

    お世話になります。 マクロもVBAも現在鋭意勉強中の初心者ですが、よろしくお願いします。 取引先から送られてくるテーブルの、とあるフィールドにいつも不要なデータが入っています。 作業は、その不要なデータの削除から取り掛かるのですが、これが何気にめんどくさくて 自動化できないものかと、今回、質問させていただきます。 結果として、       フィールド1 フィールド2 フィールド3 フィールド4 抽出条件        like "a*" または           like "b*"               like "c*"               like "d*"               like "e*" ↑のような状態に、マクロないしVBAを使用し、抽出条件に、上記の文字列を自動で入力することは可能なのでしょうか? また、可能ならばどのようにすればいいのでしょうか? テーブルのフィールド数は毎回違いますが、 フィールド2に不要なデータが入っているのは決まっています。 フィールド2のデータ型はテキスト型です。 Access2007を使用しています。 どうぞ、よろしくお願いします。

  • access 請求番号の自動採番

    まったくわかりません! よろしくお願いします。 仕様環境 WinXP  access2002 顧客管理のシステムを作っています。 テーブル 顧客テーブル(主キーは顧客番号 テキスト型) 請求テーブル(主キーは請求番号 テキスト型) 明細テーブル(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。) そしてリレーションシップで顧客テーブル(1)→(多)請求テーブル(1)→(多)明細テーブルになっています。 顧客情報を入力するフォームを作りました。 主キーは顧客番号(テキスト型,入力モードON,インデックス いいえ)で 他のテキストボックス(例えば名前)に何かしら文字を入力すると自動で顧客番号を採番してくれます。 例:0001 0002 0003~ そしてそのフォームから請求書作成フォームに飛ぶように 「請求書作成ボタン」を作り、顧客情報も一緒にひっぱっていってくれる 請求書作成フォームを作りました。(入力したばかりの情報も最新の情報で更新してくれます。) ・・請求書作成フォームはサブフォームを使い3つのテーブルからなっています。・・ 親フォーム:顧客テーブルから。 子フォーム:請求テーブルから。 孫フォーム:明細テーブルから。 主キーは請求番号で(テキスト型,入力モードON,インデックス はい(重複なし)) 他のテキストボックス(例えば請求日)に何かしら入力すると自動で請求番号を採番してくれます。 例:A0001 そこで問題なのですが、顧客情報は入力する度、次々自動で採番してくれるんですが、 請求番号は一番最初のレコードの”A0001”だけ採番してくれて、 新しいレコードで請求書を作ろうとテキストボックスに文字を入力すると「型が一致しません」というエラーが出ます。 ○ エラー内容 アクションエラーの実行 条件 true アクション名 値の代入 引数 [請求番号],Format(DMax("請求番号","請求マスタ")+1,"A0001") マクロは・・(参考書を参考にしています、マクロ名:自動採番マクロ) ------------------------------------------------- 条件 : DCount("請求番号","請求テーブル")=0 アクション : 値の代入 アイテム  : [請求番号] 式     :"A0001" ------------------------------------------------- 条件    : ... アクション : マクロの中止 ------------------------------------------------- アクション : 値の代入 アイテム  : [請求番号] 式     : Format(DMax("請求番号","請求テーブル")+1,"A0001") ------------------------------------------------- となっています。 念のため、主キーの入力モードを切り替えたり、式の"A0001"を単純に"1"にしたりしましたが、 請求番号はエラーが発生します。 原因がまったくわかりません。 よろしくお願いします!

  • アクセスで新規にレコードを追加する際自動的に番号をつけたい!

    お客さんの名前をアクセスで管理しています。 新しいお客さんを入力するフォームを作ったのですが、 そのフォームを開いたとき、お客さんの番号が自動的に入力 されている状態にしたいのですが、可能でしょうか? 現状では、番号はテキスト型で保存しているんです。 よろしくお願いします。

専門家に質問してみよう