标题:关于(vfp)编程问题,再次请教tiger先生和和高手们
取消只看楼主
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
结帖率:30%
已结贴  问题点数:20 回复次数:4 
关于(vfp)编程问题,再次请教tiger先生和和高手们
本人此前在本论坛请教,得到tiger先生和高手们的指导,现再次请教,为方便老师们指教,现把产生表格的程序列出:
close all
  clear
  set safe off
  use d1999 in 1
  zap
  use d2000 in 2
  zap
  use d2001 in 3
  zap
   
  close all
  CREATE table d1999(hm c(4),ms01 n(4),ms02 n(4),ms03 n(4),ms04 n(4),ms05 n(4),ms06 n(4),ms07 n(4),ms08 n(4),ms09 n(4),ms10 n(4),ms11 n(4),ms12 n(4))
  INSERT INTO d1999 VALUES ("雪碧",300,500,700,200,600,800,900,300,950,900,980,500)
  INSERT INTO d1999 VALUES ("可乐",100,300,600,400,700,900,1200,1300,1450,1100,880,600)

  
  brow
 
  CREATE table d2000 (hm c(4),ms01 n(4),ms02 n(4),ms03 n(4),ms04 n(4),ms05 n(4),ms06 n(4),ms07 n(4),ms08 n(4),ms09 n(4),ms10 n(4),ms11 n(4),ms12 n(4))
  Insert Into d2000  Values ("雪碧",100,200,300,400,500,600,800,900,1000,900,950,600)
  Insert Into d2000  Values ("可乐",200,250,380,390,450,900,1050,1100,1550,800,680,500)
  brow
  CREATE table d2001 (hm c(4),ms01 n(4),ms02 n(4),ms03 n(4),ms04 n(4),ms05 n(4),ms06 n(4),ms07 n(4),ms08 n(4),ms09 n(4),ms10 n(4),ms11 n(4),ms12 n(4))
  Insert Into d2001 Values ("雪碧",200,400,600,800,700,600,700,500,1050,600,850,700)
  Insert Into d2001  Values ("可乐",360,280,580,690,650,670,850,800,1450,900,580,450)
  brow
 CREATE table tjb (hm c(4),ldDate1 d(8), ldDate2 d(8))
 INSERT INTO tjb VALUES ( "雪碧", {^1999-3-1}, {^2001-10-31})
 INSERT INTO tjb VALUES ( "可乐", {^1999-5-1},{^2001-5-31})
 brow
 
  close all
  clear
  set safe on
俺的问题是,如何用以下的程序,对tjb表所要求的两个品种和期限进行统计?并同时得出这两个品种的结果表。
ldDate1=date(1999,9,1)
ldDate2=date(2002,12,30)
lcHm='雪碧'
lcSQL='create table tmp1 (ss n(4),hm c(10)'
for i=year(ldDate1) to Year(ldDate2)
  for j=iif(i=year(ldDate1),month(ldDate1),1) to iif(i=year(ldDate2),month(ldDate2),12)
    lcSQL=lcSQL+',ms'+str(i,4)+padl(j,2,'0')+' n(6)'
  endfor
endfor
lcSQL=lcSQL+',mstotal n(6))'   &&lcSQL=lcSQL+'mstotal n(6))'
&lcSQL


select tmp1
locate all for alltrim(hm)==lcHm
if eof()
  append blank
  replace hm with lcHm
endif

nTot=0
for i=year(ldDate1) to year(ldDate2)
  cTable='d'+str(i,4)
  use (cTable) in 2 alias tmp2
  select tmp2
  locate for alltrim(hm)==lcHm
  if eof()
    loop
  endif
  for j=iif(i=year(ldDate1),month(ldDate1),1) to iif(i=year(ldDate2),month(ldDate2),12)
    select tmp2
    lnFieldValue=evaluate(field(j+2))
    select tmp1
    lcFieldName='ms'+str(i,4)+padl(j,2,'0')
    replace (lcFieldName) with lnFieldValue
    nTot=nTot+lnFieldValue
  endfor
endfor
select tmp1
replace mstotal with nTot
brow
搜索更多相关主题的帖子: tiger vfp 
2010-10-21 21:47
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
得分:0 
谢谢各位老师的指导。
上次得到了tiger老师的指导,得到了一楼对ldDate1=date(1999,9,1)
                                       ldDate2=date(2002,12,30)
                                        lcHm='雪碧'这个特定条件下的统计程序,用得挺好的。
     在平常的应用中,对每个品种的统计,用的是日表汇总成月表,由月表汇成年表,这样的表格由基层人员填写,用EXECL格式,所以就用了很简单的模式,,在由文员导入VFP系统,形成数据库。
     今天琢磨着,看能否善用上次在论坛请教tiger老师的查询程序,根据tjb表一次对多个品种进行统计,形成一个统计查询的表格,俺自己又搞不掂,所以就请教老师们了。希望能赐教,谢谢。
     
2010-10-21 23:28
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
得分:0 
谢谢老师们关注。前一段的建表程序,只是为了老师们指导时,方便衔接下面程序实验使用的,现实中,是有现成的年表的。谢谢。
2010-10-22 08:55
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
得分:0 
日常工作中,是使用EXCEL表作记录和登记的,由日表累计成月表,由月表累计成年表,由年表导入VFP数据库,由于有大量的货品,所以用数据库管理,本次发帖请教,主要是从大量货品中按要求查询,请大家赐教,谢谢。
2010-10-22 16:41
thomasou
Rank: 1
等 级:新手上路
帖 子:67
专家分:3
注 册:2010-8-15
得分:0 
请问10楼老师,如何建立一个带有销售货物日期的日、月、年俱全的货物数据表?
2010-10-22 22:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-323592-1-1.html




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

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