プロが教えるわが家の防犯対策術!

ACCESS2000を使用しています。

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

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

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

 よろしく御指導ください

A 回答 (4件)

>同姓同名の人がおり、後ろのデータを選択しても、最初のデータが取得されます


この「同姓同名」は、データには漢字(又はひらがな)が使用されていないでしょうか?

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

ARCさんがNo.3で記しているイメージように、コンボボックスのコントロールソースには、
ID(絶対に重複しない番号)を含め、なおかつIDは一番左の列にし、連結列にすることがよろしいです
(こうすると、IDの列幅を「0」にすることで、IDはコンボボックスに表示されなくなります)
    • good
    • 0

ん~、どの列を見てもNullっていうのは、[コントロールソース]で指定したフィールドのデータが、[値集合ソース]


で指定したデータの中に見つからないときの症状です。

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

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

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

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

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

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

それでわ!
    • good
    • 0

例えば String型の変数にNullを代入しようとしてエラーになってしまうってことですか?



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

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

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

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

この回答への補足

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

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

補足日時:2001/10/08 21:21
    • good
    • 0

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



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

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

こんな感じです。

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

この回答への補足

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

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

また、お願いできるでしょうか

補足日時:2001/10/08 16:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!