procedure TFormCommonQuery.Button1Click(Sender: TObject);
var
  sqlstr:string;
  Date1:TDate;
  Date2:TDate;
  Function FormatStringDate(s :string):String;
  begin
   FormatStringDate:=Copy(S,1,4)+'-'+Copy(S,5,2)+'-'+Copy(S,7,2);
  end;
begin
ShortDateFormat:='yyyy-mm-dd';
DateSeparator:='-';
if Edit5.Text <> '' then
   begin
      try
        strtoint(Edit5.Text);
      Except
        SHowmessage('输入的必须为8位数字');
        edit5.SetFocus;
        Edit5.SelectAll;
        exit;
      end;
     if Length(edit5.Text) = 8 then       date1 := strtodate(FormatStringDate(Edit5.text))
     else
     begin
       showmessage('输入的不是有效日期,正确形式如20080101');
       edit5.SetFocus;
       edit5.SelectAll;
       exit;
     end;     if Edit6.Text <> '' then
     begin
       try
         strtoint(Edit6.Text);
       Except
         SHowmessage('输入的必须为8位数字');
         edit6.SetFocus;
         edit6.SelectAll;
         exit;
       end;       if Length(edit6.Text) = 8 then         date2 := strtodate(FormatStringDate(Edit5.text))
       else
       begin
         showmessage('输入的不是有效日期,正确形式如20080101');
         edit6.SetFocus;
         edit6.SelectAll;
         exit;
       end;       with query1 do
       begin
         close;
         SQL.Clear;
         SQL.add('select PlanInfo.ID,PlanInfo.Name,Money,TimePlan,TimePlanStart,TimePlanEnd,PlanInfo.PersonDuty,Place,Introduce,TimeStart,Progress,TimeEnd from PlanInfo,ProInfo where PlanInfo.ID =ProInfo.ID AND');
         SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2');
         Open;
       end;
     end

解决方案 »

  1.   

    TimePlanStart和TimePlanEnd在表中是varchar(20)类型
      

  2.   

    这种提示是属于“Hint”的,不用理他,对程序运行没影响的。
    意思是,在程序里没有使用Date1, Date2这两个值。一般编译器会自动优化掉的。
      

  3.   

    这种提示是属于“Hint”的,不用理他,对程序运行没影响的。
    意思是,在程序里没有使用Date1, Date2这两个值。一般编译器会自动优化掉的。
      

  4.   

    Date1和Date2没有使用,删除这2个变量就行了
      

  5.   

    我需要这段语句,但显示是Date1 Date2未使用,怎么解决?
      

  6.   

    赋值了,但是你的两个Date没有用过,你就把data1和data2赋值了,但是之后就没管了
      

  7.   

     SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2'); 这种写法有错吗??Date1 Date2未使用?
       
      

  8.   

    SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2'); 
    ==============================================================================================
    上面的date1和date2只是在SQL中产生了2个参数,与变量Date1和Date2毫不相干。应该在上面这句语句后面为参数赋值,然后再打开query
      

  9.   

          with query1 do 
          begin 
            close; 
            SQL.Clear; 
            SQL.add('select PlanInfo.ID,PlanInfo.Name,Money,TimePlan,TimePlanStart,TimePlanEnd,PlanInfo.PersonDuty,Place,Introduce,TimeStart,Progress,TimeEnd from PlanInfo,ProInfo where PlanInfo.ID =ProInfo.ID AND'); 
            SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2'); 
            ParamByName('date1').Value:=Date1;
            ParamByName('date2').Value:=Date2;

            Open; 
          end; 
      

  10.   

    varchar转换float时出错????
      

  11.   

    如10楼
      SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2'); 你这里用了宿主参数,要先为参数赋个值
      

  12.   

    我使用了10楼方法,但运行时报错:varchar转换float时出错  大侠们帮小弟解解 ,感激涕零
      

  13.   


    不关Date1,Date2的事,应该是你的convert(varchar(10)....)有问题。不用转换,直接SQl.add('TimePlanStart >:date1 AND TimePlanEnd <:date2'); 
      

  14.   

     with query1 do 
          begin 
            close; 
            SQL.Clear; 
            SQL.add('select PlanInfo.ID,PlanInfo.Name,Money,TimePlan,TimePlanStart,TimePlanEnd,PlanInfo.PersonDuty,Place,Introduce,TimeStart,Progress,TimeEnd from PlanInfo,ProInfo where PlanInfo.ID =ProInfo.ID AND'); 
            SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2'); 
            ParamByName('date1').Value:=datetostr(Date1); 
            ParamByName('date2').Value:=datetostr(Date2); 
            Open; 
          end; 你的查询条件里面已经轮换成串类型了'convert(varchar(10),TimePlanStart,120)