Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1257590
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-04-22 11:00:58



procedure   TForm4.BitBtn1Click(Sender:   TObject);  
  begin  
  adoquery1.Close;  
  adoquery1.SQL.Clear;  
  adoquery1.ConnectionString:=('Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=zysb.mdb;Persist   Security   Info=False');  
  adoquery1.sql.add('select   日期   as   Tdate,姓名   as   Tname,积休事由   as   jxsy,积休天数   as   ts');  
  adoquery1.sql.add('   from   jxj');  
  adoquery1.sql.add('where   str(日期)>='+#39+datetimetostr(DateTimePicker2.date)+#39+'   and   str(日期)<='+#39+datetimetostr(DateTimePicker3.date)+#39+'   order   by   日期');  
  adoquery1.Open;  
   
  if   adoquery1.Recordcount=0   then  
  showmessage('报表中没有可用数据!')  
  else  
  RvProject1.Execute;  
  end;  
  ///////其中"日期"是acess中的日期时间型,每次都选择不到自己的需要的日期范围内的数据,前面的日期大于后面的时,还能取到数据!!/////////////////

'where   str(日期)>='+#39+datetimetostr(DateTimePicker2.date)+#39+'   and   str(日期)<='+#39+datetimetostr(DateTimePicker3.date)+#39+'  
   
  ---------  
   
  修改一下就OK了  
   
  Where   DATEDIFF("d",   订购日期,   '++#39+datetimetostr(DateTimePicker2.date)+#39+')   <=   0  
      And   DATEDIFF("d",   订购日期,   '++#39+datetimetostr(DateTimePicker3.date)+#39+')   >=   0  
   
 

对不起,多了一个加号  
   
  Where   DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker2.date)+#39+')   <=   0  
      And   DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker3.date)+#39+')   >=   0    
   
 

好象答非所问了,我说的是这一句:  
  adoquery1.sql.add('where   str(日期)>='+#39+datetimetostr(DateTimePicker2.date)+#39+'   and   str(日期)<='+#39+datetimetostr(DateTimePicker3.date)+#39+'   order   by   日期');  
 

是啊,   你按我的修改你这条语句  
   
  adoquery1.sql.add('where   str(日期)>='+#39+datetimetostr(DateTimePicker2.date)+#39+'   and   str(日期)<='+#39+datetimetostr(DateTimePicker3.date)+#39+'   order   by   日期');  
   
  ..............修改  
   
  adoquery1.sql.add('Where   DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker2.date)+#39+')   <=   0  
      And   DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker3.date)+#39+')   >=   0     order   by   日期');

还是不会改,你是不是可以帮我改一下,这儿先谢谢了  
 

好吧.:):)  
   
  procedure   TForm4.BitBtn1Click(Sender:   TObject);  
  begin  
  adoquery1.Close;  
  adoquery1.SQL.Clear;  
  adoquery1.ConnectionString:=('Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=zysb.mdb;Persist   Security   Info=False');  
  adoquery1.sql.add('select   日期   as   Tdate,姓名   as   Tname,积休事由   as   jxsy,积休天数   as   ts');  
  adoquery1.sql.add('   from   jxj');  
  adoquery1.sql.add('Where   DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker2.date)+#39+')   <=   0  
      And   DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker3.date)+#39+')   >=   0     order   by   日期');  
   
  if   adoquery1.Recordcount=0   then  
  showmessage('报表中没有可用数据!')  
  else  
  RvProject1.Execute;  
  end;  
   
   
 

肯定是转换的格式不正确,不用DateTimeToStr   使用FormateDateTime试试看

谢谢sanmaotuo(老冯);问题解决了,能不能把"DATEDIFF("d",   订购日期,   '+#39+datetimetostr(DateTimePicker2.date)+#39+')   <=   0"解释一下,我看不懂,这个"d"是什么东东.  
 

还有我的为什么不对!

可以.其实你不用数据库就能测试出你的问题.  
   
  你把DateTimePicker2.date设置为今天(2006-12-6)   然后  
   
  你比较一下   '2006-12-31'   和   datetimetostr(DateTimePicker2.date)  
   
  看看结果,是不是很意外?   居然'2006-12-31'   <   datetimetostr(DateTimePicker2.date)  
   
  为什么呢?   因为datetimetostr(DateTimePicker2.date)   =   '2006-12-6   20:02:35'    
   
  而   -6   >   -31

比较字符串的顺序是  
  2-->2  
  0-->0  
  0-->0  
  6-->6  
  1-->1  
  2-->2  
  6-->3!!!!!!!

从左到右

噢,谢谢

不客气.:):)

高手

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
 

对不起,我不知道怎么结帐?!

我的帖子--->管理--->



--------------------------
新闻:大脑推客:通过电脑思考即可发布Twitter消息
网站导航: 博客园首页  新闻  .NET频道  社区  博问  闪存  找找看
阅读(1052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~