• ベストアンサー

【ACCESS】リストボックスに抽出してからテキストボックスに代入するには?

ACCESS2003、初心者です。 医療事務のデータベースを作っています。 予約フォーム(frm予防接種予約)を作っていますが、次の(1),(2)の作業がうまくできなくて困っています。 (1)リストボックスへの抽出(検索ボタンを押すまではリストボックスの中は空の状態) frm予防接種予約のフォームで非連結テキストボックスに生年月日を入力して、検索ボタンを押す ↓ tbl患者個人票テーブルの生年月日と一致するレコード(氏名や住所)をリストボックスに表示させたい。 (2)表示されたリストボックスの中のレコードをクリックすると、そのレコードが氏名や住所に代入される。 一連の作業をfrm予防接種予約フォーム上で行いたいのですが、どのようにしたら良いのでしょうか?

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

(1) は、リストボックスではなく、サブフォームを使ったほうが簡単かも。  リストボックスの場合は、値集合ソースをSQL文で作成し、テキストボックスの  更新後で、RowSource プロパティに代入し、Requery をかけてやればいいかと。  VBA Or マクロが必要ですね。   (2) は、リストボックスを使うのなら、Column プロパティが使えると  思います。 > そのレコードが氏名や住所に代入される。  きちんと正規化されているのなら、氏名・住所等を代入する必要はないです。  患者ID?のような値を入れてやれば、あとはクエリで対応できますので。  

kanames
質問者

お礼

返答ありがとうございます。 (1)は、クエリとRequeryでうまくいきました! コードは、 Private Sub 代入検索_Click() Me.代入リスト.Requery End Sub です。 (代入リストはテキストボックス、代入検索はコマンドボタンです) (2)は、Columnでやってうまくいきました! ちなみに、(2)では事情によりクエリを使いたくなかったのでVBAで代入しました。 コードは、 Private Sub 代入リスト_Click() Me.診察券 = 代入リスト.Column(0) Me.氏名 = 代入リスト.Column(1) Me.住所 = 代入リスト.Column(2) End Sub です。 ありがとうございました。 おかげで助かりました。

関連するQ&A

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • アクセスで単票でリスト内もフィルタかけたい

    2002アクセスを使っている初心者です。社員名簿を作っています。テーブル社員名簿.TBL、フィールド「氏名」・・・その他について、単票フォームを作成しました。ツールボックスより、リストコントロールを選択して、貼り付けると、リストボックスウイザードが立ち上がり、その中の3つのメニューの3番目の「リストボックスで選択した値に対応するレコードをフォームで検索する」を選択して、フィールド「氏名」を元に検索してその氏名のレコードの情報をを表示するようにしました。社員全データでは、調子良く動いています。この度、「課」別に表示しようとしています。メニューバーの中のフィルタ(漏斗の絵)を使って、選択フィルタで目標の「課」選択して、実行フィルタを押すと、単票フォームのレコード数は変化して、うまくフィルタしますが、リスト内の「氏名」データがフィルタされません。どうしたらクリックと同時にリスト内のフィールド「氏名」もフィルタされるのですか?宜しくお願いします。

  • 抽出条件が複数ある場合で,抽出元のデータに未入力がある場合

    Accessを利用して住所録のデータベースを作成しています。 検索用フォームのレコードソースにクエリを指定して,フォーム上にテキストボックスを2つ配置し,コマンドボタンをクリックして抽出結果をフォームに表示させます。一つめのテキストボックスには氏名,二つ目のテキストボックスには,勤務先の入力をします。以下の条件での検索結果をフォーム上に表示させたいのですが,(3)の場合に,勤務先がない(未入力の)人のデータも同時に抽出されてしまいます。 (1)氏名のみの条件で該当する人 (2)氏名及び勤務先の条件で該当する人 (3)勤務先のみの条件で該当する人 (4)条件を入力しない場合 <住所録> ID___氏名_________フリガナ___________勤務先 1____鈴木 健一__スズキ ケンイチ__新日本商事 2____中村 主水__ナカムラ モンド___新日本商事 3____山田 太郎__ヤマダ タロウ_____ クエリには WHERE ((([tbl THE CARD].氏名) Like "*" & [Forms]![frm_検索用]![氏名] & "*") AND (([tbl THE CARD].勤務先) Like [Forms]![frm_検索用]![勤務先] & "*")) OR ((([tbl THE CARD].氏名) Like "*" & [Forms]![frm_検索用]![氏名] & "*") AND ((([tbl THE CARD].[勤務先]) Like [Forms]![frm_検索用]![勤務先] & "*") Is Null)) OR ((([tbl THE CARD].勤務先) Like [Forms]![frm_検索用]![勤務先] & "*")) ORDER BY [tbl THE CARD].ID; と記載しました。 例えば,氏名と勤務先の両方の検索結果を表示させる場合, ・氏名が該当し,勤務先が空白のデータ が抽出されます。氏名と勤務先の両方に検索条件をいれたときには,勤務先が空白のデータを抽出しないようにしたいのですが,どうしたら良いでしょうか。氏名だけで検索するときには,勤務先が空白かどうかは考慮しない結果を表示させたいと思います。 過不足があると思いますが,ご指導宜しくお願いします。

  • ACCESS2000 テキストボックスに入力できない

    お世話になります。 環境:Win2000SP4 ACCESS2000 「メインフォーム」から、条件入力用のテキストボックスがある「条件フォーム」を開いた時、そのテキストボックスに一切入力できなくなります。「条件フォーム」を単独で開いた時には入力できます。条件フォームはオートフォーム:単票形式で作り、フォームヘッダーにテキストボックスと実行ボタンを付加しました。以前のご質問(QNo.394049 Access2000 テキストボックスに文字を入力できない理由が判りません。)に、元が集計クエリであれば入力できないとありました。まさに元が集計クエリなのですが、条件フォームを単独で開いた時には入力できますし、結果も表示されます。 どのような情報が必要かわかりませんのでとりあえず次の内容を。。。 ■集計クエリのSQL  SELECT 使用TBL.年月日,sum(使用TBL.使用金額) AS 使用金額の合計  FROM 使用TBL  GROUP BY 使用TBL.年月日  HAVING (((使用TBL.年月日)=[Forms]![条件フォーム]![txt_年月日])); ■テキストボックス(txt_年月日)  使用可能:はい  編集ロック:いいえ  IME入力モード:コントロールなし  IME変換モード:無変換 メインフォームを経由すると、なぜ入力できなくなるかわかりません。なにか問題でもあるのでしょうか?どなたかご教授頂けないでしょうか?

  • Accessでリストボックス

    フォームに複数選択可能なリストボックスがあり、そこで選択されたレコードをコマンドボタンをクリックしたときにテーブルに書き込みたいのですがどうすればよいかわかりません。HELPにも、またいろいろな書籍にも載っていませんでした。 どうかお願いします。

  • ACCESSのリストボックス抽出について

    ACCESSにおいて、住所録テーブルを用意します。 フォーム上で県、市のリストボックスを作ります。 住所録テーブルには県と市のフィールドを作り、県名と市名を入力しておきます。クエリを用意し、リストボックスの県で例えば東京を指定するとそれに該当する市が抽出されて市のリストボックスから選択できるようにしたいのですがクエリ上では表示されるのですがリストボックスに反映されません。 どのようにすれば出来るのでしょうか。 (ちょうど教えて!gooで質問する際にカテゴリーの大分類から小分類を選択する時のようにです。)

  • ACCESSフォームのリストボックスでレコードが選択できない

    ACCESS2000です。 フォームの左側に親テーブルのフィールド1の値を選択させるリストボックスがあり、そこで選択したレコードにリンクする子テーブルのレコードをフォームの右側にサブフォームで表示させたいのですが、リストボックスでレコードを選択できません(クリックしても反転しません)。でもレコード移動ボタンを押すと、リストボックス内の該当レコードがちゃんと反転し、右側のサブフォームにも正しく反映します。 リストボックスのプロパティはくまなく見ましたがそれらしい設定項目はみつかりませんでした。どこを直せばよいのでしょうか。

  • Access2003 リストボックスの制限

    お世話になります。 環境:Access2003 以前、フォーム上にリストボックスを設置し、あるテーブルの内容をそのまま表示し、テキストボックスにListcountで算出した行数も表示するよう作成しておりました。 現状、そのテーブルは20万レコードを超えており、久しぶりに当該フォームを開いたところ、Listcountが65534と表示されました。リストボックスを見てみると確かにテーブル全てのレコードが表示されている訳ではなさそうでした。 また、リストボックスのプロパティより集合ソースを見ると、ちゃんとテーブル全てのレコードは表示されましたので、リストボックスの制限により6万ぐらいしか表示されてないと見受けられるのですが。。 Accessのリストボックスには表示できるレコード数(サイズ?)などの制限があるのでしょうか。 以上、宜しくお願い致します。

  • 【ACCESS】フォーム上で検索して複数代入するには?

    ACCESS2003、初心者です。 医療事務のデータベースを作っています。 tbl薬剤等製品のテーブルに 製品番号、製品名、販売元、製造番号 などがあります。 フォーム上でコンボボックス(製品番号)から、tbl薬剤等製品の製品名、製造元、販売元、製造番号を抽出してテキストボックスに代入したいのです。 下記のようなコードで代入できたのですが、これだと処理が重い気がします。スマートなコードじゃないですよね? Private Sub 製品番号_Change() [製品名].Value = DLookup("[製品名]", "tbl薬剤等製品", "[製品番号] = '" & Forms![frm接種記録]![製品番号] & "'") [製造元].Value = DLookup("[製造元]", "tbl薬剤等製品", "[製品番号] = '" & Forms![frm接種記録]![製品番号] & "'") [販売元].Value = DLookup("[販売元]", "tbl薬剤等製品", "[製品番号] = '" & Forms![frm接種記録]![製品番号] & "'") [製造番号].Value = DLookup("[製造番号]", "tbl薬剤等製品", "[製品番号] = '" & Forms![frm接種記録]![製品番号] & "'") End Sub もっと簡単に代入できるコードの書き方はありますでしょうか?

  • ACCESS リストボックスに検索結果を表示したときに

    ACCESSのフォームで、 検索条件を入れて、【検索】ボタンを押下すると、 リストボックスにヒットした一覧を表示するというものを作っています。 そのとき、【検索】ボタンを押下した後、リストボックスの一番上にフォーカスがあたっているように(黒く選択されているように)することは可能でしょうか。 それはどのようにすればよいでしょうか。 よろしくお願いします

専門家に質問してみよう