where year = :yearnoref

解决方案 »

  1.   

    sql语句有问题,from 后面应是表名不是数据库名。
      

  2.   

    ParamCheck 是True
    to newyj:我是这么写的!
      

  3.   

    你table.year是什么类型,
    另query1.ParamByName('yearnoref').asstring//asstring这里要根据数据表中相应的类型
    再,你可以换种方法试试
    query1.Params[0].asstring:=yearno;
      

  4.   

    yearno:=edit1.Text ;
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from "Table.db"');
    query1.SQL.add('where year=:yearnoref');
    query1.ParamByName('yearnoref').asstring:=yearno;
    query1.Prepare ;
    query1.Open;
      

  5.   

    不用引号"table.db"不用这样,只要select * form table
      

  6.   

    yearno:=edit1.Text ;
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from "Table.db"');
    query1.SQL.add('where table.year='+yearno);
    query1.Prepare ;
    query1.Open;
      

  7.   

    yearno:=edit1.Text ;
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from "Table.db"');
    query1.SQL.add('where year='+''''+yearno+'''');//如果year 不是数字类型
    query1.SQL.add('where year='+yearno);//如果year 是数字类型query1.Prepare ;
    query1.Open; 
      

  8.   

    year是Alpha类型,上述方法都试了,出错!
      

  9.   

    你这样写啊
    yearno:=edit1.Text ;
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from table.db);
    query1.SQL.add('where year=:yy');
    query1.params[0].asstring:=edit1.text;
    query1.Open
      

  10.   

    不用声明yearoref,你好好检查是否有拼写错误。这种问题一般是粗心导致的。 
      

  11.   

    to lwk_hlj 这样我也做过,错误:list index out of bounds (0)
    year不是关键字
      

  12.   

    你可以不用Parameter的方法,使用kuangning的方法就可以了,注意,如果是字符类型的一定要加引号的,你可以使用delphi自带的SQL Explore试一下.是四个单引号代表一个单引号.另外,在你prepare并且得到数据集以后,一定要unprepare.应该不会出错的.自己设置断点调试一下.在prepare的地方设置断点.按ctrl+f7,查看Query1.SQL.Text.结果给大家看一下,期间可能包含字符串'#$0d$0a'就是回车换行,把它去掉,然后拷贝到SQL Explore执行一下.数据库表的名字不用加引号的.试一下吧.
      

  13.   

    “Year” 是SQL关键字,换一个字段名比如“Years”,条件可以这么写:
    query1.SQL.add('where years=:yearnoref');
    query1.ParamByName('yearnoref').asstring:=yearno;
    不要字段名前面的表名。
    试试看!
      

  14.   

    不然你把query1删掉重新建一个试一试
      

  15.   

    to mastersky:换过,还是出错,不认yearnoref。
    to fishzxy:换过,一样!
      

  16.   

        若你是用sql server语句的,那么你可以直接这样写一个sql 语句,sqlstring:='select * from Table.db where table.year = '+''''+edit1.text+'''';这
     .
     .
    query1.SQL.Add(sqlstring);
     .
     .样就可以执行了?
      

  17.   

    yearno:=edit1.Text ;
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from "Table.db"');
    query1.SQL.add('where table.year=:yearnoref');
    query1.ParamByName('yearnoref').asstring:=yearno;
    query1.Prepare ;
    query1.Open;
    //*************** 帮你改了 ********************
    ADate:=Edit1.text;// edit1.text:='nnnn-n-n'procedure myQry(ADate:TString);
    const s='select * from table where year=#%s#';
    begin
      with query1 do // TAdoQuery
      begin
        if Active then Close;
        Sql.clear;
        sql.add(format(s,[ADate]);
        Open;
      end;
    end;
    {附:你的Query1是不是根本就没设参数?如上例不需设置参数即可查询,适用于参数少的查询}
      

  18.   

    ->怎么回事,是不是yearnoref应该声明呢,但是书里面没有说呀!
    看来全是没设参数惹的祸! 很好设的,从对象浏览器中选中query1,找到params项点击'...'。
      

  19.   

    有几种方法“
    1:
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from Table.db');
    query1.SQL.add('where table.year=:yearnoref');
    query1.ParamByName('yearnoref').asstring:=edit1.text;
    query1.Open;2:(适合字段为字符)
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from Table.db');
    query1.SQL.add('where table.year="'+edit1.text+'"');
    query1.Open;