代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
  le:string;
begin
   adoquery1.SQL.Clear;
   adoquery1.SQL.Add('select * from dj_km');
   adoquery1.Active:=true;
   adoquery1.Open;
   adoquery1.First;
   le:=adoquery1.fieldbyname('kmmm').AsString;
  edit1.text:=le;
end;   
上面这段代码可以执行,可是如果在edit1.text:=le前加上
  adoquery1.SQL.Clear;
   adoquery1.SQL.Add('select * from dj_km where kmmm=substring(le,1,3)');
   adoquery1.Active:=true;
   adoquery1.Open;
   le:=adoquery1.fieldbyname('kmmc').AsString;
却会出错。加上去后的整段代码如下,
procedure TForm1.Button1Click(Sender: TObject);
var
  le:string;
begin
   adoquery1.SQL.Clear;
   adoquery1.SQL.Add('select * from dj_km');
   adoquery1.Active:=true;
   adoquery1.Open;
   adoquery1.First;
   le:=adoquery1.fieldbyname('kmmm').AsString;
  adoquery1.SQL.Clear;
   adoquery1.SQL.Add('select * from dj_km where kmmm=substring(le,1,3)');
   adoquery1.Active:=true;
   adoquery1.Open;
   le:=adoquery1.fieldbyname('kmmc').AsString;
   edit1.text:=le
end;
 注:dj_km是sql server 2000里的表,kmmm,kmmc是其中的两个varchar字段,涉及到的组件已建立。

解决方案 »

  1.   

    adoquery1.First;
       le:=adoquery1.fieldbyname('kmmm').AsString;
       adoquery1.Close; //加上这一句试试
      adoquery1.SQL.Clear;
      

  2.   

    adoquery1.SQL.Add('select * from dj_km where kmmm=substring('''+le+''',1,3)');
      

  3.   

    adoquery1.SQL.Add('select * from dj_km where kmmm='+Copy(le,1,3));
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      le:string;
    begin
       adoquery1.SQL.Clear;
       adoquery1.SQL.Add('select * from dj_km');
       adoquery1.Active:=true;
       adoquery1.Open;
       adoquery1.First;
       le:=adoquery1.fieldbyname('kmmm').AsString;
    //添加代码如下:
      AdoQuery1.Close;
    //  adoquery1.SQL.Clear;
       adoquery1.SQL.Add('select * from dj_km where kmmm=substring(le,1,3)');
       adoquery1.Active:=true;
       adoquery1.Open;
       le:=adoquery1.fieldbyname('kmmc').AsString;
       edit1.text:=le
    end;
      

  5.   

    怎么老有人问这种问题呀,字符串加三个引号: 回复人: tw_cshn(一无所有) ( ) 信誉:95  2003-06-07 21:31:00  得分:0 
     
     
      adoquery1.SQL.Add('select * from dj_km where kmmm=substring('''+le+''',1,3)');  
     
    Top 
     
      

  6.   

    再请问:adoquery1.SQL.Add('select * from dj_km where substring('''+kmmm+''',1,3)=le and len(kmmm)=5')这句错在哪?
      

  7.   

    怎么,我这么有问题吗,SUBSTRING是SQL SERVER的函数
      

  8.   

    to tw_cshn:不好意思,你的是对的,谢谢!