日期段查询的老问题,请高手指点 ( 积分: 100 )

  • 主题发起人 主题发起人 plalzh
  • 开始时间 开始时间
P

plalzh

Unregistered / Unconfirmed
GUEST, unregistred user!
一个表GJB,其中日期字段FBDATE,字段格式为‘2007-11-10’
想通过两个ComboBox6和ComboBox7查询区间日期
我写了一段代码:由于ComboBox采用下拉框和手工输入两种方式,故只用了年份查询。
With Resultfm.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from GJB');
if (ComboBox6.Text<>'')and (ComboBox7.Text<>'') then
SQL.Add ('and year(FBDATE) BETWEEN '+ComboBox6.Text+' and '+ComboBox7.Text+'');
Prepared;
Open;
这段代码可执行,代不能查出所需要的日期段,问题应该是year(FBDATE)与combobox.text的类型不符。

请高手帮帮忙,有如下三个要求和一个问题:
1、写一段用ComboBox查询年份区间的代码;
2、用DateTimePicker1写一段查询年月日区间段的代码;
3、用DateTimePicker1写一段查询年份区间段的代码
4、请问DateTimePicker1的空值怎么实现。如ComboBox.Text=''这样的写法。

谢谢!
 
SQL.Add ('and year(FBDATE) BETWEEN '''+ComboBox6.Text+''' and '''+ComboBox7.Text+'''');
 
来自:leiman, 时间:2007-9-19 8:31:54, ID:3835448
SQL.Add ('and year(FBDATE) BETWEEN '''+ComboBox6.Text+''' and '''+ComboBox7.Text+'''');

leiman你这种方法也可以执行,但和我的方法一样,无论输入什么时间段,比如1990-2007也只能查出来2000以后的记录,2000年以前的查不出来,怎么办呢
 
1:类型不符可以转换。无非是int和string。BETWEEN AND不行可以用 < 和 >。
2:DateTimePicker1.date和FBDATE是同一种类型,用BETWEEN AND就可以了。
3:又回到第一个问题上去了。
如果第一种方法通过,用FormatDateTime('yyyy',(DateTimePicker1))就一定能通过。
4:我认为不可行。
 
我一般是这样使用:
sql.text:='select * from table1 where FBDATE>='''+formatdatetime('yyyy-mm-dd',dDate1)+''' and '
+'FBDATE<='''+formatdatetime('yyyy-mm-dd',dDate2)+''' ';
 
前面都已经说了,第四个不可能行的我给一个可行的办法吧。
就是自己写一个DateTimeEdit或者找一个第三方的DatetimeEdit实现,不过一定要注意汉化问题,我现在用的就是Raize组件。不过与汉化补丁对应的英文版没找到,只好将就一下用E文版自己汉化一下先。

这里哪位有Raiza4.1.1英文版的朋友请给我们发一份吧,我的Mail ouyongke@163.com,最大20MB附件。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部