データコンボコントロールについて


sat  2004-07-23 19:57:00  No: 114980

ADOデータコントロールを使用したデータコンボコントロールで、リストに表示されるDBのフィールドとは別のフィールドをデータとして扱いたいのですが、コンボボックスの値をもとにSQLを発行してレコードを取得する以外に何かよい方法はないでしょうか?
よろしくお願いします。


特攻隊長まるるう  2004-07-24 01:20:42  No: 114981

>ADOデータコントロールを使用したデータコンボコントロールで
>SQLを発行してレコードを取得する以外に何かよい方法はないでしょうか?
…などと言われましてもADOデータコントロールの RecordSorce には
SQL 文を指定してたりするのでは無いのですか?SQL 文を一度も使わず
特定のデータをデータベースから取ってくるのは難しいでしょうし…。

>コンボボックスの値をもとにSQLを発行してレコードを取得する
ことを何故避けたいのか?どういった目的なのかがハッキリしません
ので、何を求められているのか分かりません。
何度も検索処理をするのを避けたいだけならADOデータコントロール
の Recordset なりローカル変数で宣言した Recordset なりを保持
してその中からデータを取ればいいんじゃないですか?
ただし、複数のユーザが利用するデータベースの場合、当然ながら
ローカルに保持したデータとデータベースのデータに差が出てきます。
その対応も必要となってくる事も忘れないでください。


sat  2004-07-24 02:15:37  No: 114982

ご返信ありがとうございます。わかりづらくて申し訳ありません。
社員テーブルに、「社員番号(KEY)」と「社員名」というフィールドが
あるのですが、コンボボックスには社員名を表示させ、
処理上は社員番号を扱いたいんです。
一応社員名は重複しないように登録するのですが、
データからKEYを持ってくるというのが気持ち悪かったもので…。

今のところ、SELECT文で社員番号+社員名をコンカチで取得し、
データ登録の際はMID関数でで社員番号だけにしています。

Recordsetの保持は考えていませんでした。ぜひ調べてみます。
が、大変そうですね…。


特攻隊長まるるう  2004-07-24 03:03:01  No: 114983

>Recordsetの保持は考えていませんでした。ぜひ調べてみます。
>が、大変そうですね…。
1回作ってみればそれほど難しくないし、並べ替えもできるし
入れ物としては便利ですよ?
http://www.interq.or.jp/www-user/komurak/progtec/031.htm

Adodc1.Recordset には「社員番号(KEY)」と「社員名」データが
入っているんですか?↓のコードを実行すると何が出力されます?

[VB6.0]
Private Sub DataCombo1_Change()
    Debug.Print Me.Adodc1.Recordset.Fields("社員番号")
End Sub


特攻隊長まるるう  2004-07-24 03:16:17  No: 114984

[VB6.0]
’↓けっこう適当に作ってるので自分で改良して下さい。
Private Sub DataCombo1_Change()
    Debug.Print "Change" & Me.DataCombo1.SelectedItem
    
    With Me.Adodc1.Recordset
        '.MoveFirst                             ' ←この辺調整して下さい
        .Move Me.DataCombo1.SelectedItem - 1 ' ←この辺調整して下さい
        Debug.Print .Fields("社員番号")
    End With
End Sub


sat  2004-07-26 19:39:59  No: 114985

ご丁寧にありがとうございました!
まるろうさんのソールを追加して実行してみたところ、
ちゃんと社員番号が表示されました。
このデータを使って更新すればうまくいきそうです。

ADOデータコントロールに頼り気味だったので、
ちゃんとRecordsetなどについて勉強しようと思います…;


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加