| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1773 人关注过本帖
标题:求教一个VFP的编程问题
只看楼主 加入收藏
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
结帖率:30%
收藏
已结贴  问题点数:30 回复次数:20 
求教一个VFP的编程问题
版主:您好,俺又有一个VFP的编程问题求教,请赐教,谢谢。
   b01 是一张饭店入住登记的表格,有客人名字、性别、国籍、身份证号码、入住日期、离店日期等资料,那么,通过编程形成了b201008表,统计出8月份每天的在住和已订房间的住客数量(表中的“1”表示占用房间)。俺编写了以下的程序,可以在VFP6.0环境运行,b02是过渡表,为了方便了解,把b01表编程自动形成的,其实现实中b01表的全部资料都是动态的,是通过人工输入的。俺编的这个程序只能解决单月发生的问题,也就是说入住和离店都是在同一个月发生的。
    现在俺求教的问题是:入住日期和离店日期是跨月份怎样处理,譬如,某客人2010-08-17入住,2010-10-06离店,那么08-17至08-31的放进b201008表,09-01至09-31的放进b201009表,10-01至10-05的放进b201010表,类推。还有最后怎样对每个表ms1至ms31的每个字段进行批量求和?谢谢。
          close all
         clear
         set safe off
         Create Table b01 (ss n(4),xm c(10),sex c (4),nation c (10),address c (15),idno c(15),rz d(8),ld d(8))
         Create Table b02 (ss n(4),xm c(10),rz d(8),ld d(8))  
            FOR i=1 TO 31
            cComstr="ALTER TABLE b02 ADD COLUMN ms"+CHRTRAN(STR(i,2),' ','0')+" n(1)"
             &cComstr   
           ENDFOR
            Create Table b201008 (ss n(4),xm c(10),roomno c (4),rz d(8),ld d(8))
            FOR i=1 TO 31
            cComstr="ALTER TABLE b201008 ADD COLUMN ms"+CHRTRAN(STR(i,2),' ','0')+" n(1)"
           &cComstr   
           ENDFOR
              close all
              clear
              use b03
              dele all
              pack
              use b02
              dele all
              pack
              use b01
              dele all
              pack
              close all
          use b01
           Insert Into b01 (xm,rz,ld) Values ("李明",{^2010/8/1},{^2010/8/8})
           Insert Into b01 (xm,rz,ld) Values ("张三",{^2010/8/8},{^2010/8/15})
           Insert Into b01 (xm,rz,ld) Values ("thomas",{^2010/8/16},{^2010/8/22})
           Insert Into b01 (xm,rz,ld) Values ("mimi",{^2010/8/19},{^2010/8/30})

          repl ss with recno() all
          brow
            close all
            clear
           
       use b01
         FOR K=1TO 30
              use b02
              dele all
              pack
              append from  b01 for  ss=K
              use b02   
           FOR i=day(rz)to (day(ld)-1)
                 repl ms01 with 1 for i=1
                   repl ms02 with 1 for i=2
                    repl ms03 with 1 for i=3
                      repl ms04 with 1 for i=4
                        repl ms05 with 1 for i=5
                          repl ms06 with 1 for i=6
                            repl ms07 with 1 for i=7
                              repl ms08 with 1 for i=8
                                repl ms09 with 1 for i=9
                                   repl ms10 with 1 for i=10
                                     repl ms11 with 1 for i=11
                                        repl ms12 with 1 for i=12
                                          repl ms13 with 1 for i=13
                                             repl ms14 with 1 for i=14
                                               repl ms15 with 1 for i=15
                                             repl ms16 with 1 for i=16
                                            repl ms17 with 1 for i=17
                                           repl ms18 with 1 for i=18
                                         repl ms19 with 1 for i=19
                                       repl ms20 with 1 for i=20
                                     repl ms21 with 1 for i=21
                                   repl ms22 with 1 for i=22
                                 repl ms23 with 1 for i=23
                               repl ms24 with 1 for i=24
                             repl ms25 with 1 for i=25
                           repl ms26 with 1 for i=26
                         repl ms27 with 1 for i=27
                        repl ms28 with 1 for i=28
                       repl ms29 with 1 for i=29
                      repl ms30 with 1 for i=30
                     repl ms31 with 1 for i=31
            endfor
                 use b201008
                 append from b02
          endfor
            use b201008
            append blank
            repl xm with "合计"  && 对本月每一天进行合计,就知道每一天的住房数量了。
            brow
   
搜索更多相关主题的帖子: VFP 
2010-08-17 22:08
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:7 
你这个问题,跟前几次发的帖子中的表的问题,属于同一个问题。建议别弄那么多的表,一个表就能搞定,只需加两个日期字段即可。你思考一下。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2010-08-17 22:20
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:7 
一表搞定,省时省力
2010-08-17 22:28
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
收藏
得分:0 
版主:您好,前一个问题的您的三个程序,以俺的水平是怎么想都想不出来的,今天俺认真学习,觉得很周密,结构好,俺受益匪浅,谢谢您。
      俺今天提的这个问题是俺在十年前在饭店前厅部门上班时遇到过的,当时是用人工根据入住和离店日期画正字统计的,费时费力,俺现在虽不从事那个工作了,因近年的工作喜欢上了VFP,一直想尝试着思考解决这个问题。在别的地方提出又非全解。今天研读您的三个程序,想利用其原理,想着逆向处理,但想不出好办法,于是向您提出。俺也想过用一个表全部存放处理,但如果入住(起订)日期与离店日期跨度太长,譬如5个月,那么这个表就太长了,阅读很不方便,而且这个表又应是动态的,覆盖整月每天的,因为每个客人入住和离店的日期都可能是不太相同的。因此,只能考虑以一个月一个表的方式处理了,而且这月表是根据入住和离店日期编程生成的,如果入住和离店日期不涵盖的就不用生成了,一个月一个表的设计模式也迎合作为饭店前厅人员查询的习惯,如果跨月查询,拼表就行了。
      请版主赐教,谢谢。
  
2010-08-17 23:21
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
收藏
得分:7 
只要一个住店登记表就可以了。不用那么费事。
2010-08-18 05:31
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
收藏
得分:0 
版主Tiger5392先生:您好,俺恭请您继续指导俺这个问题,谢谢。
2010-08-20 00:50
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
以下是引用thomasou在2010-8-20 00:50:20的发言:

版主Tiger5392先生:您好,俺恭请您继续指导俺这个问题,谢谢。
2楼说了,你不当一回事

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2010-08-20 01:15
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:7 
请你熟悉一下本论坛的,关于数据库集的内容。期望对你有帮助吧!
1.数据库集:可以使你每个月建立一张相同结构的表,自动或手工复制都可以。
2.库集中,可以实现任意表的合并,任意表之间的数据抽取,查询明细内容和汇总。
3.数据库集,可以使得数据存放量变得非常巨大,同时,查询速度始终快速。
4.在服务器上的库集,可以使得各个终端机共享。处理得当,
  可以使得各机,同时操作相同的库集,但是却是不同的表,各机互不干扰。
5.数据库集,非常有效的保护数据不丢失。因为他可以同时多份存放。
  谢谢!
2010-08-20 13:56
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
收藏
得分:0 
谢谢8楼的指引和提点.
2010-08-20 22:55
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
收藏
得分:0 
版主Tiger5392先生:今天边研读您的大作边琢磨了俺的这个问题,在自动产生月分立表方面,有些许眉目,俺继续思考,谢谢。还请您继续指导。
2010-08-20 23:00
快速回复:求教一个VFP的编程问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031188 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved