• 締切済み

Access2000 フォームからレコード検索

Access2000で質問です。 「顧客テーブル」を作ります。 顧客テーブルには以下のフィールドを設けます。 顧客ID(主キー) 名前 TEL 住所 変更住所 顧客IDから住所まではすでにデータが入っています。 「変更住所」に新しくデータを入れていきます。 その際に、フォームを利用したいと思っていますが、 新規フォーム(何もデータが入っていない)に顧客IDを入れたら、すでに顧客テーブルに入力されている名前、TEL、住所がパッと表示され、変更住所だけが空欄で表示されるようなフォームを作りたいと思います。 どのような方法がありますでしょうか? ぜひお知恵を貸してください。よろしくお願いいたします。

みんなの回答

  • syuninn
  • ベストアンサー率30% (12/39)
回答No.2

すいません。顧客IDの更新後の[イベント プロシージャ]が 間違っていましたので訂正いたします。 Me!名前 = Null: Me!TEL = Null: Me!住所 = Null: Me!変更住所 = Null Dim db As Database, trm As Recordset, tyuusitu As String Set db = CurrentDb Set trm = db.OpenRecordset("顧客テーブル", dbOpenDynaset) tyuusitu = "顧客ID='" & Me![顧客ID] & "'" trm.FindFirst tyuusitu DoCmd.GoToControl "変更住所" If IsNull(Me![顧客ID]) Then Me![顧客ID] = 0 DoCmd.FindRecord Me!顧客ID, acEntire, True, , True, , True If Me!顧客ID <> trm!顧客ID Then MsgBox "No." & Me!顧客ID & " の顧客ID が見つかりません。@ 顧客IDを確認して下さい。@", vbCritical, "検索顧客IDエラー": Me!顧客ID = Null: Me!名前 = Null: Me!TEL = Null: Me!住所 = Null: DoCmd.GoToControl "顧客ID": Exit Sub Me![名前] = trm![名前]: Me![TEL] = trm![TEL]: Me![住所] = trm![住所] trm.Close

  • syuninn
  • ベストアンサー率30% (12/39)
回答No.1

AccessVBAを使用すれば簡単ですが馴れていないのなら参考にして下さい。 初めに非連結の住所変更フォームを作成します。 テキストボックスは、顧客ID・名前・TEL・住所・変更住所を作成し、顧客IDのイベントの更新後処理にコードビルダを起動し下記をコピー貼り付けして下さい。 Me!名前 = Null: Me!TEL = Null: Me!住所 = Null: Me!変更住所 = Null Dim db As Database, trm As Recordset, tyuusitu As String Set db = CurrentDb Set trm = db.OpenRecordset("顧客テーブル", dbOpenDynaset) tyuusitu = "顧客ID='" & Me![顧客ID] & "'" trm.FindFirst tyuusitu DoCmd.GoToControl "変更住所" If IsNull(Me![顧客ID]) Then Me![顧客ID] = 0 DoCmd.FindRecord Me!顧客ID, acEntire, True, , True, , True If Me!顧客ID <> trm!顧客ID Then MsgBox "No." & Me!顧客ID & " の納品票が見つかりません。@ 納品票番号を確認して下さい。@", vbCritical, "検索顧客IDエラー": Me!顧客ID = Null: Me!名前 = Null: Me!TEL = Null: Me!住所 = Null: DoCmd.GoToControl "顧客ID": Exit Sub Me![名前] = trm![名前]: Me![TEL] = trm![TEL]: Me![住所] = trm![住所] trm.Close 次に変更住所のイベントの更新後処理にコードビルダを起動し下記をコピー貼り付けして下さい。 Dim db As Database, trm As Recordset, tyuusitu As String Set db = CurrentDb Set trm = db.OpenRecordset("顧客テーブル", dbOpenDynaset) tyuusitu = "顧客ID='" & Me![顧客ID] & "'" trm.FindFirst tyuusitu trm.Edit trm![変更住所] = Me![変更住所] trm.Update: trm.Close

関連するQ&A

  • フォームに新規レコードを入力できない

    アクセス2000 ウィンドウズ98 1.テーブル T_Master ID(主キー)、名前、住所 2.テーブル T_Detales ID(主キー)、基本ID、日付、金額 リレーション→T_MasterのID(主キー)=T_Detalesの基本ID(1対多) 結合プロパティ→2 フォーム(データシートビュウ) 名前  住所  日付  金額 山本  港区  3/19  3000 山本  港区  3/20  2000 山本  港区  3/22  4000 田中  新宿  2/17  1000 田中  新宿  1/17  1200 田中  新宿  3/22  1500 石井  横浜  3/22  4000 という具合に表示されています。 さらにフォーム開くときにフィルターによって、 名前  住所  日付  金額 山本  港区  3/19  3000 田中  新宿  3/22  1500 石井  横浜  3/22  4000 という具合に3月中のデータのみ表示されるようにしています。 最後の行(石井)のあとに新しい顧客が発生したら、追加できるように作成するにはどうしたら作成できますか? 現在のところ、「石井」の後ろに新規顧客を入れようとすると、当然ながら "レコードが追加できません。テーブル'~'の結合キーがレコードセットにありません。" と表示されます。 IDフィールド(オートナンバー)を作っても見ましたが、同じエラーがでて、新規登録できませんでした。 T_Masterに顧客を新規に登録すると同時に、明細をT_detailesに書きこむ方法があれば、教えてください。

  • Access クエリ このレコードセットは・・・

    いつもお世話になります。 Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。 ■テーブル1  ・顧客ID(主キー)  ・顧客名  ・住所  ・TEL ■テーブル2  ・顧客ID  ・取引ID(主キー)  ・請求金額 ■クエリ1(集計クエリ)  ・顧客ID グループ  ・請求金額合計: Sum(請求金額) 合計 ■クエリ2(実際に使用するクエリ)  ・顧客ID(テーブル1)  ・顧客名(テーブル1)  ・住所(テーブル1)  ・TEL(テーブル1)  ・請求金額合計(クエリ1) このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。 ・請求金額合計(クエリ1)を除けば問題なく更新できます。 ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。 どなかた良い方法をご教授下さいませ。

  • Access フォーム検索

    お世話になっております。 フォームに日付を入力した時に、フィールドに同じ日付があった場合、そのレコードのデータを表示するにはどのようにすればいいのでしょうか? テーブルは、[日付]を主キーにしたクエリテーブルです。 よろしくお願い致します。

  • Access メインフォームにすべてのテーブルを

    アクセス 超初心者です。 お恥ずかしいのですがまた 超初歩的なことで困っています。 テーブルが二つあり、 一つは 基本データテーブルで 顧客コード(主キー)- 社名ー住所 もう一つは 商品履歴で 顧客コード- 商品 - 数量 このような感じです。 で、顧客コードでリレーションシップを設定して メインフォームに顧客コード・社名・住所、 サブフォームで その顧客の 商品・数量を表示させているのですが 商品履歴テーブルにデータが無い顧客データは メインフォームに表示されませんよね? どうしたら全件表示されるようになりますか?

  • Access2003でのフォーム作成について(再度です)

    民宿の顧客管理をAccessでしようかと思っています。 氏名、住所、来客日などのフィールドを持つ顧客テーブル。 来客日、その日の献立1~17までを持つ日別献立テーブル。 この2つのテーブルからクエリーを作成し、 それを基にフォームを作ってデータを両方のテーブルに振り分けしようとしたんですが、うまくいきません。 クエリーで来客日同士を結ぶとデータは表示されますが新規の入力が出来ません。 顧客テーブルの顧客ID(オートナンバー)と 日別献立テーブルに顧客ID(数値型)を挿入し、2つを結んでも一方のデータしか表示されません。 おかしいとは思いますが、何がおかしいかわかりません。 何か良い方法があればお教え下さい。

  • アクセス2007にて複数フィールドに対してのあいまい検索のやり方がわかりません

    アクセス2007を使用しています。 初心者ですので説明がわかりずらいかもしれませんが、都度補足していきますのでよろしくお願いいたします。 現在、顧客を管理するためのデータベースを作成しています。 新規顧客のデータを入力する→【F新規入力】フォーム 既存の顧客のデータを名前、もしくは住所から検索する→【F検索】フォーム を作成しました。 【F新規入力】フォームから入力されたデータは【T顧客データ】に格納されます。 【F新規入力】には『名前1』『名前2』『住所1』『住所2』『住所3』『住所4』というフィールドがあります。 『名前1』は必須入力で『名前2』は空欄でもOKとします。 住所に関しては都道府県名~地番までを『住所1』~『住所4』に分けて入力します。 【F検索】にはテキストボックス『名前検索』と『住所検索』があります。検索ボタンとサブフォームもあります。 検索キーワードを入力して検索ボタンを押すとサブフォーム内に検索キーワードを含むデータが表示されるようにしたいのです。 間違っているのかも知れませんが、【Q検索クエリ】を作成し、抽出条件を【F検索】の『名前検索』『住所検索』に入力されたキーワードであいまい検索、【Q検索クエリ】を元にサブフォームを作成すればできると思っているのですが、検索条件をあてはめるフィールドが多くて、どのように条件を設定すればいいのかわかりません。 たとえば 『名前検索』キーワード……山 『住所検索』キーワード……中町 と入力し、検索ボタンをおすと『名前1』『名前2』のいずれかに"山"を含み、かつ『住所1』~『住所4』のいずれかに"中町"を含むデータが表示される たとえば 『名前検索』キーワード……木 『住所検索』キーワード……空欄 と入力し、検索ボタンをおすと『名前1』『名前2』のいずれかに"木"を含むデータが表示される ようにするのが目標なのですが、どなたかお知恵を貸してください。。。

  • access 2007 のフォームの日付について

    access 2007 のフォームの日付について こんにちは さっそくですが質問させていただきます 立山秀利さん著の「ツボとコツがゼッタイにわかる本」で access2007の勉強をはじめたのですが、 二つのテーブル、 「注文履歴」  【フィールド:注文ID(主キー)、商品コード、個数】と、 「商品マスター」【フィールド:商品コード(主キー)、商品名、単価】を作成し、 商品コードを結合フィールドとして、リレーションを作ったのですが、 注文履歴のテーブルに、フィールド「日付(受注した年月日、書式は日付s )」を追加して、 作成→フォーム→その他のフォーム→フォームウィザードで、 この二つのテーブルから、by注文履歴のフォームを作成したのですが、 注文履歴のテーブルでは正しく日付が表示されていたのですが、 フォームの日付では#が十個ぐらいならんで、表示されてしまいました フォームでも日付が正しく表示されるようにするには、どのようにすればよいのか どなたか、回答していただけないでしょうか よろしくお願いします

  • Access 分割したテーブルを一対一で結合。新規レコードが作れなくなりました

    過去に同様の質問が無かったようなので質問します。 Access2002です。 これまで顧客名簿を一つのテーブルで管理していたのですが、フィールド数が増えてきたので、 テーブルを5分割しました。 主テーブルに対し副テーブル4つを、主テーブルのID(主キー、オートナンバー型)と副テーブルそれぞれのID(数値型)で一対一結合しています。 下記のようなイメージです。 テーブルA-テーブルB テーブルA-テーブルC テーブルA-テーブルD テーブルA-テーブルE すると、 新規レコードの登録が出来なくなってしまいました。 全部のテーブルを結合させたクエリを作って、そのクエリを基にフォームを作ったり、 主テーブルのフォームに副テーブルのサブフォームを4つ設置したり、 幾つか方法を試みたのですが、どれも同じエラーメッセージが出ます。 ↓ 「インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」 非常に基本的な質問なのかも知れませんが、お手上げです。 どなたかご教授くだされば幸いです・・・。

  • Accessでテーブルのデータを検索してフォームに表示させる方法を教えてください

    現在、アクセスでテーブルを作成しました。テーブルは患者テーブルという名前でデータはID、名前、年齢です。フォームにはID、名前、年齢のフィールドを作成しました。IDのフィールドに、ID番号を入力し患者テーブル テーブルのID番号と一致すれば、名前と年齢を自動的に表示させるモジュールを作成したいのですが、どのように作成すればいいでしょうか?ご教示頂ければ幸いです。

  • access検索フォームからメイン、サブフォームへ

    access初心者です。 先日、「メイン、サブフォームの入力」について質問した者です。 取引先の会社情報を管理するために、access2007で顧客管理を作成しています。 現在、取引先本社情報とその支店情報を新規登録及び既存顧客を編集するフォーム「会社登録フォーム」と「会社検索フォーム」を主にVBAで作成しています。 <実現したいこと>: 既存顧客を編集する場合は「会社検索フォーム」から抽出し、「選択」ボタンで会社情報を「会社登録フォーム」に呼び出し、本社及びその支店情報を編集する。 <困っていること>: 「会社検索フォーム」から顧客を選択後、「会社登録フォーム」では、支店情報は変わりますが、本社情報が変わりません。 (メッセージ:「リレーションシップが設定されたレコードがテーブル'支店テーブル'にあるので、 レコードの削除や変更を行うことはできません。」というメッセージがでます。) <会社登録フォームの環境>: 会社の本社情報をメインフォーム、その会社の支店情報をサブフォームに、単票形式のタブコントロールで複数画面にして、支店ごとに分けて入力できる登録フォームを作成しています。 本社テーブルの会社IDを主キーに、支店テーブルの支店IDを主キーにしてリレーションシップを設定し、クエリ「Q_本社支店」というテーブルを作成しています。 <会社検索フォームの環境>: ・「Q_本社支店」テーブルを元に「会社検索フォーム」を作成しています。 ・「会社名」「支店名」等で検索し、データシートで表示します。 ・ 抽出されたレコードの「選択」ボタンで、「会社ID」を「会社登録フォーム」の本社情報の「会社ID」に代入します。 色々調べてやってはみたのですが、上手くいきません。 行き詰まり感があり、困っております。 ご教授のほどよろしくお願いいたします。