• 締切済み

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