• 締切済み

ACCESSのコンボボックスの利用

ACCESS2000を使用しています。 コンボボックスを使用し、複数の列を表示しています。 連結列以外の列の項目を取得したい場合、どのようにすれば参照できるのでしょうか。  実際には、名前順に表示しているのですが、同姓同名の人がおり、後ろのデータを選択しても、最初のデータが取得されます。  なぜかというと、非連結にしてあり、イベントで取得した名前をキーにして再びファイルを読みに行っているからです。  なぜ、こんな作り方をしているかというと、連結にすると、最後の画面で 不良のデータがあるとそのままACCESSのほうで書き込んでしまうのがあるからです。 連結しても、項目のヌルデータの取得を認めないようにすれば 出来るらしいのですが、 いつも非連結で作っています。  よろしく御指導ください

みんなの回答

  • teppy
  • ベストアンサー率50% (9/18)
回答No.4

>同姓同名の人がおり、後ろのデータを選択しても、最初のデータが取得されます この「同姓同名」は、データには漢字(又はひらがな)が使用されていないでしょうか? 連結列に半角英数字以外のものを使用すると、コンボボックス&リストボックスは正常に動作しないことが多々あります ARCさんがNo.3で記しているイメージように、コンボボックスのコントロールソースには、 ID(絶対に重複しない番号)を含め、なおかつIDは一番左の列にし、連結列にすることがよろしいです (こうすると、IDの列幅を「0」にすることで、IDはコンボボックスに表示されなくなります)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

ん~、どの列を見てもNullっていうのは、[コントロールソース]で指定したフィールドのデータが、[値集合ソース] で指定したデータの中に見つからないときの症状です。 つまり、 受注明細テーブル  明細ID  商品ID   : 商品マスタテーブル  商品ID  商品名   : ってなときに商品明細テーブルを表示するフォームを作り、そのフォーム中でコンボボックスを使って、商品名を表示する。 商品明細には商品IDが100番のデータが入力されているのに、商品マスタには商品IDが100番の商品が無い、という、異常なデータが入力されている のような状況のときに、フォーム上で問題の商品ID=100になっているデータを表示してしまうと、コンボボックスの全ての列がNullになります。 恐らく、今回の場合は、フォーム側には半角空白1コのデータがあるけれども、コンボボックスの「値集合ソース」で指定されているデータの中には、それに対応するデータが無い、っていうような状況が起こっているのでは? 推測なんですが。 それでわ!

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

例えば String型の変数にNullを代入しようとしてエラーになってしまうってことですか? その場合は、NZでNULLを打ち消してやるとうまく動作します。 dim strData As String : strData = NZ(Me.コンボ0.Column(0),"") などとすると、データがNullの時は、""が代入されるようになります。 また、IsNull()関数を使って、IsNull(Me.コンボ0.Column(0))とすると、データがNullか否かを知ることが出来ます。

yamamichi
質問者

補足

またすぐに返答頂きありがとうございます コンボボックスに4つの列を表示しています。 連結列がなぜかヌルデータになっているのです。 DBのテーブルでは1バイトのスペースが入っているのですが無視されているようです。 そして、連結列(1列目)がヌルだと、2列目以降何が入っていようと、すべて参照するときにヌルになっているのです。  理解に苦しんでいます。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

Me.コンボ0.Column(0) 'コンボボックスの1列目を取り出す Me.コンボ0.Column(1)'コンボボックスの2列目を取り出す Me.コンボ0.Column(0, 1)'コンボボックスの2行,1列目を取り出す こんな感じです。 ちなみに、連結にしておいて、不良データをBeroreUpdateイベントでチェックするようにしてもいいですよ。 もし不良だった場合、オブジェクト.Undo で、変更を元に戻せます。

yamamichi
質問者

補足

早速の回答ありがとうございました。 やってみたら、うまくいきました。 ですが、コンボボックスにヌルデータがあると、うまくいきません。 これは、ファイルをきれいにしておく必要があるのでしょうか。  イベントで逃げることは出来ないのでしょうか。 また、お願いできるでしょうか

関連するQ&A

  • アクセス97のコンボボックスについて

    OSはACCESS97です フォーム上のコンボボックスに 2列 リスト表示できるようにしています。 1列目を選択するのに 2列目も表示させている状態です。 選択すれば1列目の値は取得できます。 今回 その同じ行の1列目と2列目を それぞれ別のテキストBOXに 格納することは できるのでしょうか? 例えば 1列目に A 2列目に AA とデータがあれば Aを テキストBOX1 に AAをテキストBOX2に 格納したいのです。 宜しくお願いします。

  • アクセスでコンボボックスの連結を使用しています。

    アクセスでコンボボックスの連結を使用しています。連結内容はフォーム画面で1つのテーブルで作成されたフィールドの内容が右から順に5項目程度連結によって絞り込まれていくというような感じです。  フォーム画面で連結を使い、5つの絞込み作業をおこない、再度入力を初めからしたい場合、残りの4項目を空白にするにはどのようにすれば良いのでしょうか? 例 [近畿]-[大阪]-[大阪市]-[天王寺区]        ↓ 入力やり直し   [関東]-[  ]-[   ]-[    ] 初心者なのでよろしくお願いします。

  • アクセスのコンボボックスのデータについて

    アクセス初心者です。よろしくお願いします。 アクセスのコンボボックスに既入力の文字列データを選択肢として表示したいのですが、同一の文字列データが複数表示されてしまいます。 重複データをフィルタリングして重複しないように表示させることは出来ないのでしょうか?

  • Access コンボボックスを使ったデータ入力の表示

    メインテーブルを元にフォームを表示、さらにレポートを表示させています。 メインテーブルのある項目3つは別テーブルをコンボボックスとして表示させてデータ入力するようにしてあります。 別テーブルの値はこんな感じです。 コード  名前   詳細 1     AAA   A----- 2     BBB   B----- 上記のデータをフォームで表示させる際には、コードではなく、名前が表示されるようにしてあります。 テーブルの方は 連結列は1、列数は3となっています。 なぜか項目1のみテーブルにも「名前」が表示・入力されており、他の項目2・3は「コード」が入力されています。 特別違う設定をした覚えもないのですが。。。 そしてフォームに表示されたデータをもとにレポートを作成しているのですが、やはり項目1のみが「名前」が表示されて、 他は「コード」が表示されてしまいます。項目1のみだけではなく、他も名前が表示されるようにしたいのです。 テーブルの方は別にコードのままでもかまいませんが、レポートの方だけは変更させたいです。 Access2000です。

  • ACCESSでコンボボックスで入力しないとき

    ACCESS2000を使用しています。 コンボボックスを使用しているのですが、コンボボックスの中から選択して入力したのか、ダイレクトに入力したのかを区別するということは出来るのでしょうか。 コンボボックスとして作成した項目のところに、コンボボックスから連続して複数の値を取得する ということをしています。 つまり、コンボボックスの中に    1111    222    333333 とあるとすると  2221111 という項目にしたいというときです。 上記の質問は 間違って 作成したとき 2221111 を 後ろの1111を削除して 222に戻したい としたいときのことです。  よろしくお願いいたします。     

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

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

  • ACCESSのコンボボックスの表示について

    質問をお願いいたします。 現在、売上入力用のフォームを作成し、売上対象の方を選択するのに、コンボボックスで、契約者名簿からデータを引っ張ってきています。 この契約者名簿ですが、 「契約ID] 「顧客ID] 「姓」 「名」 「フリガナ」 で、フリガナだけ表示しないように列数を設定し、フリガナの昇順で並べています。 表示は「0cm;2cm;2cm;2cm」にし、顧客IDを選んだり、あいうえお順で選べるようにしています。 ところが、コンボボックスから選ぶ時はわかりやすいのですが、入力後は連結列を1にすると、顧客の氏名のみがボックスには表示されます。 この表示を「顧客番号」&「姓」もしくは「姓」&「名」といった感じで、表示する事は可能でしょうか。 入力時は問題無いのですが、後で閲覧時に、同姓の方が多いため、いちいち右の三角をクリックして、どの顧客かチェックするといった非効率な状態になっています。 初歩的な質問だとは思いますが、過去ログを見ても、どうしてもわからなかったため、何卒よろしくお願いいたします。

  • ACCESS2007 コンボボックス使い方

     いつも皆様には、お世話になります。以下のようにコンボボックスを用いて絞り込みシステムを考えております。しかし、汎用例が乏しくまた、私自身初心者なので、どこをどうすればよいか分からず作業がストップしています。 ------------------------------------------------- | 絞り込みシステム |------------------------------------------------ | 勘定項目:[コンボボックスA〕 ←3項目表示    A、B、Cなど | 勘定科目コード:〔コンボボックスB〕←2項目表示 10,20 など | 分類項目:〔コンボボックスC〕←12項目      赤、青、黄,緑など | 分類コード:〔コンボボックスC〕←上記の項目、コードにより 50~1までデータ数がある。 | |                            [絞り込みボタン〕 ------------------------------------------------- 段階をおって絞り込まれた、これらのフォームから該当するデータを表示させます。 このようなことは可能でしょうか。皆様のお知恵をお借りしたいと思います。何卒よろしくお願いいたします。

  • Accessコンボボックス

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

  • Accessのコンボボックスの”すべて”検索について

    Access2000を使用しています。 検索フォームにおいて、コンボボックス内の項目を 選択し、コマンドボタンをクリックすることで検索出来 るように設定しています。 実現したいことはコンボボックス内の項目に"すべて" という項目を追加してこの"すべて"を選択して検索すると すべてのデータが表示されるようにしたいのです。 おそらく、関数やVBAを使用して設定するのではない かと思うのですが設定のやり方が分かりません。 よいアドバイスをお願いします。