• ベストアンサー

Access2003・フォーム・データ抽出コードについて

Access2003 コンボボックスで選択されたデータの、 他のレコードをテキストボックスに抽出したいです。 id,no1,no2=integer name=varchar -----test table----- id | no1 | no2 | name | ----------------------- 1 | 2 | 10 | abc | 例えばコンボボックスで『abc』を選択し、コマンドボタンをクリックすると textbox1、textbox2、textbox3にそれぞれ 『idの1』、『no1の2』、『no2の10』という値を入れたいです。 phpのようにselect文で値をとって・・・ができないことにやっと気づき、Accessの場合どのような方法があるのか検討もついていません。 めちゃくちゃ簡単なコードでも参考URLでも良いのでどなたか教えていただけないでしょうか?

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

  • ベストアンサー
  • asfd
  • ベストアンサー率21% (25/117)
回答No.2

連結フォームを使う方法と非連結フォームを使う方法があります。 非連結フォームの場合を、簡単に書くと以下のような感じです。 どうでしょう?PHPと比べてもそんなに違和感ないですよね? private sub コマンドボタン_click  Dim cnn As Connection  Dim rst As New Recordset  Set cnn = CurrentProject.Connection  Me.コンボボックス.SetFocus  rst.Open "SELECT * FROM testtable WHERE name = '" & Me.コンボ0.Text & "';", cnn  Me.textbox1.Value = rst!id  Me.textbox2.Value = rst!no1  Me.textbox3.Value = rst!no2  rst.Close exit sub

chamasd
質問者

お礼

レスありがとうございます。 asfdさんのコードを参考にさせていただき、欲しいデータを抽出できました! >Dim rst As New Recordset ここの部分でnewの使い方が正しくない・・というエラーがでましたが、ADODBっていうのを使ってみたら表示されました! 本当にありがとうございます。Accessへの学ぶ意欲が減少していたのですが、これでまたやる気復活です。 ちなみにコードです。 Private Sub buttom2_Click() Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Set cnn = CurrentProject.Connection Set rst = New ADODB.Recordset Me.combo1.SetFocus rst.Open "select * from testdb where name='" & Me.combo1.Text & "';", cnn Debug.Print rst!id Me.tb1 = rst!id Me.tb2 = rst!stms Me.tb3 = rst!file End Sub

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

textbox1,2,3は非連結テキストボックスなんですか? だたらDLookup関数で持ってくることは出来ますが データベースなんですから、そんなことはあまりしないですね >コンボボックスで『abc』を選択し、コマンドボタンをクリックすると そのレコードをフォームなどで表示するというのが普通の方法ですよ

chamasd
質問者

お礼

レスありがとうございます。 Accessに触ってまだ一ヶ月程度なもので、 連結、非連結についてよくわからず質問してしまいすいませんでした。 Dlookup関数・・・、これも要学びです。 CHRONOS_0さんのおっしゃるように、別画面にレコードを表示するのが通常とのことですので、今後そういった普通のことも踏まえていきます。ありがとうございました。

関連する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)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • ACCESSのクエリー抽出条件にIIFを使用して

    コンボボックスの値を抽出条件にしたクエリーを作成しています。 コンボボックスにて"ALL"を選択したときに、全レコードを表示したく、 以下の式を入れたのですが全表示がされません。 IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値]) Like "*" の部分がいけないのでしょうか? (偽の場合は選択した値のレコードが抽出されます) どなたか教えてください、よろしくお願いいたします。

  • Access フォームのコンボボックスでの検索

    Access2010で質問です。 フォーム上のコンボボックスで レコードを検索・抽出したいと考えています。 以下のような事をやりたい場合、 フォームやVBAをどのように 作ればよろしいのでしょうか? お忙しいところたいへん恐れ入りますが、 ご教授いただけますと助かります。 ======テーブルの説明===== 以下の3つのテーブルがあります。 ◆メインテーブル |No|職業 |住所|年齢|名前| -------------------------- |01|会社員|東京| 31|品川| |02|自営業|埼玉| 30|川口| |03|会社員|東京| 30|渋谷| |04|自営業|埼玉| 20|戸田| |05|自営業|埼玉| 20|熊谷| |06|自営業|東京| 30|太田| ◆職業テーブル |No|職名 | ----------- |01|自営業| |02|会社員| |03|無職 | ◆住所テーブル |No|地名| --------- |01|東京| |02|埼玉| |03|千葉| そして、各テーブルは 以下のようにリレーションされています。 ・職業テーブルはメインテーブルの「職業」へリレーション ・住所テーブルはメインテーブルの「住所」へリレーション =====検索方法の説明===== 検索はフォーム上で行いたいです。 フォームに以下のようなコンボボックスを2つ作成します。  コンボボックス1・・・職業が選べます  コンボボックス2・・・住所が選べます それぞれのコンボボックスで条件を選んだ後、 「実行」ボタンを押すことで検索結果を表示させたいです。 ◆両方のコンボボックスが空欄だった場合 「検索条件を選んでください」との メッセージボックスを表示させたいです。 ◆複数のレコードが抽出された場合にやりたい事 各レコードの「年齢」を比較して 値が一番小さいレコードだけが 抽出されるようにしたいです。 「年齢」が同じ値だった場合(競合した場合)は 「No」の値が小さいレコードを抽出したいです。 ◆検索結果の表示方法 抽出されたレコードの「名前」だけを フォームに表示したいです。 =====検索結果の例(やりたい事)===== ◆事例1 コンボボックス1=「会社員」 コンボボックス2=「東京」 検索結果=「渋谷」 01と03が検索にヒットしますが 「年齢」の値が小さい方(03)だけを 抽出されるようにしたいです。 ◆事例2 コンボボックス=「自営業」 コンボボックス=「埼玉」 検索結果=「戸田」 まず02と04と05が検索にヒットしますが 02の「年齢」の値が大きいので除外します。 次に04と05の「年齢」の比較ですが、 同じ値になっています。 したがって「No」の値が小さい04が 抽出されるようにしたいです。 ==================== 以上です。 できるだけ詳細に書いたつもりですが、 不足な情報がありましたらご指摘ください。 なにとぞよろしくお願いいたします。

  • ACCESS2000フォームでコンボボックスを使ったクエリーを作成したい

    ACCESS2000でデータベースを作成しています。 どなたか教えてください!! 検索フォームというのを作り、そこには「部」「課」「掛」を 選択できるようにテーブルを参照してコンボボックスを作成しました。 それぞれの項目を選択した後、「検索」ボタンを押すと コンボボックスから選んだ値と一致するレコードだけを抽出して表示させたいんです。 クエリは何となく作ったのですが、現在は全てのデータが抽出されてしまいます。 条件を一切入力していない状態なんです。 検索条件に"総務部"などと入力すればそのデータだけ抽出 されるようにはなっています。 でも、でも・・・「コンボボックスで選んで値と一致したら」抽出っていう条件をどうやって設定していいかわからないのです。 どうぞよろしくお願いします。

  • Accessのフォームで日付の範囲での抽出

    初心者です、Access2000/WinXPで使用しています、Accessのフォームで日付の範囲での抽出仕方が解らなくて困っています、日付をそれぞれコンボボックスで指定しています、コンボボックスAとコンボボックスBの日付間での抽出なのですが、それを一つのコマンドボタンで抽出したいのです、 簡単に説明します。 メニュー抽出:フォームの コンボボックスA:集合ソースメニュー/総合抽出クエリ コンボボックスB:集合ソースメニュー/総合抽出クエリ txt2(コンボボックス):集合ソースメニュー/総合抽出クエリ コマンド4(これは検索と言う名前でtxt2で指定した名前を抽出するのに使っています) Private Sub コマンド4_Click() 'レコードを抽出 Me.Requery End Sub と、してあります このコマンド4でコンボA~コンボBの期間のtxt2の品目を総合抽出クエリから抽出するにはどうすればよろしいでしょうか?宜しくお願いいたします。

  • アクセス2000でデータ抽出できない

    アクセス2000でデータ抽出できない サブフォーム上でコンボリストを使用して入力し、その条件にあったものだけを別のコンボボックスに表示したい。 フォーム:[取引名][種別][資材名] ※全てコンボリスト 取引先を選択し、種別を選択し、その2つの条件を満たすものだけテーブルから抽出し、資材名のリストに表示したいのですが、どうしたらできるかわかりません。

  • Access コンボボックスを使って抽出

    Access2000・Windows2000を使用しています。 レコードの抽出をしたいと思います。テーブルは1つ、フィールドには日付・商品名・業者名・単価・・・とあります。フォームで「商品名から抽出(コンボボックスから商品を1つ選ぶ)」または「業者名から抽出(コンボボックスから業者を1つ選ぶ)」(コンボボックスから商品を1つ選ぶ)出来るようにし、なおかつ今月のレコードのみ表示させたいのですが、まずそのテーブルを1つ作成した時点でつまづいてしまっています。 どなたかご教授お願いします。

  • Access VBAでのデータ抽出の仕方

    Access VBAでのデータ抽出の仕方 Access VBAでデータを抽出して、テキストボックスにデータを配置したいと思います。 Formにtxt1~txt10までのテキストボックスが10個あります。 テーブルからデータを引っ張ってきてレコードセットにいれます。 Dim objADOCON As ADODB.Connection Dim objADORS As ADODB.Recordset Dim strSQL As String Dim SQL As string SQL = "Select * from Table1" Set objADOCON = Application.CurrentProject.Connection Set objADORS = objADOCON.Execute(SQL) これでレコードセットを取得しました。このレコードセットは「ID」列があり、プライマリーキーを設定しています。またZAIKOという列もあります。 ID=001の時、在庫は100 ID=002の時、在庫は200 といったように条件を絞って、テキストボックスに値を入れたいと思います。 objADORS.Filter = "[ID] = '001'" txt1.value = objADORS!ZAIKO objADORS.Filter = "[ID] = '002'" txt2.value = objADORS!ZAIKO ..... を10回繰り返せば条件毎に値がセットするのはわかります。 ただし、あまりスマートなやり方ではなく、もっといい方法があるんじゃないかと思うのですが考えつきません。 何か良い方法、手段がありましたらお教え下さい。 よろしくお願いします。

  • Access2007でフィルタ条件を保存しないようにするには?

    Access2007でシステムを作っています。 表形式のフォームのフォームヘッダにコンボボックスを作成し、 コンボボックスで選択した値でレコードが抽出されるようにしたいのです。 今作っているのは、マクロの「フィルタの実行」でWhere条件のところに条件を入れています。 コンボボックスの更新後処理でそのマクロを実行しています。 フォームを開いて、1回目はうまく動くのですが、コンボボックスの値を変更しても抽出結果が最初と変わりません。 どうすればよいでしょうか? 良い方法があれば教えてください。

  • コンボボックスのリスト外入力について(Access2002)

    お世話になっております。 ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。 コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。 まとめると、 (1)コンボボックスより値を選択して、フィルタをかける。 (2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する こう言った、流れでの作業です。