两个问题,1.我如何根据字段名来获得在DBGrid里面的Column 2. 请问我如何在DBGrid某个字段的PickList里显示另外一张表的某个字段的全部记

  • 主题发起人 主题发起人 xhyph
  • 开始时间 开始时间
X

xhyph

Unregistered / Unconfirmed
GUEST, unregistred user!
两个问题,1.我如何根据字段名来获得在DBGrid里面的Column 2. 请问我如何在DBGrid某个字段的PickList里显示另外一张表的某个字段的全部记录?(192分)<br />问题一
通常我们是用DBGrid1.Columns[index] 来获得某个字段的Column,
但是如果有好几张表,都有一个相同的字段,如果每次在这个DBGrid1显示这些表
的时候,我需要对这个字段的Column做写处理,但是因为位置都不一样,
我不可能用Columns[index],我只知道这个字段的名字,
请问我如何通过字段名来寻找到它所在的DBGrid的Column对象
DBGrid有没有这样的函数?
难道我需要先遍历DBGrid的Column来一一查对吗?
问题二
我想在DBGrid添加记录修改记录时候,在某个字段的PickList里显示另外一张表的记录,
怎么做?
我的两个表
Table1
书名 作者 出版社
Table2
出版社
我想在Table1添加记录时候<出版社>的字段的PickList里显示Table2的出版社
我是在MIDAS的客户端做这样的事ADO+DCOM+ClientDataSet
我按照一些书上所写
在ClientDataSet1里面添加所有字段名
在ClientDataSet2里连接数据表Table2 Select* From 出版社
在ClientDataSet1的出版社字段里
这样设置
FieldKind=fkLookUp
KeyFields=书名
LookUpDataSet=ClientDataSet2
LookUpKeyFields=出版社
LookUpResultFields=出版社
当我运行程序时候,如我所愿,当我编辑Table1时候下拉框是显示了Table2的出版社
但是当我选择一项后,发现记录始终为空,我无法将PickList的内容选上去
(而且PickList的显示的记录也有点不对)
请问
如何在DBGrid某个字段的PickList里显示另外一张表的某个字段的全部记录?
我错在哪里?
 
第一个问题:
不要从dbgrid中找什么,直接从dbgrid对应的query中找:
query1.fielddvalues[字段名]等等,这样绝对不会错!
 
可是我想操作DBGrid的column,怎么办?
 
你想怎么操作?说说你的目的!
如果修改的话,直接用query1.fielddvalues[字段名]:=‘nnnxzx’就行了
 
我要操作column的picklist
 
picklist也是和字段相联的吧,所以通过访问字段的picklist应该可以完成!
 
关于第二问题,在BDE下实现过,ADO下没有使过!
 
to lkpc 如何根据字段名来找到PICKLIST?
能否举个例子
我指的是TCLIENTDATASET和TADOQUERY
 
1.fordo
begin
if dataset.fieldname = dbgrid.field.name then
//jump i found it
end;
2.把另外一个表中的值加入到picklist中就行了。
picklist.clear;
while not eofdo
begin
picklist.add(dataset.fields[youindex].asstring);
dataset.next;
end;

///试试
 
wlmmlw 你这两个办法我现在在用但是我觉得只是权宜之计,
谁能给我更好的方法?
 
看来这个问题是没有人能够回答了
我自己把分拿回来
希望以后DFW有个没有人能够回答的情况下把分收回的功能
 
接受答案了.
 
后退
顶部