求教!!两个ClientDataset间的调用?急!!!(100分)

  • 主题发起人 主题发起人 yippee
  • 开始时间 开始时间
Y

yippee

Unregistered / Unconfirmed
GUEST, unregistred user!

我用了一个DBLookupListbox,它属于Clientdataset1,内容是不同的“科室”
在一个面板上放了两个DBEdit,它们属于Clientdataset2,内容分别是“人名”“工资”
我想点击不同的科室,比如:财务科,人事科时,人名和工资对应的内容也随之变化
可是小弟不知该怎样写?
应该调用DBLookupListBox的OnClick事件吗?
怎样才能让Clientdataset1和Clientdataset2联系起来呢?
还请各位高手指点!!
 
在DBLookupListbox中定义好LISTSOURCE,LISTFIELD,KEYFIELD
后,在ONCLICK事件中添加代码:
procedure TForm1.DBLookupListBox1Click(Sender: TObject);
begin
showmessage(DBLookupListBox1.keyvalue);
end;
KEYVALUE将显示出当前点击的是哪个值.
然后在此事件中,可以动态改变其他控件的值.
 
我先试试!
 
一。如果部门和人名是一一对应的,则时简单的 LOOKUP 问题,
只要设置两个CLIENTDATASET的LOOKUP关系(LISTSOURCE,LISTFIELD,KEYFIELD)
即可在科室变化时看见变化的人和工资。
二。如果部门和人名是一对多的,则 CLIENTDATASET1 和 CLIENTDATASET2 有主从关系,
即可在科室变化时看见变化的多个人和工资。

 
我在调用DBLookupListboBox的 OnClick事件时

ClientDataset2.Close;
Clientdataset1.commandText:=sSelect;
ClientDataset2.commandText:='select * from 育秧进度统计 where 科室="DBLookupListboBox.KeyValue"';
Clientdataset2.Open;
编译通过了,可是运行时系统说:
CommandText changes are not allow
 
ClientDataset2.commandText:='select * from 育秧进度统计 where 科室="DBLookupListboBox.KeyValue"';
应为:
ClientDataset2.commandText:='select * from 育秧进度统计 where 科室='''+DBLookupListboBox.KeyValue+'''';

注意:''代表一个', 另外,SQL串中使用变量,要注意变量的引用.
如果SQL语句写得不正确,可以先用MESSAGEBOX把SQL语句显示出来,
看看与预计的有什呒区别,再修改.
 
点击DBLOOKUPLISTBOBOX已经不会出错了
可是对应的Clientdataset2的DBEidt却没有内容
DBEdit2.EditText:='select 工资 from 统计表 where 处别=''DBLookupListbobox.keyvalue''';
编译通过,运行后没反应

请继续指教
 
在DBEDIT2中显示SQL语句?
DBEdit2.EditText:='select 工资 from 统计表 where 处别='''+DBLookupListbobox.keyvalue+'''';

与上一个问题相同,注意变量引用时引号的使用.
 
可是还是不行呀。
我想是两个Clientdataset没有连起来
可是不知怎么连
两位继续指教,感激不尽!!
 
通了,通了
我,我好激动
多谢各位!!!
 
多人接受答案了。
 
请说详细一些,两表有无联系,在给出两表字段,再告诉你
 
后退
顶部