adoquery1.sql.add()
括号中的查询语句该怎么写:
  查询一个表,查询条件的所用到的列acol在sqlserver为datetime类型;
那么在此查询语句用parameters怎么写?
接着该怎么对parameters进行赋值??
谢谢!

解决方案 »

  1.   

    //对于日期型字段, 的之间
    {procedure GetSql(SQL:TStrings;FieldName:String;dFrom,dTo:TDateTime);
    begin
     SQL.Add(Format('%s BETWEEN #%s# AND #%s#',[FieldName, FormatDateTime('YYYY-MM-DD',dFrom),FormatDateTime('YYY-MM-DD',dTo)]));
    end;
    }
    //对于日期 时间 型字段, 的相等
    //对于数字型字段可能还有“<”、“>”、“=”等操作,可仿照以上函数。
    procedure GetSqlDateTime(SQL:TStrings;FieldName:String;dSame:TDateTime;Mode:String;T:boolean);  //Mode  <,>,=,<=,>=,<>
    begin//true 代表日期  false代表时间
      if t then
        SQL.Add(Format('%s %s #%s#',[FieldName,Mode,FormatDateTime('YYYY-MM-DD''',dSame)]))
      else
        SQL.Add(Format('%s %s #%s#',[FieldName,Mode,FormatDateTime('hh:mm:ss''',dSame)]));
    end;
      

  2.   

    adoquery1.sql.add('select * from table1 acol=:acol');
    adoquery1.parameters[0].value:=Edit1.text; //[0]对应acol列
      

  3.   

    上面的是针对 access的 sqlserver把#去掉  直接赋值就行
      

  4.   

    谢谢
    adoquery1.sql.add('select * from table1 acol=:acol');
    adoquery1.parameters[0].value:=Edit1.text; //[0]对应acol
    出现:"没有执行可选特性"
    ----------------------------------------谢谢,如果用parameters该怎么写
      

  5.   

    adoquery1.sql.add('select * from table1 acol=:acol');
    adoquery1.parameters.parambyname('acol').value:=Edit1.text;
      

  6.   

    adoquery1.sql.add('select * from table1 acol=:acol');
    adoquery1.parameters.parambyname('acol').value:=Edit1.text;
    --------
    当acol列在sqlserver中为datetime类型时,会出现:
    没有执行可选特性
    的错误!