回 帖 发 新 帖 刷新版面

主题:用foxpro,编写订房统计程序时,如何把订房起始、结束日期化作订房统计表的记录?


 请教各位老师,俺有这样一个问题,譬如,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个回复)

沙发

提点建议:利用数组可以实现转换。

板凳


再请教老师,我的问题是,在一个表中,字段:起始日期:05/21,字段:终止日期:05/25,那么,在程序编写时,如果用数组,该如何操作而让其化为如下另一个表的显示?请赐教,谢谢。



          五月    20        21     22     23     24      25      26

    thomasou                1       1      1      1       1

3 楼

设初始数据表为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客人入住酒店登记时,住店时间从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 楼

关键的地方我已经给你点明了,局部的地方如果还有疑问的话那就得把基础打扎实一些。
或许我的话说得不中听。

6 楼

非常感谢!

7 楼

有别的方法吗?

8 楼

只为了统计某天的住店人数不用转换表的数据,直接统计“入住日期>=某日期 and 离店日期<某日期”就可以了。

9 楼


    其实,这个问题的提出,可以引申为,已知起始、结束的时间时,对于之间的过程数据 或挑自另一表中,或产生另一新表的选用或形成。
    在同论坛另一帖子中———<请教vfp编程问题>,有这个问题更清晰提出的描述,请指点。
   


10 楼

写了一段,无法完全满足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 ■■■■■□□□

我来回复

您尚未登录,请登录后再回复。点此登录或注册