• ベストアンサー

空のリストボックスに抽出した項目を追加させたい。(access2000)

いつも拝見させていただき勉強させて頂いております。 抽出結果をリストボックスに追加させたいのですがうまくいきません。 access2000を使用しております。 テーブル構成は以下の通りです。 会員NO|会員名|会員住所|登録日| 0001  あああ 東京   20050102 0002  いいい 大阪   20050103 0003  ううう 名古屋  20050105 このテーブルを使用して登録日で会員を日付範囲で抽出して同フォーム内の空のリストボックスに表示させたいのです。 以下のように記述してみたのですがどのようにすればいいのかわかりませんでした。 Private Sub 抽出_Click() Dim strFilter As String strFilter = "登録日>=" & Me.抽出開始日_text.Value & " And 登録開始日<=" & Me.抽出終了日_text.Value 新規会員_list.additem ??????? ※ここまではなんとかやってみたのですがどうすればいいのかよくわからずギブアップしてしまった次第です。 初心者で大変申し訳ないのですが、お知恵をお貸しください。 よろしくお願いいたします。

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

  • ベストアンサー
  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.2

Accessフォームなら2通りの方法があります 1.「値集合ソース」を利用する ・リストボックスのプロパティ「列数」を"2"に設定 ・リストボックスのプロパティ「値集合タイプ」を"テーブル/クエリ"に設定 ・リストボックスのプロパティ「値集合ソース」に下記のようにSQLを設定(VBAから) Me.新規会員_list.RowSource = "SELECT 会員NO, 会員名 FROM テーブル名 WHERE 登録日 Between '" & Me.抽出開始日_text.Value & "' And '" & Me.抽出終了日_text.Value & "';" 2.レコードセットを使用する ・リストボックスのプロパティ「列数」を"2"に設定 ・リストボックスのプロパティ「値集合タイプ」を"値リスト"に設定 ・対象のテーブルをすべてレコードセットに取得する ・取得したテーブルデータを全件追加していく あと気になった点ですが、「登録日」フィールドは日付型でしょうか?または文字列型? 条件文に対象のフィールドを記述するときには、文字列型の場合は"'"で括らなければなりません 文字列型の場合は"#"で括ります まずは難しく考えることより、デザイン上からリストボックスのプロパティ「値集合ソース」をいじって見てください 「クエリビルダ」で表示する内容を指定することができますよ

naka5456
質問者

お礼

結局GW明けまで悩んでおりましたところ 昨日すんなりと動くようになりました。 もう少し私個人、勉強する必要があったようです。 丁寧なご回答ありがとうございました。

naka5456
質問者

補足

ご回答ありがとうございます。 土日の間に頭をひねりながら試してみました、 値集合ソースで試してみたところ、VBAのところで ご指南いただいた、構文;Me.新規会員_list.RowSource = "SELECT 会員NO, 会員名 FROM テーブル名 WHERE 登録日 Between '" & Me.抽出開始日_text.Value & "' And '" & Me.抽出終了日_text.Value & "';"と入力するとSQLステートメントが正しくないと出てきてしまいます。 SELECTまたは、 そこで SELECT 会員NO, 会員名 FROM テーブル名 WHERE 登録日 Between '" & Me.抽出開始日_text.Value & "' And '" & Me.抽出終了日_text.Value & "';としてみましたがうまくいきません。 Select または Deleteを使用してくださいとのことなのでこのようにしてみました。 少し難しく考えすぎなのかもう少し簡単な方法をを考えてみたいと思います。 ありがとうございました

その他の回答 (1)

回答No.1

こんな感じですかね? リスト(コンボ)の設定は 項目1、項目2の2つを表示するものとします。 Do Until TABLE.EOF Me.list_sample.AddItem TABLE!DATA_1 & ";" & TABLE!DATA_2 & ";" Loop サンプルですので動作確認はしていません。

naka5456
質問者

お礼

ご回答ありがとうございます。早速試してみたいと思います。

naka5456
質問者

補足

ご回答ありがとうございました。 このようにしてみました、 Private Sub 抽出_Click() Do Until TABLE.EOF Me.新規会員_rist.AddItem TABLE!会員NO & ";" & TABLE!氏名 & ";" Loop End Sub なんども考えてやっているのですが、メソッドまたはデータメンバが見つからないと表示されてしまいます。 私の知識不足なのかなかなかうまくいかないものです;;

関連するQ&A

  • Access リストボックス複数選択を抽出条件に

    Access リストボックスで複数選択した値をクエリの抽出条件にしたいです。 ※PC環境:Win7 Access2007 Excel2007 リストボックスで複数選択した値を取得する事はできるのですが、 クエリ実行をすると結果が0件になってしまいます。 他の方のQAなどを参考に以下を作成しましたが、ほしい結果が得られず困っています。 おわかりになる方、ご教示いただけますようお願い致します。 <動作概要> 「画面」の「リストボックス」で複数選択し、 [実行]ボタンを押して、「リストボックス」で選択した値を、「テキストボックス」にセットし、 クエリの抽出条件に、in(テキストボックス)をセットし、テーブルから合致するデータを抽出したい <リストボックス> ※年区分テーブル参照 区分,区分名 1,1年 2,2~3年 3,4~5年 「2,2~3年」「3,4~5年」を選択 ※「区分」は数値型 <VBA> Private Sub 実行_Click()  Dim i As Variant  Me.テキストボックス = Null  For Each i In Me.リストボックス.ItemsSelected Me.テキストボックス = Me.テキストボックス & Me.リストボックス.Column(0, i) & "," Next If Me.テキストボックス <> "" Then  Me.テキストボックス = Left(Me.テキストボックス, Len(Me.テキストボックス) - 1) End If   'ここで画面を確認すると「テキストボックス」には、「2,3」 がセットされている DoCmd.OpenQuery "クエリ"   'テーブルには抽出条件に該当するデータがあるが、クエリ実行結果は0件 End Sub <クエリ SQL> SELECT テーブル FROM テーブル WHERE (((テーブル.区分) in([Forms]![画面]![テキストボックス]))); ※「テーブル.区分」は、数値型 どうぞよろしくお願い致します。

  • Accessのリストボックスを使って抽出

    抽出用のフォームを作成しているのですが、その中にリストボックスがあり、何も選択しなかった場合は、すべての項目が表示される様にしたいと思っております。自分なりに色々と調べたのですが、どうしても希望の動作になりません。どの様にすれば良いのか教えて頂けないでしょうか? Access2003を使用しております。 Form-A(メインフォーム名)←テーブルAを元に作成(項目名同じ) 番号(主キー)、氏名、性別、A1、A2・・・ A1、A2は、する・しないのどちらかを入力。 Form-B(サブフォーム名)←テーブルBを元に作成(項目名同じ) ID(主キー)、番号、担当、訪問日、次回訪問日、期間 担当は、値集合タイプ:テーブル/クエリ、値集合ソース:テーブルあ(フィールドは担当のみ)5名程の名前を登録しし、リストボックスにて選択できる様にしています。 現在、下記の様な抽出用のフォームがあります。 Form-抽出(抽出用フォーム名) A1(チェックボックス) A2(チェックボックス) 担当(リストボックス:値集合タイプ:テーブル/クエリ、値集合ソース:テーブルあを設定) [OK]ボタンを押すと抽出(クエリQにて条件を設定)する様にしています。 クエリQ(テーブルA、テーブルBを元に作成) 番号(主キー)、氏名、性別、A1、A2、ID(主キー)、番号、担当、訪問日、次回訪問日、期間 現在設定しているのは、 A1の抽出条件:IIf([forms]![Form-抽出]![A1]=True,True,False) A2の抽出条件:IIf([forms]![Form-抽出]![A2]=True,True,False) 担当の抽出条件:[Forms]![Form-抽出]![担当リストボックス] 訪問日の抽出条件(複数情報がある為、最近の訪問日のデータのみ対象となる様にしています。):DMax("訪問日","テーブルB","[テーブルB]![番号] ='" & [テーブルB]![番号] & "' And 訪問日 <Date()") 今の設定ですと、担当を選択しなかった場合、何も抽出されてきません。 これを、すべて表示出来る様にしたいのが希望です。 Access初心者の為、説明がわかりづらかったり情報が足りないかもしれませんが、すぐに補足致しますので、どうぞよろしくお願い致します。

  • アクセスでのテキストボックスの複数条件での抽出

    Private Sub 検索_Click() Dim strFilter1 As String Dim strFilter2 As String Dim strFilter3 As String strFilter1 = "学校名 = '" & 学校名1 & "'" strFilter2 = "学校区分 = '" & 学校区分1 & "'" strFilter3 = "キャンパス = '" & キャンパス1 & "'" Me.Filter = strFilter1 & " or " & strFilter2 & " or " & strFilter3 Me.FilterOn = True End Sub (1)学校名・(2)学校区分・(3)キャンパスと3つのテキストボックスがあり 3つの抽出条件を満たすレコードをフォームに表示させたいのですが 学校名を仮に早稲田大学といれ絞れるのですが次に学校区分を大学 と入れるとほか大学も抽出されてしまいます。 学校名を抽出させたら、その範囲で学校区分の大学を抽出させたいのですが どのようにすればいいのでしょうか? (1)のみの抽出の場合や(1)と(2)のみの 場合があるのでandの完全一致ではありません。

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

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

  • Accessのクエリデザインで条件抽出のテキストボックス

    アクセス初心者です。 既に作成済みのクエリを実行する時、いつも「開始日」と「終了日」を入力するテキストボックスが 出てきていました。 例えば開始日のボックスに2009/04/01を入力してEnterを押すと次に終了日を入力する ボックスが出てきて2009/05/31と入力して実行するとそのデータベースのその日付の期間の データが抽出されるようになっていました。 あるとき必要がありそのクエリのデザインを開き別のテーブルの抽出条件を追加したり していたときに、その日付(登録日時というテーブル)の部分の抽出条件を消してしまいました。 元通りにしたいのですが、どのような式が入力されていたのかわかりません。 私なりに調べてみて、テキストボックスは表示されないのですが、クエリのデザインを 開いている状態でそこに 「Between #2009/04/01# And #2009/05/31#」などと日付を入力すればできることは わかったのですが、テキストボックスが表示されるように元通りにすることはわかりませんでした。 お分かりになる方、教えてください。

  • アクセスのテキストボックスでOR条件の設定をしたい

    抽出用のフォームを作成し、非連結でテキストボックスを設定し、[抽出]ボタンを押すと別のフォームに抽出出来る様にしています。これを、空白区切りで複数のキーワードを入力するとOR条件で抽出出来る様にしたいと思っています。 F_抽出←抽出用フォーム syurui←非連結のテキストボックス名 抽出←コマンドボタン T_データ 番号(主キー)、氏名、住所、性別、種類(テキスト型)、・・・ F_結果←抽出条件を反映するフォームで、T_データの項目をすべてリスト形式で表示出来る様にしています。 色々調べてみて、下記の設定をしてみました。 Private Sub 抽出_Click() Dim strFilter As String strFilter = "*" & Replace(Me.syurui, " ", "* Or *") & "*" strFilter = BuildCriteria("種類", dbText, strFilter) DoCmd.OpenForm "F_結果", , , strFilter End Sub 実行してみると、実行時エラー 2431 指定した式の構文が正しくありません。と表示されてしまいます。 4行目を下記に書換えてみたのですが、 strFilter = BuildCriteria([T_データ]![種類], dbText, strFilter) 実行してみると、実行時エラー 2465 指定した式で参照されている'|'フィールドがみつかりません。 と表示され、希望通りの結果が得られません。 アクセス初心者の為、説明がわかりづらかったり情報が足りないかもしれませんが、すぐに補足致しますのでどうぞよろしくお願い致します。

  • リストボックス

    すいません以下の処理に困っております。 リストボックスで値を取得して他のリストボックスにその値を 出力したいのですがまったくできません。 <例> リストボックス1 a b c リストボックス2(上で選択した値を出力) a ちなみに構文は、 ------------------------------------------------------------ Private Sub btn選択_Click() ListBox2.Text = ListBox1.Text 'ListBox1.ListIndex + 1 & ": " & ListBox1.Text End Sub Private Sub CommandButton1_Click() End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub UserForm_Initialize() With ListBox1 .AddItem "スケジューラ" .AddItem "データ変換" .AddItem "DWH Server" .AddItem "PPP Server" .AddItem "ファイヤーウォール" .AddItem "暗号オプション" End With End Sub ---------------------------------------------------- 初心者でまったくできません。 御教授をお願いします。

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

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

  • Access2007でフォームのリストボックスから

    Access2007でフォームのリストボックスから選択したフィールドをクエリしたいのですが どうもうまくいきません。 テーブル数は10個くらいあり、全テーブルのフィールド数は100超あります。 テーブル1に一意のIDがあり、それに対して他のテーブルとリレーションシップで繋いでいます。 1.全テーブルのフィールドリストを作るのに「全テーブルクエリ」を作成 (テーブル1.IDのLEFT JOINでくっつけています。) 2.全テーブルクエリのコピーを作成し、リストから選択したフィールドのみを表示 3.選択した全フィールドのデータにNull以外のデータのみを表示するようフィルターをかける 以下、作成したVBAですが、実行すると、3.がうまく動いてくれず、Null値も表示してしまいます。 しかし、エラーは出ません。 フィルター適用になっていますが、最後のフィールドにフィルターマークが出ているだけで 実際はかかっていません。。 ========== Option Compare Database Option Explicit Dim dbs As Database Dim qdf As QueryDef Dim IDX As Long 'リストのインデックス用 Dim i As Integer Dim F_name() As String Dim strDate As String '現時刻取得 Dim Path As String Public Sub 抽出_Click() Set dbs = Application.CurrentDb strDate = Format(Now, "_mmdd_hh:mm") If Me.リスト.ItemsSelected.Count = 0 Then MsgBox "抽出する項目を選択してください。" Exit Sub Else Application.DoCmd.CopyObject , "抽出結果" & strDate, acQuery, "全テーブルクエリ" Set qdf = dbs.QueryDefs("抽出結果" & strDate) For IDX = 1 To Me.リスト.ListCount Let qdf.Fields(Me.リスト.ItemData(IDX - 1)) _ .Properties("ColumnHidden").Value = Not (Me.リスト.Selected(IDX - 1)) Next End If DoCmd.OpenQuery "抽出結果" & strDate ReDim F_name(qdf.Fields.Count) For i = 1 To qdf.Fields.Count F_name(i - 1) = qdf.Fields(i - 1).Name If qdf.Fields(F_name(i - 1)).Properties("ColumnHidden").Value = True Then '項目が非表示の場合何もしない Else       'Null以外のデータを抽出 DoCmd.ApplyFilter "抽出結果" & strDate, "('" & F_name(i - 1) & "') Is Not Null" End If Next i dbs.Close Set qdf = Nothing Set dbs = Nothing End Sub ============== ですが、違うやり方があるのではないか・・と1週間くらい悩んでおります。 やりたいことは、 (1)まず100個以上あるフィールドをフォームのフィールドリストから選定。 (2)選定したフィールドのデータにNullまたは長さ0の値があればその行ごと非表示にする。 この2つです。 とりかかってから1カ月以上経ちます。。 お知恵をお貸しください!!!

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

専門家に質問してみよう