Edit1.text:=adoquery1.fieldbyname('name').asstring;

解决方案 »

  1.   

    在执行之前,先把ADOQuery1.SQL显示出来,看是否正常,并且手动执行一下,看是否能够返回结果
      

  2.   

    ADOQuery1.close ;
             .Sql.clear ;
             .Sql.Add('select * from post where name = :strname') ;
             .Parameters.ParamByName('strname').value=strname ;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring ;//请先查看是否真的有记录返回?
      

  3.   

    Sql.Add('select * from post where name := strname') //怎么又这么写了呢?
    你看看fields[0]是什么字段,有值吗?
      

  4.   

    ADOQuery1.close ;
             .Sql.clear ;
    //请把   .Sql.Add('select * from post where name := strname') ;改成
    Sql.Add('select * from post where name=: strname')
             .Parameters.ParamByName('strname').value:=strname ;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring ;
      

  5.   

    1.有记录
    2.strname := string
      

  6.   

    'select * from post where name := strname'
    改为
    'select * from post where name = :strname'
      

  7.   

    select * from post where name := strname'
    改为
    select * from post where name = :strname'
    只有:strname才表示参数
      

  8.   

    大虾:select * from post where name := strname为笔误。
      

  9.   

    你是不是把select * from post where name := strname'写错了,
    这个语句中的name:=strname是赋值,不判断等于,根本不会满足条件的!
      

  10.   

    或者用:
    ADOQuery1.close ;
             .Sql.clear ;
             .Sql.Add('select * from post where name = :strname') ;
             .Parameters.ParamByName('strname').value=strname ;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring 
    不行,再试试
    var sqlword:string;
    begin
       sqlword:=format('select * from post where name=%s',[strname]);
    ADOQuery1.close ;
             .Sql.clear ;
             .Sql.Add(sqlword) ;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring 
    end;
    再不行,就是数据库或参数strname有问题!
      

  11.   

    with Adoquery1 do
    begin
       close ;
       Sql.clear ;
       Sql.Add('select name from post where lTrim(rTrim(name)) := strname') ;  //不建议使用*,第而,去掉空格。
       Parameters.ParamByName('strname').value:=Trim(strname);
       open ;
       if not isEmpty then
           Edit1.text:=Fieldsbyname('Name').Asstring ;
       else
           showmessage('没有满足条件的记录!');
       close;
    end;
      

  12.   

    哦,参数那里:在后面,是下面:
    with Adoquery1 do
    begin
       close ;
       Sql.clear ;
       Sql.Add('select name from post where lTrim(rTrim(name)) =: strname') ;  //不建议使用*,第而,去掉空格。
       Parameters.ParamByName('strname').value:=Trim(strname);
       open ;
       if not isEmpty then
           Edit1.text:=Fieldsbyname('Name').Asstring ;
       else
           showmessage('没有满足条件的记录!');
       close;
    end;
      

  13.   

    应为'select * from post where name = :strname',主变量用错了。sql中有主变量传递。
      

  14.   

    select * from post where name := strname'
    改为
    select * from post where name = :strname'
    只有:strname才表示参数
      

  15.   

    继续发问:设name有aaa,bbb,ccc可选,先选bbb,运行正确。这时继续选bbb或选
    aaa或ccc则报错:定义程序定义Parameter对象的方式不适当。WHY?请大虾解答。
      

  16.   

    ADOQuery1.close ;
             .Sql.clear ;
             .Sql.Add('select * from post where name = :strname') ;
             .Parameters.ParamByName('strname').value:=strname ;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring ;
    这样就正确了
      

  17.   

    另外最好把参数名和变量名分开。这到并不一定错,但是个良好的习惯。
    你后来提的没有明白什么意思:先选bbb,运行正确。这时继续选bbb或选
    aaa或ccc则报错
      

  18.   

    with Adoquery1 do
    begin
       close ;
       Sql.clear ;
       Sql.Add('select name from post where lTrim(rTrim(name)) := strname') ;  //不建议使用*,第而,去掉空格。
       Parameters.ParamByName('strname').value:=Trim(strname);
       open ;
       if not isEmpty then
           Edit1.text:=Fieldsbyname('Name').Asstring ;
       else
           showmessage('没有满足条件的记录!');
       close;
    end;
      

  19.   

    ADOQuery1.close ;
             .Sql.clear ;
             .Sql.Add('select * from post where name = :strname') ;
             .Parameters.ParamByName('strname').value:=strname ;
             execute;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring ;
    这样就正确了
      

  20.   

    ADOQuery1.close ;
             .Sql.clear ;
             .Sql.Add('select * from post where name =: strname') ;
             .Parameters.ParamByName('strname').value:=strname ;
             .open ;
    Edit1.text:=ADOQuery1.Fields[0].Asstring ;注意:
    name:=strname 是错的
    name=:strname 正确
    是否有记录
    不太确定是否错(使用‘post’为表名是否有冲突)