我做了个管理系统,最后涉及到对数据库中数据的统计,我想用DateTimePicker控件按时间对数据库中的数据进行统计,
我的代码是:
if query1.Active then
query1.Close;
query1.ParamByName('start').AsDate:=DateTimePicker1.Date;
query1.ParamByName('end').AsDate:=DateTimePicker2.Date;
query1.SQL.Clear;
t1:=query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between :start and :end ');
query1.Open;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;但是这代码运行会出现:query1:Parameters'start' not found 的错误,不知道问题出在那了,麻烦高手们帮我看下问题出在什么地方。
谢谢!
我的代码是:
if query1.Active then
query1.Close;
query1.ParamByName('start').AsDate:=DateTimePicker1.Date;
query1.ParamByName('end').AsDate:=DateTimePicker2.Date;
query1.SQL.Clear;
t1:=query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between :start and :end ');
query1.Open;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;但是这代码运行会出现:query1:Parameters'start' not found 的错误,不知道问题出在那了,麻烦高手们帮我看下问题出在什么地方。
谢谢!
解决方案 »
- 如用用FastReport根据DataGrid动态生成报表?
- 不打开DELPHI,可以直接用命令行来编译工程文件(.dpr)吗?
- ★★★关于报表显示日期的问题★★★!!!!来者有分!!!!!!
- Internet Transfer Control控件在Delphi中的使用
- 继续卖身:我都快没命了,哪为好心人帮帮我,怎样查看mp3文件的代码,还有怎么实现wav压缩为mp3或是其他的文件格式都可以(希望您能施舍
- 在delphi应用程序中调用Word的字数统计功能,或者实现这样的功能,主要是非中文单词,怎么做啊?
- 如何取消查询操作?
- 在delphi中往一个文本文件写东西时如何换行? 回答着给分!!!!
- 大虾请进,DELPHI究竟有多少语句
- 求 delphi xe 下载地址
- 关于 ExtTextOutW 函数,请各位帮个忙,谢!
- DELPHI 中的饼图控件为何各部份的百分比之和不等于100%呢?
query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between :start and :end ');
query1.ParamByName('start').AsDate:=DateTimePicker1.Date;
出现的错误是:在关键字end附近有语法错误
query1.ParamByName('end').AsDate:=DateTimePicker2.Date;HsWong写了一句,楼主就不知再加一句了吗?
我的代码是:
if query1.Active then
query1.Close;
query1.SQL.Clear;
t1:=query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between start and end ');
query1.Open;
query1.ParamByName('start').AsDate:=DateTimePicker1.Date;
query1.ParamByName('end').AsDate:=DateTimePicker2.Date;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;这样也还是有错啊
我觉得 start和end 定义有问题
麻烦高手指点下
query1.Close;
query1.SQL.Clear;
t1:=query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between :start and :end ');
query1.Open;
query1.ParamByName('start').AsDate:=DateTimePicker1.Date;
query1.ParamByName('end').AsDate:=DateTimePicker2.Date;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;
你说的query1.ParamByName('end').value:=DateTimePicker2.Date;
也不行啊
if query1.Active then
query1.Close;
query1.SQL.Clear;
t1:=query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between :start and :end ');
query1.Open;
query1.ParamByName('start').AsDate:=datetostr(DateTimePicker1.DateTime);
query1.ParamByName('end').AsDate:=datetostr(DateTimePicker2.DateTime);
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;
query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between #'+datetostr(DateTimePicker1.Date)+'# and #' +datetostr(DateTimePicker2.Date)+'#');
但是提示‘#’附近出错,
不知道错在那了?
麻烦在看下。谢谢!
开始编译时没错,开始执行按钮事件就会出错
但是,就是运行后,如果选择的时间段之间没有数据,就会运行出错,错误是:'''is not a valid floating point value
麻烦你在帮我看下
谢谢!
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''''购买'''' and 日期 between :start and :end ');
query1.Open;
query1.ParamByName('start').AsDate:=DateTimePicker1.Date;
query1.ParamByName('end').AsDate:=DateTimePicker2.Date;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;
错误是:'''is not a valid floating point value
我觉得是判断是否存在出错了 ;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
我的想法是:数据库中在那个时间段没有记录,就让他等于零。
query1.ParamByName('end').AsString:=datetostr(DateTimePicker2.DateTime);
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''''购买'''' and 日期 between :start and :end ');
query1.Open;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;没有要那两句了;
还是有错
麻烦在帮我看下
谢谢!
query1.SQL.Clear;
query1.SQL.Add('select isnull(sum([金额]),0) as [原材料进货成本] from [原材料] where [活动]=''购买''and [日期] between :startDate and :endDate ');
//怀疑用中文作为表名和字段名出问题,所以加[]限制,怀疑end是关键字,所以改为enddatequery1.ParamByName('startdate').AsDate:=DateTimePicker1.Date;
query1.ParamByName('enddate').AsDate:=DateTimePicker2.Date;
//检查这两个参数有没有建立query1.Open;
//在参数赋值之后,才open//if query1.Fields[0].Value = varNull then
//edit3.Text:='0'
//else
//在语句中用isnull处理过空值了,所以不用在这判断edit3.Text:=query1.Fields[0].AsString;祝楼主好运!
谢谢!
但是他说不知道startdate和enddate的类型
应该怎么定义startdate和enddate呢?
麻烦大侠在指点下
谢谢!!!!!!!!
with query1.Parameters.AddParameter do
begin
name:='startdate';
datatype:=ftDatetime;
end;
with query1.Parameters.AddParameter do
begin
name:='enddate';
datatype:=ftDatetime;
end;
query1没有Parameters这个属性
为什么呢?
难道我其他地方还出错了吗?
就是你说的那个意思:要是时间日期没有记录就赋值为0
日期是datetime类型
如果用上面那高手的办法做,出现的错误是:不知道startdate和enddate的类型
而我的办法:
if query1.Active then
query1.Close;
query1.SQL.Clear;
t1:=query1.SQL.Add('select sum(金额)as 原材料进货成本 from 原材料 where 活动=''购买''and 日期 between '''+datetostr(DateTimePicker1.Date)+''' and '''+datetostr(DateTimePicker2.Date)+''' ');
query1.Open;
if query1.Fields[0].Value = varNull then
edit3.Text:='0'
else
edit3.Text:=query1.Fields[0].AsString;
这样出现的错误是:当时间段内没有记录时,运行就会出错,相反有的时候还不会出错,不知道是什么原因?
错误是:'''is not a valid floating point value
日期 between TO_DATE('+QuotedStr(FORMATDATETIME('yyyy-MM-dd hh:mm:ss', DateTimePicker1.Date))+',''YYYY-MM-DD HH24:MI:SS'') ' and 'TO_DATE('+ QuotedStr(FORMATDATETIME('yyyy-MM-dd hh:mm:ss', DateTimePicker2.Date))+',''YYYY-MM-DD HH24:MI:SS'')'
你用的是ORACLE,
我用的是SQL SERVER,
那我应该怎么做呢?
麻烦在指点下
谢谢!
也能看到整条SQL很容易就看出错在哪里。
==================================
没可能,在属性窗中都可以找到,怎么会没有?