主题:用foxpro,编写订房统计程序时,如何把订房起始、结束日期化作订房统计表的记录?
thomasou
[专家分:0] 发布于 2010-07-24 20:26:00
请教各位老师,俺有这样一个问题,譬如,thomasou 从5月21---25日订房,handsome从5月22---24日订房,使用visual foxpro,如何通过编写程序把上述数据化为下面的表格显示呢?谢谢!
5月 21 22 23 24 25
Thomasou 1 1 1 1 1
handsome 1 1 1
回复列表 (共12个回复)
沙发
妙计山人 [专家分:130] 发布于 2010-07-24 23:21:00
提点建议:利用数组可以实现转换。
板凳
thomasou [专家分:0] 发布于 2010-07-25 12:15:00
再请教老师,我的问题是,在一个表中,字段:起始日期:05/21,字段:终止日期:05/25,那么,在程序编写时,如果用数组,该如何操作而让其化为如下另一个表的显示?请赐教,谢谢。
五月 20 21 22 23 24 25 26
thomasou 1 1 1 1 1
3 楼
妙计山人 [专家分:130] 发布于 2010-07-25 17:47:00
设初始数据表为ABC,其中:
字段A 字段B 字段C
21 1
22 1
23 1 1
24 1 1
25 1
Sele * From Abc Into Array Arrdat
则
Arrdat(1,1)="21",Arrdat(1,2)="1",Arrdat(1,3)=""
Arrdat(3,1)="23",Arrdat(3,2)="1",Arrdat(3,3)="1"
4 楼
thomasou [专家分:0] 发布于 2010-07-25 19:38:00
妙计山人老师:谢谢您的指点。我想把俺的情况说清楚些吧,在工作中,譬如我thomasou客人入住酒店登记时,住店时间从5月21日至5月25日,而另外一位客人handsome住店时间是从5月23日至26日,那么,每天都要统计每一天住店客人的数量,就要根据客人的住店起始时间生成以下的表格来统计每一天的客人住店数量。请问,在知道住店的起始时间,以vfp编程,怎样生成以下表?
5月 1 2 3。。。。。。20 21 22 23 24 25 26 27。。。。。31
thomasou 1 1 1 1 1
handsome 1 1 1 1
。。。
总计 1 1 2 2 2 1
5 楼
妙计山人 [专家分:130] 发布于 2010-07-25 20:15:00
关键的地方我已经给你点明了,局部的地方如果还有疑问的话那就得把基础打扎实一些。
或许我的话说得不中听。
6 楼
thomasou [专家分:0] 发布于 2010-07-25 21:32:00
非常感谢!
7 楼
thomasou [专家分:0] 发布于 2010-07-27 00:01:00
有别的方法吗?
8 楼
sywzs [专家分:5650] 发布于 2010-07-28 05:35:00
只为了统计某天的住店人数不用转换表的数据,直接统计“入住日期>=某日期 and 离店日期<某日期”就可以了。
9 楼
thomasou [专家分:0] 发布于 2010-07-28 14:09:00
其实,这个问题的提出,可以引申为,已知起始、结束的时间时,对于之间的过程数据 或挑自另一表中,或产生另一新表的选用或形成。
在同论坛另一帖子中———<请教vfp编程问题>,有这个问题更清晰提出的描述,请指点。
10 楼
Vii [专家分:1130] 发布于 2010-07-28 14:29:00
写了一段,无法完全满足lz需求:
CLEAR
SET MARK TO '-'
CREATE CURSOR CurTable(cName C(10),Ksrq D,Jsrq D)
INSERT INTO CurTable(cName,Ksrq,Jsrq) VALUES ('Tthomasou',{^2010-07-15},{^2010-07-20})
INSERT INTO CurTable(cName,Ksrq,Jsrq) VALUES ('Handsome',{^2010-07-18},{^2010-07-25})
INSERT INTO CurTable(cName,Ksrq,Jsrq) VALUES ('Tom',{^2010-07-11},{^2010-07-30})
INSERT INTO CurTable(cName,Ksrq,Jsrq) VALUES ('Kate',{^2010-06-11},{^2010-06-30})
SELECT MIN(Ksrq) as ksrq,MAX(Jsrq) as jsrq FROM CurTable INTO CURSOR T
Minrq=ksrq
Maxrq=jsrq
SELECT cName,MIN(Ksrq) as Ksrq,MAX(Jsrq) as Jsrq FROM CurTable INTO CURSOR tmp GROUP BY cName
SELECT cName as 名字,DTOC(ksrq)+'到'+DTOC(jsrq) as '住宿时间',REPLICATE('□',Ksrq-Minrq)+REPLICATE('■',Jsrq-Ksrq)+REPLICATE('□',Maxrq-Jsrq) as 时间段 FROM tmp
结果:
Handsome 2010-07-18到2010-07-23 □□□■■■■■
Kate 2010-07-16到2010-07-21 □■■■■■□□
Tom 2010-07-18到2010-07-22 □□□■■■■□
Tthomasou 2010-07-15到2010-07-20 ■■■■■□□□
我来回复