CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

大虾帮我看看这段代码,在线等待。。。。。。。。。

楼主trustme007(相信我)2003-06-01 15:25:46 在 Delphi / 数据库相关 提问

数据库用的自带的paradox,那个Zhbh和Yblx本来就是字符型的字段,那个没什么,关键是日期型S字段frq的处理  
  var  
      Present,StartDate,EndDate:   TDateTime;  
      Year,   Month,   Day:   Word;  
   
   
  begin     //只列出了其中一段  
                      Present:=now;  
                      DecodeDate(Present,Year,   Month,   Day);  
                      Month:=StrToInt(Trim(MaskEdit1.Text));  
                      Day:=1;  
                      StartDate:=EncodeDate(Year,Month,Day);  
                      Day:=28;  
                      EndDate:=EncodeDate(Year,Month,Day);  
                      Query1.Close;  
                      Query1.SQL.Clear;  
                      Query1.SQL.Add('Select   Ybsj   From   jlybsj');  
                      Query1.SQL.Add('Where   (Zhbh='+QuotedStr(ComboBox1.Text)+')');  
                      Query1.SQL.Add('   And   (Yblx='+QuotedStr(ComboBox2.Text)+')');  
                      Query1.SQL.Add('And   (Sfrq>:StartDate   And   Sfrq<:EndDate)');  
                      Query1.Open;  
                      Query1.ParamByName('StartDate').AsDateTime:=StartDate;  
                      Query1.ParamByName('EndDate').AsDateTime:=EndDate;  
  end  
  错误:Field   'StartDate'is   of   unknown   type  
  意图比较明显,请大虾指点错在哪,应该怎么改  
  问题点数:0、回复次数:13Top

1 楼li_zhifu(东北人)回复于 2003-06-01 15:37:28 得分 0

Query1.SQL.Add('And   (Sfrq>:StartDate   And   Sfrq<:EndDate)');  
  Query1.ParamByName('StartDate').AsDateTime:=StartDate;  
  Query1.ParamByName('EndDate').AsDateTime:=EndDate;  
  Query1.Open;Top

2 楼li_zhifu(东北人)回复于 2003-06-01 15:38:02 得分 0

同一问题问两遍,你是想给40分啊,好,都给我吧Top

3 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-06-01 15:43:08 得分 0

好象没有错误  
  根据提示:是数据库中的StartDate设置的类型出错Top

4 楼trustme007(相信我)回复于 2003-06-01 15:52:36 得分 0

to   东北人,这个问题不是关键了,顺序改过来  
  提示错误:capability   not   supported  
  我是提了两次,可是开始和那位兄弟讨论了半天问题没有解决  
  如果能解决,100分我也无所谓的Top

5 楼trustme007(相信我)回复于 2003-06-01 15:54:21 得分 0

to   sailor:StartDate是个变量,我在上面有申明的Top

6 楼li_zhifu(东北人)回复于 2003-06-01 16:13:19 得分 0

“to   东北人,这个问题不是关键了”  
  这当然是关键,在Open前才能给参数赋值  
  至于你说的提示信息是因为类型不匹配,你可以调试一下,看到哪一句后出错Top

7 楼trustme007(相信我)回复于 2003-06-01 16:19:00 得分 0

其他得还好调,可是这SQL语句一直困惑我,这个东东不好调,要么是一起执行得  
  怎么看得到是哪一条出错?有没有什么好方法  
  我说得这不是关键得意思,是我开始就是这样得,后来有个网友让我这样试试,我  
  就改一下试试Top

8 楼wyr521(论坛王子)回复于 2003-06-01 16:32:07 得分 0

query1.params[0].datatype:=?  
  这样定义数据类型,  
  在USES中引用table,dbtableTop

9 楼li_zhifu(东北人)回复于 2003-06-01 16:47:19 得分 0

表里的字段Sfrq的类型是你确定是日期型的么?Top

10 楼yixia(一侠)回复于 2003-06-01 16:50:17 得分 0

Query1.SQL.Add('And   (Sfrq>:StartDate   And   Sfrq<:EndDate)');  
   
  把参数去掉看看,  
  用  
  query1.sql.add('and   ')  
  query1.sql.add('   sfrq>'''+datetostr(StartDate)+'''   and   Sfrq   <'''+   datetostr(EndDate)+'''')  
   
  我用ado时,用字符串不错Top

11 楼lxy13(甜甜)回复于 2003-06-01 16:54:04 得分 0

在Open前给参数赋值  
                          Query1.Open;  
                      Query1.ParamByName('StartDate').AsDateTime:=StartDate;  
                      Query1.ParamByName('EndDate').AsDateTime:=EndDate;  
   
  改为  
                    Query1.ParamByName('StartDate').AsDateTime:=StartDate;  
                      Query1.ParamByName('EndDate').AsDateTime:=EndDate;  
                      Query1.Open;  
                       
   
   
  Top

12 楼trustme007(相信我)回复于 2003-06-01 17:07:28 得分 0

to:东北人,当然确定了,表里有数据的嘛  
  我改了一下,大家看看,错误提示是类型不匹配,我发现paradox的日期性格式  
  有点怪哦,因为在在SQL   builder里面输入select   *   from   jlybsj   where   Sfrq<2003-01-03  
  和select   *   from   jlybsj   where   Sfrq<'2003-01-03'  
  select   *   from   jlybsj   where   Sfrq<'2003-1-3'  
  select   *   from   jlybsj   where   Sfrq<2003-1-3  
  都提示类型不匹配  
   
  var  
      Present:   TDateTime;  
      StartDate,EndDate:   String;  
      Year,   Month,   Day:   Word;  
   
  Begin  
                      Present:=now;  
                      DecodeDate(Present,Year,   Month,   Day);  
                      Month:=StrToInt(Trim(MaskEdit1.Text));  
                      Day:=1;  
                      StartDate:=FormatDateTime('''yyyy''-''M''-''d''',EncodeDate(Year,Month,Day));  
                      Day:=28;  
                      EndDate:=FormatDateTime('''yyyy''-''M''-''d''',EncodeDate(Year,Month,Day));  
                      Query1.Close;  
                      Query1.SQL.Clear;  
                      Query1.SQL.Add('Select   Ybsj   From   jlybsj');  
                      Query1.SQL.Add('Where   (Zhbh='+QuotedStr(ComboBox1.Text)+')');  
                      Query1.SQL.Add('   And   (Yblx='+QuotedStr(ComboBox2.Text)+')');  
                      Query1.SQL.Add('And   Sfrq>'+QuotedStr(StartDate)+'   And   Sfrq<'+QuotedStr(EndDate));  
                      ShowMessage(Query1.SQL.Text);  
                      Query1.Open;  
   
  endTop

13 楼li_zhifu(东北人)回复于 2003-06-02 08:47:59 得分 0

formatdatetime('m/d/yy',now);  
  你再试试这种格式Top

相关问题

  • 100分,在线等待,请帮帮忙,代码不通过
  • 帮帮忙,看看那句代码有问题,在线等待
  • 请帮我看看这段代码(在线等待)
  • 帮我看看这个代码,在线等待
  • 帮我改改这段代码!在线等待
  • 『『『看看代码』』』在线等待
  • [[[看代码了]]]在线等待
  • 代码问题,在线等待!!!
  • C++转DELPHI代码,在线等待..
  • 大家帮我看看这个代码有没有错误!在线等待!

关键词

  • sql
  • startdate
  • query1
  • quotedstr
  • month
  • day
  • present
  • year
  • add
  • text

得分解答快速导航

  • 帖主:trustme007

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo