• ベストアンサー

Access コンボボックスに空のレコードを表示しない方法

いつもお世話になっています。 下記の様に空データを持つテーブルの列【名称】をコンボボックスを作る際に空データのレコード【2】は表示させないようにするにはどうしたら良いのでしょうか? CD 名称  日時 1   a  07/12/01 2        3   b  08/11/30 :  :   : :  :   : :  :   : 初歩的な質問で恐縮ですがご教示ください。 宜しくお願いします。     

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

  • ベストアンサー
noname#140971
noname#140971
回答No.1

SELECT CD, 名称, 日時 FROM tab1 WHERE Len(CD & ""') AND Len(名称 & "") AND Len(日時 & "") SELECT CD, 名称, 日時 FROM tab1 WHERE Not CD Is Null AND Not 名称 Is Null AND Not 日時 Is Null 抽出条件は WHERE節で指定することが可能です。 この場合、 IS Null 演算子を利用して空値を除外する条件を指定することが可能です。 また、Len関数でフィールドの値の長さを測って指定することも可能です。 × Len(CD) ○ Len(CD & "") ○ Len(Trim(CD & "")) 私は、Len関数利用派です。

その他の回答 (2)

  • okky0707
  • ベストアンサー率22% (34/154)
回答No.3

 コンボボックスのプロパティで「値集合ソース」をクリックすると、 下向き矢印が現れるので、それをクリックしプルダウンメニューから コンボボックスの元になるテーブルを選択する。 テーブル選択後にもう一度「値集合ソース」をクリックすると、 右側の欄外に「…」というボタンが現れるのでそれをクリックする。  するとクエリビルダというウインドウが現れる。  これはコンボボックスに表示するフィールドを選択したり抽出できるウインドウで、 クエリ作成と同じ操作を行います。  テーブルのフィールドからコンボボックスに表示したいものをダブルクリックする。 名称フィールドの抽出条件に”Is Not Null”と入力し、×ボタンでウインドウを閉じる。  このとき、「ステートメントの変更を保存しますか」と聞いてくるので「はい」を選択し終了する。  これで、空白のレコードはコンボボックスに表示されなくなります。

zep1173
質問者

お礼

ご指導の通り設定しました。 期待通りの結果を得ることができました。 丁寧なご指導ありがとうございました。

noname#140971
noname#140971
回答No.2

SELECT CD, 名称, 日時 FROM tab1 WHERE Len(CD & "") * Len(名称 & "") * Len(日時 & "") True=0以外 False=0 という約束事があります。 ですから、このようにフィールドの長さを乗じても同じ結果を得られます。

関連するQ&A

  • ACCESS97のコンボボックスについて

    入社して、名刺を貰う機会が多い為、名刺を管理するものを初歩的な参考書を見てACCESS97で作りたいと思います。テーブルで数名の氏名・会社名・部署名・役職・住所を作りました。良く分からなかったので、この1つのテーブルを基にパラメータを使って検索する「検索用画面」と新しいレコードが表示される「新規入力画面」をクエリーとフォームを別々に作りました。検索用画面は、これで良しとします。しかし、新規入力画面は、同会社名が多いので、コンボボックスを作り今まで登録したものからも選べる様にもしたいです。新しいレコードでは、表示されませんが、▼で前のレコード(既に入力してあるデータ)に戻ると、エラーメッセージで「このフィールドに入力した値が不正です。例えば、数値型のフィールドに文字列を入力しました。」と出てきてしまいます。コンボボックスいうのは、コンボボックスウィザードで「テーブルまたはクエリーを表示する」を選び、表示させたいものを選ぶだけでは、いけないのでしょうか・・。くだらない質問で申し訳ありませんが、回答の方宜しくお願いします。

  • Access コンボボックスの表示データを取り出す方法

    お世話になっております。 レコードが1、2、3、・・・となっているフォームのコンボボックスの値集合ソースを別テーブルに指定して、1、2、3、・・・に該当するデータが月、火、水・・・とします。 つまり、コンボボックス上は月、火、水・・・と表示されますが、データとしては1、2、3、・・・です。 ここのデータを取り出そうとした場合、当然1、2、3、・・・が取り出されるのですが、月、火、水・・・として取り出す方法はありますでしょうか。 たとえば、このデータを他のフォームに渡す場合、月、火、水・・・として渡したいと思っています。 ご教授いただければ幸いです。よろしくお願いいたします。

  • ACCESSのコンボボックスにレコードセットでリストを表示させています

    ACCESSのコンボボックスにレコードセットでリストを表示させています。 2列表示で1を連結させています。 この状態で、コンボボックスの入力チェックを「はい」にすると、コンボボックスに直接入力したときに、「リストにありませんと」エラーになってしまいます。 リストから選択すれば、大丈夫なのですが・・・。 コンボボックスにレコードセットを使用したときには、入力チェックは使えないのでしょうか? Accessのバージョンは2003です。 よろしくお願いします。

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • Accessコンボボックス

    Access2000でコンボボックスで日付を選択できるように したいとおもっています。 リストは、予め1999年~2010年をセットするなどして 月・日についてもコンボボックスを作成しています。 規定値ではformat(year(date()),"0000")などとして 現在日時から年・月・日を取得しています。 コンボボックス選択後、一つのデータとして入れ込んでいます。 次からは前のデータを参照し、コンボボックスは 予めその行が選択されているようにしたいのですが、 うまくいきません。 レコードから年・月・日などを取って コントロールソースに =format( year([tx_date]), "0000" ) ※tx_dateには"2002/12/18"という形で入っています。 を入力すると、コンボボックスを選択することが できません。 上記のような状況を打開する策をお教えいただけませんでしょうか? よろしくお願いいたします。 わかりにくくてすみません。

  • Access コンボボックスについて

    やり方がわからないので教えてください。 Access2003を使っているのですが、フォーム上に設定したコンボボックスから、あるテーブルの3列目を抽出したいのですが、どのように設定するのか分かりません… 自動的に1列目が抽出されてしまいます。 コンボボックスのプロパティの中に何列目かを指定する部分が内容に思うのですが…

  • Accessコンボボックスにレコードセット代入について質問です。

    Accessコンボボックスにレコードセット代入について質問です。 コンボボックスにレコードセットの値と代入したいと考えています。 Set Me![コンボボックス名].Recordset = rs で代入できたのですが、連結列をどうしても代入できません。 | ID | MachineName | | 1 | MachineA | | 2 | MachineB | | 3 | MachineC | の様なレコードセットをコンボボックスに代入したいです。 保存列はIDフィールドです。 どなたかご存じの方がおられましたら、アドバイスよろしくお願いいたします。 m(_ _)m

  • コンボボックスの値が消えてしまいます。

    コンボボックスの値が消えてしまいます。 フォーム(1)にコンボボックスA(値集合ソースはテーブル1)があります、この リスト外入力時で別フォーム(2)(レコード追加用)を開きテーブル1にレコードを追加、 フォーム(2)を閉じる時にコンボボックスAをリクエリかけてフォーム(1)に戻るとコンボボックスAが空になっているのでリストを開き選択し直さなければいけません! フォーム(1)に戻った時コンボボックスAに入力した値を選択させておくにはどの様にすれば良いか アドバイスよろしくお願いいたします。 WIN XP ACCESS 2003で作成しています。

  • Access2000のコンボボックスで複数列の絞込み

    1つのテーブルに「A」「B」「C」という列にデータが入力されていて、それを1つのコンボボックスで絞込みをやりたいと思っていますができません。 コンボボックスで選択したデータを「A」「B」「C」のすべてから検索し含まれる物全てを抽出したいです。   A  B  C 1 山  川  谷 2 山  水  川 3 川  谷  山 1つのコンボボックスで「谷」を選ぶと、1と3のレコードを抽出したいです。 良い方法は、ないでしょうか?

  • Access コンボボックスの絞り込み後の表示

    Access2002を使用しております。 コンボボックスAに連動したデータを絞り込みさせるコンボボックスBがありますが、一旦入力後は、コンボボックスAの値にかかわらずコンボボックスBに入力したデータを表示させるにはどうしたらよいでしょうか? 例として、次の3つのテーブルを基にデータベースを作成しております: メインテーブル フィールド名: ID 社名 担当者 社名テーブル ID   社名   住所 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    A社 2    B社  担当者テーブル ID   社名ID   担当者名  電話番号 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    1      木村 2    2      佐藤 3    1      田中 4    2      斎藤 メインテーブルを基にしてフォームを作成し、 「メイン」というフォーム名にして 「社名」「担当者」をフィールドのコントロールをコンボボックスに変更しました。 「社名」フィールドの値集合ソースを「社名テーブル」から引き出し SELECT [社名テーブル].ID, [社名テーブル].社名 FROM 社名テーブル; 列数2  で設定し、社名をコンボボックスで選択できるようにしました。 そして 「担当者」フィールドの値集合ソースを「担当者テーブル」から引き出し SELECT 担当者テーブル.ID, 担当者テーブル.担当者名, 担当者テーブル.社名 FROM 担当者テーブル WHERE (((担当者テーブル.社名)=forms!メイン.社名)); で設定しました。 「社名」フィールドの「更新後処理」で Private Sub 社名_AfterUpdate()     Me!担当者.Requery End Sub を設定しました。 「メイン」フォームをフォームビューで開き、「社名」コンボボックスで「A社」を選択すると 「担当者」コンボボックスで「木村」と「田中」が表示されるので、「木村」を選択します。 次のレコードに移り、「社名」コンボボックスで「B社」を選択すると 「担当者」コンボボックスで「佐藤」「斎藤」が表示されるので、「佐藤」を選択します。 さて、「佐藤」を入力した時点で、前のレコード(「A社」「木村」を選択)に戻ると 「担当者」欄が空欄で表示されます。 メインテーブルには全てデータは入力されています。 データ入力時は「担当者」コンボボックスは「社名」コンボボックスで選択した値に連動させたいのですが、 このようにデータ入力済みの場合は 最初のコンボボックスの値にかかわらず(この場合は直近に選択した社名がA社・B社のいずれかであろうとも) 入力済みのデータ(「木村」「佐藤」)がフォームに表示されるようにしたいのですが 何か良い方法はないでしょうか? 出来れば入力専用と読み取り専用のフォームを2つ使用するのではなく、1つのフォームで事足りればありがたいのですが・・・

専門家に質問してみよう