提取年的问题 ( 积分: 0 )

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

pipiws

Unregistered / Unconfirmed
GUEST, unregistred user!
var
start,stop:string;
sum2:single;
lp:tsystemtime;
begin
L1.Visible:=false;
Box1.Visible:=false;
shengcheng.Visible:=false;
L2.Visible:=true;
money.Visible:=true;
L3.Visible:=true;
time.Visible:=true;

getsystemtime(lp);
if Box1.Text='1月' then
begin
start:=datetostr(encodedate(lp.wYear,01,00));//
start:=datetostr(encodedate(lp.wYear,01,31));
with ADOquery1 do
begin
close;
sql.Clear;
SQL.Add('select sum(停车计费) as sum1 from 计费表 where 出库时间 between :s1 and :s2');
Parameters.ParamByName('s1').Value:=start;
Parameters.ParamByName('s2').Value:=stop;

open;
sum2:=strtofloat(fieldbyname('sum1').AsString);
end;
money.Text:=floattostr(sum2);
end;

end;
 
来看看呀
 
写了这么长的程序,而且不加分数,恐怕很少有人给你阅读代码的啊!呵呵:)
 
帮帮忙吗,我没有几分了
 
怎么对start赋值两次啊。楼主的编程风格太差了
 
到底想问啥,还是在考验我们的耐性?
 
他总共积分才15分
 
最垃圾的编程就是这样的拼拼凑凑了
很明显这里有些东西是死的
这里应该写3个接口函数 已知年月 获取月初月末日期
已知月初末日期 获得查询子句
接下来就是strsql:='select sum .........'
+getclause(getdatemonthbegin(lp.wYear,Box1.itemindex+1) )
+getclause(getdatemonthend(lp.wYear,Box1.itemindex+1) );
.......
 
这里的问题就是如何控制每月的最后一天的问题
换个角度思考 数据库中加减一天 加减一月都很容易
每个月的第一天不难得到
那每个月的最后一天不就是下个月的第一天减去一天吗
如下:
create function dbo.thismonth_firstday
(@date datetime)
returns datetime
as
begin
declare @year varchar(4),@month varchar(2),@yearmonthday varchar(10)
set @year = cast(year(@date) as varchar)
set @month = cast(month(@date) as varchar)
set @yearmonthday = @year '-'+@month+'-01'
return cast(@yearmonthday as datetime)
end


create function dbo.thismonth_lastday
(@date datetime)
returns datetime
as
begin
--这个月的最后一天
declare @year varchar(4),@month varchar(2),@yearmonthday varchar(10)
set @year = cast(year(@date) as varchar)
set @month = cast(month(@date) as varchar)
set @yearmonthday = @year '-'+@month+'-01'
return dateadd ( month , 1, cast(@yearmonthday + ' 23:59:59' as datetime))-1
end
 
竟然没分数 火大了 5分都赚不到
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
948
SUNSTONE的Delphi笔记
S
后退
顶部