CoboBoxのrecordsetを使うというのがありましたが
DBComboBoxで1レコードしか表示されないのですが、
ずらーっと表示させたいんです。
HELPではそうなるように書いてあるようでしたが。
いまいちわからなかったのでお願いします。
QueryとDataSouceを使用しています。
常套手段でいきましょう。
下のだとEmpNoフィールドが取得できます。
procedure TForm1.Button1Click(Sender: TObject);
var
intTest: integer;
strTest: string;
begin
Table1.open;
with Table1 do
begin
for intTest := 0 to RecordCount -1 do
begin
dtrTest := FieldByname('EmpNo').AsString;
ComboBox1.Items.Add( strTest );
next;
end;
end;
Table1.Close;
end;
はつさんの言われてのは、DBLockupComboBoxでは?
DBLockupComboBoxを使うと他のデータセットの内容をコンボのリストに表示できます。
masayanさん、Jボスさんありがとうございます。
Comboboxではうまくいきました。
masayanさんのDBLockupComboBoxでは、表示がうまくいきませんでした。
DBLockupComboBoxの設定を詳しく教えてほしいのですが。
dbcomboboxは一般的にあまり使われないのでしょうか?
table1,table2,datasource1,datasource2,DBLookupComboBoxを
貼り付けてください。
後はプロパティーの設定のみです。
(databasenameとかは知識があるということで)
DBLookupComboBox1のDataSourceプロパティーはdatasource1
DBLookupComboBox1のListSourceプロパティーはdatasource2
DataSource1のDataSetプロパティーはTable1
DataSource2のDataSetプロパティーはtable2
DBLookupComboBox1のDataFieldプロパティーはフィールド名
DBLookupComboBox1のListFieldプロパティーはフィールド名
DBLookupComboBox1のKeyFieldプロパティーはフィールド名
もちろんtableのactiveはtrueです。
コーディングが面倒でなければ、Jボスさんのやり方の方がいいと思います。
(DBLockupComboBox[DBLockupListBoxも同じ]は、便利なようで結構融通が利かないので...。自分もほとんど使っていません。)
一応、DBLockupComboBoxの使い方を説明します。
例えば、次のデータセットとそれに関連するデータソースを用意します。
Table1(=>DataSource1)
項目:KeyCD1
Text1
KeyCD2
Table2(=>DataSource2)←こっちがコンボに一覧する方
項目:KeyCD2
Text2
※.Table1は、Table2を参照できる項目値を持っている必要があります。
(この場合、KeyCD2)
DBLockupComboBoxのプロパティを以下のように設定します。
▼コンボで編集するデータセットと項目
DataSource :DataSource1
DataField :KeyCD2
▼コンボでリスト表示するデータセットと項目
KeyField :KeyCD2 ※.Table1→Table2を参照するためのキー
ListSource :DataSource2
ListField :Text2 ※.コンボのリストに表示する項目
これでDBLockupComboBoxにTable2のText内容が一覧表示されると思います。
DBLockupComboBoxでリストを選択するとTable1のKeyCD2に選択されたTable2のKeyCD2の値がセットされます。
以上です。
なお、DBComboBoxは、性別の入力などで結構多用しています。(性別のように決まった項目リストから1つを入力する場合に便利ですよ。)
ツイート | ![]() |