OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.147675
  • 閲覧数480
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 71% (69/97)

ACCESS2000を使用しています。

コンボボックスを使用し、複数の列を表示しています。 連結列以外の列の項目を取得したい場合、どのようにすれば参照できるのでしょうか。

 実際には、名前順に表示しているのですが、同姓同名の人がおり、後ろのデータを選択しても、最初のデータが取得されます。
 なぜかというと、非連結にしてあり、イベントで取得した名前をキーにして再びファイルを読みに行っているからです。

 なぜ、こんな作り方をしているかというと、連結にすると、最後の画面で 不良のデータがあるとそのままACCESSのほうで書き込んでしまうのがあるからです。 連結しても、項目のヌルデータの取得を認めないようにすれば 出来るらしいのですが、 いつも非連結で作っています。

 よろしく御指導ください
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

Me.コンボ0.Column(0) 'コンボボックスの1列目を取り出す Me.コンボ0.Column(1)'コンボボックスの2列目を取り出す Me.コンボ0.Column(0, 1)'コンボボックスの2行,1列目を取り出す こんな感じです。 ちなみに、連結にしておいて、不良データをBeroreUpdateイベントでチェックするようにしてもいいですよ。 ...続きを読む
Me.コンボ0.Column(0) 'コンボボックスの1列目を取り出す

Me.コンボ0.Column(1)'コンボボックスの2列目を取り出す

Me.コンボ0.Column(0, 1)'コンボボックスの2行,1列目を取り出す

こんな感じです。

ちなみに、連結にしておいて、不良データをBeroreUpdateイベントでチェックするようにしてもいいですよ。
もし不良だった場合、オブジェクト.Undo で、変更を元に戻せます。
補足コメント
yamamichi

お礼率 71% (69/97)

早速の回答ありがとうございました。
やってみたら、うまくいきました。

ですが、コンボボックスにヌルデータがあると、うまくいきません。
これは、ファイルをきれいにしておく必要があるのでしょうか。 
イベントで逃げることは出来ないのでしょうか。

また、お願いできるでしょうか
投稿日時 - 2001-10-08 16:57:29


  • 回答No.2
レベル13

ベストアンサー率 46% (643/1383)

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

その場合は、NZでNULLを打ち消してやるとうまく動作します。

dim strData As String
:
strData = NZ(Me.コンボ0.Column(0),"")

などとすると、データがNullの時は、""が代入されるようになります。

また、IsNull()関数を使って、IsNull(Me.コンボ0.Column(0))とすると、データがNullか否かを知ることが出来ます。
補足コメント
yamamichi

お礼率 71% (69/97)

またすぐに返答頂きありがとうございます

コンボボックスに4つの列を表示しています。
連結列がなぜかヌルデータになっているのです。 DBのテーブルでは1バイトのスペースが入っているのですが無視されているようです。 そして、連結列(1列目)がヌルだと、2列目以降何が入っていようと、すべて参照するときにヌルになっているのです。
 理解に苦しんでいます。
投稿日時 - 2001-10-08 21:21:00
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

ん~、どの列を見てもNullっていうのは、[コントロールソース]で指定したフィールドのデータが、[値集合ソース] で指定したデータの中に見つからないときの症状です。 つまり、 受注明細テーブル  明細ID  商品ID   : 商品マスタテーブル  商品ID  商品名   : ってなときに商品明細テーブルを表示するフォームを作り、そのフォーム中でコンボボックスを使って、商品 ...続きを読む
ん~、どの列を見てもNullっていうのは、[コントロールソース]で指定したフィールドのデータが、[値集合ソース]
で指定したデータの中に見つからないときの症状です。

つまり、
受注明細テーブル
 明細ID
 商品ID
  :

商品マスタテーブル
 商品ID
 商品名
  :

ってなときに商品明細テーブルを表示するフォームを作り、そのフォーム中でコンボボックスを使って、商品名を表示する。

商品明細には商品IDが100番のデータが入力されているのに、商品マスタには商品IDが100番の商品が無い、という、異常なデータが入力されている

のような状況のときに、フォーム上で問題の商品ID=100になっているデータを表示してしまうと、コンボボックスの全ての列がNullになります。

恐らく、今回の場合は、フォーム側には半角空白1コのデータがあるけれども、コンボボックスの「値集合ソース」で指定されているデータの中には、それに対応するデータが無い、っていうような状況が起こっているのでは?
推測なんですが。

それでわ!
  • 回答No.4
レベル7

ベストアンサー率 50% (9/18)

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

連結列に半角英数字以外のものを使用すると、コンボボックス&リストボックスは正常に動作しないことが多々あります

ARCさんがNo.3で記しているイメージように、コンボボックスのコントロールソースには、
ID(絶対に重複しない番号)を含め、なおかつIDは一番左の列にし、連結列にすることがよろしいです
(こうすると、IDの列幅を「0」にすることで、IDはコンボボックスに表示されなくなります)
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ