procedure TForm1.FormCreate(Sender: TObject);
var adoquery2: tadoquery;
adoquery3 :tadoquery;
adoquery4 :tadoquery;
adoquery5 :tadoquery;
treenode1:ttreenode;
treenode2:ttreenode;
string1:string;
string2:string;
begin
dbgrid1.ReadOnly :=true;
combobox1.Clear;
adoconnection1.LoginPrompt:=false;
adoconnection1.ConnectionString :='provider=sqloledb.1;persist security info=false;data source=slby03;initial catalog=v2008bh;user id=sa;password=';
try
begin
adoconnection1.Open;
//显示所有的货类信息
adoquery2:=tadoquery.Create(nil);
adoquery2.Connection :=adoconnection1;
adoquery2.SQL.Clear ;
adoquery2.Close;
adoquery2.SQL.Text:='select * from f_thing_kind';
adoquery2.Open;
datasource1.DataSet :=adoquery2;
dbgrid1.DataSource :=datasource1;
//显示货类信息 (货类编号+货类名称)
adoquery3:=tadoquery.Create(nil);
adoquery3.Connection :=adoconnection1;
adoquery3.SQL.Clear ;
adoquery3.Close;
adoquery3.SQL.Text:='select dkindno + ''=='' + dkindname dmm from f_thing_kind';
adoquery3.Open;
while not adoquery3.Eof do
begin
combobox1.Items.Add(adoquery3.fieldbyname('dmm').asstring);
adoquery3.Next ;
end;
combobox1.ItemIndex:=0;
//以树的形式显示货类信息
adoquery4:=tadoquery.Create(nil);
adoquery4.Connection :=adoconnection1;
adoquery4.SQL.Clear ;
adoquery4.Close;
adoquery4.SQL.Text:='select dkindno + ''=='' + dkindname dmmm from f_thing_kind where dlevel=1';
adoquery4.Open;
while not adoquery4.Eof do
begin
string1:= adoquery4.fieldbyname('dmmm').AsString;
treenode1:=treeview1.Items.Add(treenode2,string1) ;
;
adoquery5:=tadoquery.Create(nil);
adoquery5.Connection :=adoconnection1;
adoquery5.SQL.Clear ;
adoquery5.Close;adoquery5.SQL.Text:='select dkindno + ''=='' + dkindname dmm from f_thing_kind where dlevel=2 and left(dkindno,2)=left(adoquery4.fieldbyname(''dmmm'').asstring,2)';
//adoquery5.parambyname('a').asstring:=quotedstr(left(dkindno,2)=left(adoquery4.Fieldbyname(''dmmm'').AsString,2));
showmessage(adoquery5.SQL.Text);
adoquery5.Open;
while not adoquery5.Eof do
begin
string2:=adoquery5.Fieldbyname('dmm').AsString;
treeview1.Items.AddChild(treenode1,adoquery5.Fieldbyname('dmm').AsString);
adoquery5.Next ;
end;
adoquery4.Next; end;
end
except
begin
showmessage('数据库连接错误');
exit
end;
end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
//adoquery2:=tadoquery.create(nil);
end;end.蓝色这部分出错,请问应该怎样做,谢谢
var adoquery2: tadoquery;
adoquery3 :tadoquery;
adoquery4 :tadoquery;
adoquery5 :tadoquery;
treenode1:ttreenode;
treenode2:ttreenode;
string1:string;
string2:string;
begin
dbgrid1.ReadOnly :=true;
combobox1.Clear;
adoconnection1.LoginPrompt:=false;
adoconnection1.ConnectionString :='provider=sqloledb.1;persist security info=false;data source=slby03;initial catalog=v2008bh;user id=sa;password=';
try
begin
adoconnection1.Open;
//显示所有的货类信息
adoquery2:=tadoquery.Create(nil);
adoquery2.Connection :=adoconnection1;
adoquery2.SQL.Clear ;
adoquery2.Close;
adoquery2.SQL.Text:='select * from f_thing_kind';
adoquery2.Open;
datasource1.DataSet :=adoquery2;
dbgrid1.DataSource :=datasource1;
//显示货类信息 (货类编号+货类名称)
adoquery3:=tadoquery.Create(nil);
adoquery3.Connection :=adoconnection1;
adoquery3.SQL.Clear ;
adoquery3.Close;
adoquery3.SQL.Text:='select dkindno + ''=='' + dkindname dmm from f_thing_kind';
adoquery3.Open;
while not adoquery3.Eof do
begin
combobox1.Items.Add(adoquery3.fieldbyname('dmm').asstring);
adoquery3.Next ;
end;
combobox1.ItemIndex:=0;
//以树的形式显示货类信息
adoquery4:=tadoquery.Create(nil);
adoquery4.Connection :=adoconnection1;
adoquery4.SQL.Clear ;
adoquery4.Close;
adoquery4.SQL.Text:='select dkindno + ''=='' + dkindname dmmm from f_thing_kind where dlevel=1';
adoquery4.Open;
while not adoquery4.Eof do
begin
string1:= adoquery4.fieldbyname('dmmm').AsString;
treenode1:=treeview1.Items.Add(treenode2,string1) ;
;
adoquery5:=tadoquery.Create(nil);
adoquery5.Connection :=adoconnection1;
adoquery5.SQL.Clear ;
adoquery5.Close;adoquery5.SQL.Text:='select dkindno + ''=='' + dkindname dmm from f_thing_kind where dlevel=2 and left(dkindno,2)=left(adoquery4.fieldbyname(''dmmm'').asstring,2)';
//adoquery5.parambyname('a').asstring:=quotedstr(left(dkindno,2)=left(adoquery4.Fieldbyname(''dmmm'').AsString,2));
showmessage(adoquery5.SQL.Text);
adoquery5.Open;
while not adoquery5.Eof do
begin
string2:=adoquery5.Fieldbyname('dmm').AsString;
treeview1.Items.AddChild(treenode1,adoquery5.Fieldbyname('dmm').AsString);
adoquery5.Next ;
end;
adoquery4.Next; end;
end
except
begin
showmessage('数据库连接错误');
exit
end;
end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
//adoquery2:=tadoquery.create(nil);
end;end.蓝色这部分出错,请问应该怎样做,谢谢
如
"==" QUOTEDSTR('=')
错的是 and left(dkindno,2)=left(adoquery4.fieldbyname(''dmmm'').asstring,2)';
这部分
此处:left(' + adoquery4.fieldbyname('dmmm').asstring +' ,2)'
应该为:left(''' + adoquery4.fieldbyname('dmmm').asstring +''',2)'
注意红色部分!
因为是刚刚创建的组件,这两句没做任何事.相反,却增加了内存与CPU的计算.
结论:多余.