コンボボックスに表示させた以外のデータ項目をファイルに書き込むには?

解決


みゆみゆ  2002-11-25 12:05:48  No: 105513  IP: [192.*.*.*]

初めて質問します。
商品マスタ=商品コード(文字または数字10桁)・商品名(文字40桁)・・・
顧客情報ファイル=顧客コード・商品コード・・・・
という二つのファイルを使って顧客情報の入力画面があります。
商品名をコンボボックスで表示・選択しますが、ファイルに書き込む時は商品コードで書き込みたいのです。商品コードは文字も入るし、桁数もまちまちです。
その場合、どのようにすればコンボボックスで選択された商品名から商品コードをもってくることができますでしょうか。
よろしくお願いします。

編集 削除
みゆみゆ  2002-11-25 12:06:46  No: 105514  IP: [192.*.*.*]

追加記述です。
ただいま、VB6.0で開発してます。

編集 削除
YuO  2002-11-25 12:50:03  No: 105515  IP: [192.*.*.*]

コンボボックスの並び順通りに商品コードを配列に保持しておいて,
コンボボックスのListIndexプロパティを利用して商品コードを取り出す,
というのではどうでしょう。

編集 削除
みゆみゆ  2002-11-25 13:36:31  No: 105516  IP: [192.*.*.*]

お答えありがとうございます。
その「商品コードを配列に保持する」やり方を教えていただけますでしょうか。

編集 削除
とろ  2002-11-25 14:55:15  No: 105517  IP: [192.*.*.*]

今は次のような感じで(おおざっぱで、すごい省略してますが)
コンボに商品名をセットしていると思います。
combo1.clear
set rs = openrecordset("select * from 商品マスタ")
do while rs.eof = false
    combo1.additem rs.fields("商品名").value
    rs.movenext
loop

これを
dim s商品コード()
combo1.clear
set rs = db.openrecordset("select * from 商品マスタ")
redim s商品コード(rs.recordcount - 1)
do while rs.eof = false
    combo1.additem rs.fields("商品名").value
    s商品コード(i) = rs.fields("商品コード").value
    rs.movenext
loop
のような感じにして、
コンボで選択されている商品名の商品コードを知りたい場合は
s商品コード(combo1.listindex) という感じです。

編集 削除
とろ  2002-11-25 14:56:20  No: 105518  IP: [192.*.*.*]

上の書き込みで、 i が定義されていませんが、
やりたいことは分かって頂けたと思います。

編集 削除
みゆみゆ  2002-11-25 15:16:56  No: 105519  IP: [192.*.*.*]

とろさん、すみません。
iの定義はなんですか?
まだ1ヶ月くらいの初心者で、初歩的なこともよくわからなくてすみません。
教えてください。

編集 削除
とろ  2002-11-25 16:04:56  No: 105520  IP: [192.*.*.*]

今はどのようにコンボボックスに
商品名をセットしているのですか?

i が分からない程の初心者ならば、
コンボボックスにも商品名を
セットできなさそうですが...

編集 削除
みゆみゆ  2002-11-25 17:00:18  No: 105521  IP: [192.*.*.*]

現在、コンボボックスのセットは下記の通りやっています。
Form1.combo_name.Clear
my_sql = "SELECT LSS1_CD,LSS1_NM FROM LSS1_MST"
Set rs = DB.OpenRecordset(my_sql,dbOpenSnapshot)
Do Until rs.EOF
   Form1.combo_name.AddItem rs.Fields("LSS1_NM")
   rs.MoveNext
Loop

先程、教えていただいた方法で、

i=0 を Do Until の上で定義し、i=i+1 を Loop  の前に入れてみましたところ、

    <  実行時エラー'9':インデックスが有効範囲にありません。>

となってしまったので質問させていただきました。
いかかでしょうか?

編集 削除
とろ  2002-11-25 17:40:24  No: 105522  IP: [192.*.*.*]

ReDim Preserve sXXX(i)
sXXX(i) = 商品コード

のように、配列に商品コードをセットする前に
配列のサイズを変更しましょう。

編集 削除
みゆみゆ  2002-11-25 21:18:52  No: 105523  IP: [192.*.*.*]

何度もお答えありがとうございます。
配列を作成するところはうまくいきましたが、
別のプロシージャで商品コードを見るときに、
       w_code = wk(Form1.combo_name.listindex)     'wkは配列 
のところで  
      <  実行時エラー'9':インデックスが有効範囲にありません。>
というエラーが発生します。
その原因はなんでしょうか?

編集 削除
YuO  2002-11-25 22:34:29  No: 105524  IP: [192.*.*.*]

原因を探すのがデバッグという作業です。
UBound(wk)やLBound(wk), Form1.combo_name.ListIndexといった値を調べてみましたか?

編集 削除
みゆみゆ  2002-11-25 22:59:33  No: 105525  IP: [192.*.*.*]

いろいろやってみましたが、出来ませんでしたので、一旦解決とさせていただきます。勉強不足を痛感します。SOHOですので、聞く人もなく、書物だけだとなかなか難しいです。自分でじっくりやってみます。ありがとうございました。

編集 削除