unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
Memo1: TMemo;
ADOQuery3: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var mynode:ttreenode;
begin
while not adoquery1.Eof do
begin
//添加根节点
mynode:=treeview1.Items.Add(nil,adoquery1.Fields[1].asstring);
//设置过滤
adoquery2.Filter:='typedata='+adoquery1.Fields[2].AsString;
adoquery2.Refresh();
while not adoquery2.eof do
begin
//添加子节点
treeview1.Items.AddChild(mynode,adoquery2.Fields[1].asstring);
adoquery2.next();
end;
adoquery1.Next();
end;
adoquery2.Close();
adoquery1.Close();
end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
adoquery3.Close();
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from data where title='+node.Text);
adoquery3.Open();
memo1.Lines.Add(adoquery3.Fields[1].asstring);
end;
end.
具体错在哪里?
我一直不能用NODE.TEXT来查询
谁还有更好的方法?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
Memo1: TMemo;
ADOQuery3: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var mynode:ttreenode;
begin
while not adoquery1.Eof do
begin
//添加根节点
mynode:=treeview1.Items.Add(nil,adoquery1.Fields[1].asstring);
//设置过滤
adoquery2.Filter:='typedata='+adoquery1.Fields[2].AsString;
adoquery2.Refresh();
while not adoquery2.eof do
begin
//添加子节点
treeview1.Items.AddChild(mynode,adoquery2.Fields[1].asstring);
adoquery2.next();
end;
adoquery1.Next();
end;
adoquery2.Close();
adoquery1.Close();
end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
adoquery3.Close();
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select * from data where title='+node.Text);
adoquery3.Open();
memo1.Lines.Add(adoquery3.Fields[1].asstring);
end;
end.
具体错在哪里?
我一直不能用NODE.TEXT来查询
谁还有更好的方法?
adoquery3.SQL.Add('select * from data where title='''+node.Text+'''');
adoquery3.SQL.Add('select * from data where title='+node.Text);
改成
adoquery3.SQL.Add('select * from data where title='+QuotedStr(node.Text));