本人是三层结构,client 端用的是一个 Clientdataset1 连接 表1。
然后动态创建一个 clientdataset2 连接 表2。
表1:
ID Prod State
1 bc y
5 ab n
3 cc s
......
表2:
Status comments
y pass
n failed
s sent
w wait
现在用一个 dbgrideh1 + datasource1 + clientdataset1 连接表1并显示出来,同时将表2的status对应comments的值在dbgrideh1显示出来,同时可以下拉列表选择表2的status.(但要求显示出comments)。我找遍论坛,也没有一个可以完整的做出来的,
首先是因为clientdataset1平常是不连接数据库的,用到的时候才给sql执行,动态创建的clientdataset2 也是一样,那怎么设置所谓的“dataset 的 lookup 字段”啊?那是什么东西啊?
然后是 dbgrideh1.columns[3].lookupdisplayfields := 'status';
dbgrideh1.columns[3].alwaysshoweditbutton := True;
设置以后没有任何动静。
另外,我设置 dbgrideh1.stfilter.local := true; dbgrideh1.stfilter.visible := true;
dbgrideh1.column[2].stfilter.listsource := clientdataset1.datasource;
dbgrideh1.column[2].stfilter.datafield := 'state';
dbgrideh1.column[2].stfilter.keyfield := 'state';
dbgrideh1.column[2].stfilter.listfield := 'state';filter的下拉倒是出来了,可是列表里有很多重复的数据,而且鼠标移动到数据网格就出错。根本没办法选择,起不了filter的作用。据说要设置 clientdataset1.filter,又怎么设置啊?
高手帮忙啊,谢谢,分不够再加。
然后动态创建一个 clientdataset2 连接 表2。
表1:
ID Prod State
1 bc y
5 ab n
3 cc s
......
表2:
Status comments
y pass
n failed
s sent
w wait
现在用一个 dbgrideh1 + datasource1 + clientdataset1 连接表1并显示出来,同时将表2的status对应comments的值在dbgrideh1显示出来,同时可以下拉列表选择表2的status.(但要求显示出comments)。我找遍论坛,也没有一个可以完整的做出来的,
首先是因为clientdataset1平常是不连接数据库的,用到的时候才给sql执行,动态创建的clientdataset2 也是一样,那怎么设置所谓的“dataset 的 lookup 字段”啊?那是什么东西啊?
然后是 dbgrideh1.columns[3].lookupdisplayfields := 'status';
dbgrideh1.columns[3].alwaysshoweditbutton := True;
设置以后没有任何动静。
另外,我设置 dbgrideh1.stfilter.local := true; dbgrideh1.stfilter.visible := true;
dbgrideh1.column[2].stfilter.listsource := clientdataset1.datasource;
dbgrideh1.column[2].stfilter.datafield := 'state';
dbgrideh1.column[2].stfilter.keyfield := 'state';
dbgrideh1.column[2].stfilter.listfield := 'state';filter的下拉倒是出来了,可是列表里有很多重复的数据,而且鼠标移动到数据网格就出错。根本没办法选择,起不了filter的作用。据说要设置 clientdataset1.filter,又怎么设置啊?
高手帮忙啊,谢谢,分不够再加。
dbgrideh1.column[2].stfilter.listsource := clientdataset1.datasource;
dbgrideh1.column[2].stfilter.datafield := 'state';
dbgrideh1.column[2].stfilter.keyfield := 'state';
dbgrideh1.column[2].stfilter.listfield := 'state';filter的下拉倒是出来了,可是列表里有很多重复的数据,而且鼠标移动到数据网格就出错。根本没办法选择,起不了filter的作用。据说要设置 clientdataset1.filter,又怎么设置啊?
』这儿肯定是错的,当移动下拉列表时,cds1的指针移动,而实际无法移动,应改为cds1。
begin
close;
sql.clear;
sql.add('select distinct right(itemcode,4) as temp_itemcode from chargeitem');
sql.add('where orgname=:orgname');
prepare;
open;
one_item_sql.first;
while not one_item_sql.eof do
begin
DBGrid1.Columns[0].PickList.add(one_item_sql.fieldbyname('temp_itemcode').asstring);
one_item_sql.next;
end;
end;
不知道是不是你想要的
column[i].keylist加入要保存的值
这样可以吗
dbgrideh1.stfilter.local := true; dbgrideh1.stfilter.visible := true;
dbgrideh1.column[2].stfilter.listsource := clientdataset2.datasource;
dbgrideh1.column[2].stfilter.datafield := 'state';
dbgrideh1.column[2].stfilter.keyfield := 'status';
dbgrideh1.column[2].stfilter.listfield := 'comments';至于第一个问题.....
one_item_sql 是指 QUERY 但用倒 clientdataset 也事没问题的