本帖最后由 yqb197846 于 2013-07-31 14:55:33 编辑

解决方案 »

  1.   

    其他没看,先发现了这个'',应该是' ' 一个空格,改了再说
    formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59'; 
      

  2.   

      DateTimePicker2.Date := StrToDateTime('2013-07-31');
      DateTimePicker1.Date:= StrToDateTime('2013-07-31');继续改
      

  3.   


    var
     TmpDate2,TmpDate1,str:string;
    begin
      DateTimePicker2.Date:='2013-07-31';//这两句应该编译不过吧,不能将字符串赋值给DateTimePicker的Date
      DateTimePicker1.Date:='2013-07-31';//
      TmpDate2:=  formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59';
      t := VarToDateTime(TmpDate2);//t:=strtodatetime(TmpDate2);应该是这里报错吧,改为用VarToDateTime函数
      TmpDate1:= (formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
      With ADOQuery2 Do
      Begin
        CLose;
        Sql.Clear;
        Sql.Add('Select * From zh_vxsdmx where ?售?? between ''+ TmpDate1 +'' and ''+ TmpDate2 +''');
        open;
      end;
    end;
      

  4.   

    1: ‘’ 是一个空格
    2:其实DateTimePicker2.Date:=date;为了大家看直接写了‘2013-07-31’
      

  5.   

    我从新发一个
    请帮忙看看下面的语句出错在哪里 提示‘字符窜转化为datetime出错 Var
     
     TmpDate2,TmpDate1,str:string;
     
    beginDateTimePicker2.Date:=date;
    DateTimePicker1.Date:=date';
    TmpDate2:=  (formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');TmpDate1:= (formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    With ADOQuery2 Do
     Begin
     CLose;
     Sql.Clear;
     Sql.Add('Select * From zh_vxsdmx where 销售时间 between ''+ TmpDate1 +'' and ''+ TmpDate2 +''');
     open;
     end;
      

  6.   

    如果没有t := VarToDateTime(TmpDate2);
    俺测试编译通过没有报‘字符窜转化为datetime出错’,你报错程序断在哪一行啊
      

  7.   

    编译是可以通过 但ADOQuery2 open时报错
      

  8.   

    按如下修改下试试:Var
     
     TmpDate2,TmpDate1:TDateTime;
     
    beginDateTimePicker2.Date:=date;
    DateTimePicker1.Date:=date';
    TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    With ADOQuery2 Do
     Begin
     CLose;
     Sql.Clear;
     Sql.Add('Select * From zh_vxsdmx where 销售时间 between :TmpDate1 and :TmpDate2');
     Parameters.ParamByName('TmpDate1').Value := TmpDate1;
     Parameters.ParamByName('TmpDate2').Value := TmpDate2; 
     open;
     end
      

  9.   

    以参数传递, TmpDate2,TmpDate1改为日期型: TmpDate2,TmpDate1:TDateTime;
      

  10.   

    Sql.Add('Select * From zh_vxsdmx where 销售时间 between ''+ TmpDate1 +'' and ''+ TmpDate2 +''');
    改成:
    Sql.Add('Select * From zh_vxsdmx where 销售时间 between '''+ TmpDate1 +''' and '''+ TmpDate2 +'''');
      

  11.   

    TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    编译不过
      

  12.   

     open 时提示‘从char数据类型到datetime转化导致datetime越界’
      

  13.   

    TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    编译不过注意我红色字体的地方var
     TmpDate2,TmpDate1:TDateTime;
    begin
      DateTimePicker2.Date:=date;
      DateTimePicker1.Date:=date;
      TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');
      TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00:00:00');  With ADOQuery2 Do
      Begin
        CLose;
        Sql.Clear;
        Sql.Add('Select * From zh_vxsdmx where 销售时间 between :TmpDate1 and :TmpDate2');
        Parameters.ParamByName('TmpDate1').Value := TmpDate1;
        Parameters.ParamByName('TmpDate2').Value := TmpDate2;
        open;
      end;
    end;
      

  14.   

    TmpDate1:= (formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    改成:
    TmpDate1:= (formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00:00:00');
      

  15.   

    TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    编译不过注意我红色字体的地方var
     TmpDate2,TmpDate1:TDateTime;
    begin
      DateTimePicker2.Date:=date;
      DateTimePicker1.Date:=date;
      TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');
      TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00:00:00');  With ADOQuery2 Do
      Begin
        CLose;
        Sql.Clear;
        Sql.Add('Select * From zh_vxsdmx where 销售时间 between :TmpDate1 and :TmpDate2');
        Parameters.ParamByName('TmpDate1').Value := TmpDate1;
        Parameters.ParamByName('TmpDate2').Value := TmpDate2;
        open;
      end;
    end;TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00-00-00');
    编译不过注意我红色字体的地方var
     TmpDate2,TmpDate1:TDateTime;
    begin
      DateTimePicker2.Date:=date;
      DateTimePicker1.Date:=date;
      TmpDate2:=  VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59');
      TmpDate1:= VarToDateTime(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00:00:00');  With ADOQuery2 Do
      Begin
        CLose;
        Sql.Clear;
        Sql.Add('Select * From zh_vxsdmx where 销售时间 between :TmpDate1 and :TmpDate2');
        Parameters.ParamByName('TmpDate1').Value := TmpDate1;
        Parameters.ParamByName('TmpDate2').Value := TmpDate2;
        open;
      end;
    end;为正解 谢谢大家的帮助 结贴
      

  16.   

    Var
     
     TmpDate2,TmpDate1,str:string;
     
    beginDateTimePicker2.Date:='2013-07-31';
    DateTimePicker1.Date:='2013-07-31';
    TmpDate2:=  formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' '+'23:59:59';
    //t:=strtodatetime(TmpDate2);
    TmpDate1:= (formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' '+'00:00:00');
    With ADOQuery2 Do
     Begin
     CLose;
     Sql.Clear;
     Sql.Add('Select * From zh_vxsdmx where 销售时间 between '''+ TmpDate1 +''' and '''+ TmpDate2 +'''');
     open;
     end; 
    //这个代码可通过。
      

  17.   

    Var
     
     TmpDate2,TmpDate1,str:string;
     
    beginDateTimePicker2.Date:='2013-07-31';
    DateTimePicker1.Date:='2013-07-31';
    TmpDate1:= Quotedstr(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date)+' 00:00:00'));
    TmpDate2:=  Quotedstr(formatdatetime('yyyy-mm-dd',DateTimePicker2.Date)+' 23:59:59');
    With ADOQuery2 Do
     Begin
     CLose;
     Sql.Clear;
     Sql.Add('Select * From zh_vxsdmx where 销售时间 between '+ TmpDate1 +' and '+ TmpDate2);
     open;
     end; 
    //这样更直观