Access数据表结构
ID(递增) 时间(Date/Time) 数量(数字,标准)
1 2005-10-01 1:00:00 2
2 2005-10-02 1:00:00 -2
3 2005-10-03 1:00:00 2我在Access用SQL命令
select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between #2005-10-1# and #2005-10-3#
这样输出数量1
3我在Delphi中
adoquery2.close;
adoquery2.sql.clear;
Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between :beginDate and :endDate';
Adoquery2.Parameters.ParamByName('begindate').value :='#'+FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date)+'#';
Adoquery2.Parameters.ParamByName('endDate').value :='#'+FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date)+'#';
adoquery2.open;
if adoquery2.fieldbyname('数量1').Value<>Null then
begin
str:=ADOquery2.fieldbyname('数量1').value;
end
else
begin
str:='0';
end;
出来的数据是0,多次运行后还是0
ID(递增) 时间(Date/Time) 数量(数字,标准)
1 2005-10-01 1:00:00 2
2 2005-10-02 1:00:00 -2
3 2005-10-03 1:00:00 2我在Access用SQL命令
select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between #2005-10-1# and #2005-10-3#
这样输出数量1
3我在Delphi中
adoquery2.close;
adoquery2.sql.clear;
Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between :beginDate and :endDate';
Adoquery2.Parameters.ParamByName('begindate').value :='#'+FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date)+'#';
Adoquery2.Parameters.ParamByName('endDate').value :='#'+FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date)+'#';
adoquery2.open;
if adoquery2.fieldbyname('数量1').Value<>Null then
begin
str:=ADOquery2.fieldbyname('数量1').value;
end
else
begin
str:='0';
end;
出来的数据是0,多次运行后还是0
ID(递增) 时间(Date/Time) 数量(数字,标准)
1 2005-10-01 1:00:00 1
2 2005-10-02 1:00:00 1
3 2005-10-03 1:00:00 1
Adoquery2.Parameters.ParamByName('begindate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date);
Adoquery2.Parameters.ParamByName('endDate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date);
Adoquery2.Parameters.ParamByName('begindate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date);
Adoquery2.Parameters.ParamByName('endDate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date);这样行的话我就不来问了,
如:你想查2005-09-01到2005-09-30的记录,你的SQL必需这样:
select sum(sl) from table where date between #2005-09-01# and #2005-10-01#
我都会的,这是sql语句,我想要delphi语句。
然后我是用int(时间)的
所以不存在:enddate要是datetimepicker2.date+1才行,否则你只查到1号和2 号,没有3 号的记录
请高手解答
Adoquery2.Parameters.ParamByName('begindate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date);
Adoquery2.Parameters.ParamByName('endDate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date);
把int(时间)改为时间,olddb应该处理的
with AdoQuery2.Parameters do
begin
ParamValues['beginDate']:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.DateTime);
ParamValues['endDate']:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.DateTime);
end; // with
ADOQuery2.Open;
做过试验,可行