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
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
解决方案 »
- delphi中如何在菜单单击事件中获取当前菜单ID
- 给个调用mssql存储过程并返回记录集的例子
- Delphi比较初级的一个问题
- 如何把FTP上传这个事件写在线程里?如果一次传多个文件怎么办?
- 问一个难题:因特网机子通过一服务器取局域网中一msSQL数据的方法,解决后加分
- ExpressQuantumGrid Suite V5有没有FOR D6的及其补丁,哪有下?
- 向各位高手请教有关TDBNavigator的问题,在线等!
- test
- 菜鸟程序员论坛,招募菜鸟加入,是菜鸟的进来,来者有分~~
- delphi的查询实现(大二学生求救)
- 请教屏幕找图、找色的函数
- 【散分】发布函数代码查询器 FunSearcher v1.0.0
意思是,在程序里没有使用Date1, Date2这两个值。一般编译器会自动优化掉的。
意思是,在程序里没有使用Date1, Date2这两个值。一般编译器会自动优化掉的。
==============================================================================================
上面的date1和date2只是在SQL中产生了2个参数,与变量Date1和Date2毫不相干。应该在上面这句语句后面为参数赋值,然后再打开query
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;
SQl.add('convert(varchar(10),TimePlanStart,120) >:date1 AND convert(varchar(10),TimePlanEnd,120) <:date2'); 你这里用了宿主参数,要先为参数赋个值
不关Date1,Date2的事,应该是你的convert(varchar(10)....)有问题。不用转换,直接SQl.add('TimePlanStart >:date1 AND TimePlanEnd <:date2');
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)