treeview+数据库的问题(100分)

  • 主题发起人 主题发起人 cf83325
  • 开始时间 开始时间
C

cf83325

Unregistered / Unconfirmed
GUEST, unregistred user!
本人刚刚学delphi不久,有一个问题一直很困惑.
问题如下:
我用acess建立了一个数据库.库的字段名字有'成语','成语拼音','成语解释','成语的典故',
我做的是一个树状结构,我要问的是:我点其中的一个节点,在数据库中找到相应节点的记录.
比如:我点节点成语'爱不释手',就从库中读取字段名字有'成语','成语拼音','成语解释','成语的典故',的解释.但是当我点其他节点的时候还是成语'爱不释手'的解释,即库的记录指针没有向下移动.怎么解决这个问题:
我用treeview,memo组件
也就是说我,我点treeview上的节点即那个成语(子节点),在数据库就出现相应的成语解释的记录在MEMO中,而不是我点任何节点,却还是成语'爱不释手'的解释.
本人急需SOS~~~~~~~~~~~~,好心的人help me .好的建议,本人清家当产给你加高分!!!!!
 
如果你只是想移动数据库指针,可以手工实现。我假设你使用了adotable,
那么你可以这样写代码
procedure TForm1.TreeView1Click(Sender: TObject);
begin
adotable1.Locate('成语', treeview1.Selected.Text, [loPartialKey]);
end;
这样可以了。
 
在OnChanging事件中取Node.Text,然后重新查找一次不行吗
 
答案不够全面,通过思考,但基本接受
 
有没有人把这个问题搞的更详细一点的吗?最好是比较完整的代码程序
 
其实就是解决数据联动的问题:
当你想在节点变化时,让数据表的指针作相应联动变化。
在treeview中节点变化,会触发onchange事件,
因此在onchange这个事件中写入让数据表随之变动的语句就可以了。
用Locate定位,或者用Query控件只取部分有关数据,随你怎么取数据。
代码还用写吗?不必了吧!
 
不是很难吧!我觉得用ADOQuery控件比较好点,事件呢可以用OnClick
例如:
procedure TForm1.TreeView1Click(Sender: TObject);
var
name:string;
i:integer;
begin
if treeview1.Selected<>nil then
name:=tree.Selected.Text;
ADOQuery1.close;
ADOQuery1.sql.Clear;
ADOQuery1.sql.Add('select 成语拼音,成语解释,成语的典故 from 你的表名 where 成语='''+name+'''');
ADOQuery1.open;
ADOQuery1.first;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
//我不知道你想怎样显示那些咚咚,自己改改就可以了
memo1.lines.Append(ADOQuery1.FieldValues['成语拼音']+ADOQuery1.FieldValues['成语解释']+ADOQuery1.FieldValues['成语的典故']);
ADOQuery1.Next;
end;
end;
呵呵,我也刚刚学Delphi,才2个多月,也曾经很迷茫无助过,对你的心情很是理解,但是我想说的是其实楼上的那几位已经把你的问题分析的很清楚了,你只要动动脑筋就可以把那些代码写出来了,实在没有必要让别人代劳了!老这样对你可是一点帮助都没有的哦!
DFW上有很多前辈很棒的,也很乐于助人,我为自己能与他们一路同行感到无比的幸运!
^_^
小雨上
 
bluedyness的代码,我完全接受了,很感谢你。你不仅教会了我如何解决这个问题,还教会了我如何去独立思维。很是感谢你。
 
接受答案了.
 
后退
顶部