adoquery1.SQL.Add('select 员工编号,sum(迟到) as 共迟到总数 from jiguo where 日期 between '''+datetostr(datetimepicker1.date)+''' and '''+datetostr(datetimepicker2.Date)+''' group by 员工编号');
 其中表的日期字段类型为日期时间型默认值date()
出错信息:标准表达式中数据类型不匹配  大哥怎么解决 急!!

解决方案 »

  1.   

    adoquery1.SQL.Add('select 员工编号,sum(迟到) as 共迟到总数 from jiguo where 日期                              ----between  #' +FormatDateTime('yyyy-MM-dd', datetimepicker1.Date) + '# and #'   -----FormatDateTime('yyyy-MM-dd', datetimepicker2.Date) + '#' group by 员工编号');
    这样写‘---’是因为在这里我加不上缩进 用的时候把‘-’去掉 
      

  2.   

    晕 最郁闷这里的格式没办法控制 adoquery1.SQL.Add('select 员工编号,sum(迟到) as 共迟到总数 from jiguo where 日期 between #' +FormatDateTime('yyyy-MM-dd', datetimepicker1.Date) + '# and #'FormatDateTime('yyyy-MM-dd', datetimepicker2.Date) + '#' group by 员工编号');
    这样写‘---’是因为在这里我加不上缩进 用的时候把‘-’去掉
      

  3.   

    可以在DateTimePicker上放一个没边框和3D效果的Text控件。在DateTimePicker的OnChange事件中赋值:
    procedure Tfrmsearch.dtpbeginChange(Sender: TObject);
    begin
      edtbegin.Text := FormatDateTime('YYYY-MM-DD', dtpBegin.Date);
    end;procedure Tfrmsearch.dtpendChange(Sender: TObject);
    begin
      edtend.Text := FormatDateTime('YYYY-MM-DD', dtpend.Date);
    end;实际生成SQL语句的时候这样写(我这样写,没出过错!):
    if (edtBegin.Text <> '') and (edtEnd.Text <> '') then
    begin
      BoxSQL := BoxSQL + Format('and Op_Date>=''%S'' and Op_Date<=''%S''',[edtBegin.Text, edtEnd.Text]);
      Result := True;
    end
    else
      if edtBegin.Text <> '' then
      begin
        BoxSQL := BoxSQL + Format('and Op_Date=''%S'' ', [edtBegin.Text]);
        Result := True;
      end
      else
      if edtEnd.Text <> '' then
      begin
        BoxSQL := BoxSQL + Format('and Op_Date=''%S'' ', [edtEnd.Text]);
        Result := True;
      end;