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.蓝色这部分出错,请问应该怎样做,谢谢

解决方案 »

  1.   

    把你用""引住的东西替换成QUOTEDSTR()形式就不容易出错了,而且不会乱.

       "=="    QUOTEDSTR('=')
      

  2.   

    adoquery5.SQL.Text:='select dkindno + ''=='' + dkindname dmm from f_thing_kind where dlevel=2 and left(dkindno,2)=left(' + adoquery4.fieldbyname('dmmm').asstring  +' ,2)';
      

  3.   

    这部分没有错的
    错的是 and left(dkindno,2)=left(adoquery4.fieldbyname(''dmmm'').asstring,2)'; 
    这部分
      

  4.   

    adoquery5.SQL.Text:='select dkindno + ''=='' + dkindname dmm from f_thing_kind where dlevel=2 and left(dkindno,2)=left(' + adoquery4.fieldbyname('dmmm').asstring  +' ,2)'这句话还是有错误= 附近有错误
      

  5.   

    这一部分'select dkindno + ''=='' + dkindname dmm 没看懂?
    此处:left(' + adoquery4.fieldbyname('dmmm').asstring  +' ,2)'
    应该为:left(''' + adoquery4.fieldbyname('dmmm').asstring  +''',2)'
    注意红色部分!
      

  6.   

    看明白了:拼字符串.'select dkindno + ''=='' + dkindname dmm 
      

  7.   

    建议将所有ADOQuery.SQL.Clear;ADOQuery.Close;去掉.
    因为是刚刚创建的组件,这两句没做任何事.相反,却增加了内存与CPU的计算.
    结论:多余.