Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('SELECT * from main');
query1.Sql.Add('where rolecode = '''+rolecode.AsString+'''' );
if ComboBox3.Text<>'' then
Query1.SQL.Add('AND nsmc='''+ComboBox3.Text+'''');
if ComboBox4.Text<>'' then
Query1.Sql.Add('AND qiyecode='''+ComboBox4.Text+'''');
Query1.Sql.Add(' AND date between '''+
FormatDateTime('YYYY"-"MM"-"DD', DateTimePicker1.Date) +''' and '''+
FormatDateTime('YYYY"-"MM"-"DD', DateTimePicker2.Date) + '''');
query1.open;
如果不加日期条件是对的,但加了日期条件后,编译过了,但运行的时候它说form子句有错无,不知道为什么?我的数据库是access,这个语句在sqlserver下编译运行没有问题?

解决方案 »

  1.   

    FormatDateTime('YYYY-MM-DD', DateTimePicker1.Date);
    不是这样用的 FormatDateTime('YYYY"-"MM"-"DD', DateTimePicker1.Date)
      

  2.   

    Access的日期时间要这样表示
    "where 日期时间 > #2003-07-10#"
      

  3.   

    Access数据库要在日期前后都加上#,
    而且Formatdatatime用的不对
      

  4.   

    这么写:
    with adoquery1 do
       begin
            close;
            sql.text:='select * from main where date between #'+datetostr   (datetimepicker1.date)+'#'+' and #'+datetostr(datetimepicker2.date)+'#';
            open;
       end;
      

  5.   

    Query1.Sql.Add(' AND date between '''+
    #'+datetostr(DateTimePicker1.Date) +'#'+''' and '''+
    #'+datetostr( DateTimePicker2.Date)+'#' + '''');
    改成这样了,怎么还是不对哦
      

  6.   

    Query1.Sql.Add(' AND date between '+
    '#'+datetostr(DateTimePicker1.Date) +'#'+' and '+
    '#'+datetostr( DateTimePicker2.Date)+'#');不要三个'号