大家帮忙看看这段错在哪里,searchfied和searchwhat都是由用户输入的变量
  
else if RadioGroup1.ItemIndex=4  then
    searchfield:='workplace'
  else if RadioGroup1.ItemIndex=5  then
    searchfield:='sort';
end;procedure Tsearch.findClick(Sender: TObject);
var
 searchwhat:string;
 order:string;
begin
 searchwhat:=Edit1.Text;
 order:='select * from friends where searchfield=:"'+searchwhat+'"';
 ADOQuery1.SQL.Clear;
 ADOQuery1.Close;
 ADOQuery1.SQL.Add(order);
 ADOQuery1.Open;
end;

解决方案 »

  1.   

    searchfield  是表friends 的字段吗?
      

  2.   

    不是,是一个变量
    其值是用户点击radiogroup输入
    这段全部代码如下:
    procedure Tsearch.RadioGroup1Click(Sender: TObject);
    var
    searchfield:string;
    begin
      if RadioGroup1.ItemIndex=0  then
        searchfield:='chinesename'
      else if RadioGroup1.ItemIndex=1  then
        searchfield:='corp'
      else if RadioGroup1.ItemIndex=2  then
        searchfield:='graduateschool'
      else if RadioGroup1.ItemIndex=3  then
        searchfield:='mobilephone'
      else if RadioGroup1.ItemIndex=4  then
        searchfield:='workplace'
      else if RadioGroup1.ItemIndex=5  then
        searchfield:='sort';
    end;procedure Tsearch.findClick(Sender: TObject);
    var
     searchwhat:string;
     book1:string;
    begin
     searchwhat:=Edit1.Text;
     order:='select * from friends where searchfield=:"'+searchwhat+'"';
     ADOQuery1.SQL.Clear;
     ADOQuery1.Close;
     ADOQuery1.SQL.Add(order);
     ADOQuery1.Open;
    end;
    刚申请的账号,加不了分,请多多见谅!
      

  3.   

    把错误提示发出来看下阿,是不是unknow type?
      

  4.   

    错误提示是:不正常的定义参数对象。提供了不一致或不完整的信息。
    代码如下
    procedure Tsearch.RadioGroup1Click(Sender: TObject); 
    var 
    searchfield:string; 
    begin 
      if RadioGroup1.ItemIndex=0  then 
        searchfield:='chinesename' 
      else if RadioGroup1.ItemIndex=1  then 
        searchfield:='corp' 
      else if RadioGroup1.ItemIndex=2  then 
        searchfield:='graduateschool' 
      else if RadioGroup1.ItemIndex=3  then 
        searchfield:='mobilephone' 
      else if RadioGroup1.ItemIndex=4  then 
        searchfield:='workplace' 
      else if RadioGroup1.ItemIndex=5  then 
        searchfield:='sort'; 
    end; procedure Tsearch.findClick(Sender: TObject); 
    var 
      searchwhat:string; 
      order:string; 
    begin 
      searchwhat:=Edit1.Text; 
      order:='select * from friends where searchfield=:"'+searchwhat+'"'; 
      ADOQuery1.SQL.Clear; 
      ADOQuery1.Close; 
      ADOQuery1.SQL.Add(order); 
      ADOQuery1.Open; 
    end;
    将searchfield改为表friends的字段(chinesename等)可以运行  将searchfield改成变量后运行出错
    谢谢各位的关注!
      

  5.   

    order:='select * from friends where searchfield=:"'+searchwhat+'"'; 修改成order:='select * from friends where searchfield='''+searchwhat+''''; 
    上面的语句是用SQLSERVER数据库的 不知道你用的哪个数据库你用的"符号。
      

  6.   

    数据库用的是access
    在sql属性里写了一句  select * from friends
    改成order:='select * from friends where searchfield='+searchwhat+''; 后 还是不能运行
    提示为参数searchfield没有默认值
      

  7.   

    order:='select * from friends where searchfield=:"'+searchwhat+'"'; 
    你这个语句不对啊,如果searchfield是变量,应该这么写order:='select * from friends where '+searchfield+'="'+searchwhat+'"';你的写法 'select * from friends where searchfield=:"' 这整个是一个字符串啊!
      

  8.   

    改成order:='select * from friends where '+searchfield+'='''+searchwhat+''''; 
    不能通过编译  提示:Undeclared identifier 'searchfield'
    将'+searchfield+'简化成表里的字段chinsesname能运行
      

  9.   

    真服了你了!你把searchfield:string; 声明成全局变量啊!
      

  10.   

    searchfield:string; 在这儿是局部变量,当点击事件执行完成后,变量searchfield就释放了,
    所以你在这儿procedure Tsearch.findClick(Sender: TObject); 用不了,
    解决办法是把在procedure Tsearch.RadioGroup1Click(Sender: TObject); 声明的searchfield:string; 删掉,放到全局变量那儿!
    procedure Tsearch.RadioGroup1Click(Sender: TObject); 
    var 
    searchfield:string; 
    begin 
      if RadioGroup1.ItemIndex=0  then 
        searchfield:='chinesename' 
      else if RadioGroup1.ItemIndex=1  then 
        searchfield:='corp' 
      else if RadioGroup1.ItemIndex=2  then 
        searchfield:='graduateschool' 
      else if RadioGroup1.ItemIndex=3  then 
        searchfield:='mobilephone' 
      else if RadioGroup1.ItemIndex=4  then 
        searchfield:='workplace' 
      else if RadioGroup1.ItemIndex=5  then 
        searchfield:='sort'; 
    end; 
      

  11.   

    新手上路,问题多多!
    谢谢moklee的解答!
    我将searchfield:string; 声明成全局变量后还是有问题
    错误提示为::‘语法错误(操作符丢失)在查询表达式’=‘xxx’‘’中
    这该怎么解决呢?
      

  12.   

    1.用case方法处理RadioGroup1.ItemIndex更简单一些,甚至可以用常量数组
    2.数据库中,非数字字段,须用引号引起来:order:='select * from friends where '+searchfield+'='''+searchwhat+''''; 就是对的,用QuotedStr()更好些
    但你可以把RadioGroup1Click中代码移入findClick事件中处理
      

  13.   

    谢谢楼上各位的解答
    问题已经解决了
    是RadioGroup对点击没有反应,没有给searchfield赋值