首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

请问,怎么依据变动的起始月和终结月之间时段产生字符串代码

2012-02-10 
请教,如何依据变动的起始月和终结月之间时段产生字符串代码?请教,如何依据变动的起始月和终结月之间时段产

请教,如何依据变动的起始月和终结月之间时段产生字符串代码?
请教,如何依据变动的起始月和终结月之间时段产生字符串代码?

俺想模仿wwwwb老师先前的指导,搞一个依据起始月(Date1)和终结月(Date2)之间时段产生变动的字符串的代码(如下),


CREATE TABLE temp1(sdate1 d,sdate2 d,v1 c (150))
i={^2010-10-1}
zz=""
DO WHILE i<={^2011-9-30}
  j=GOMONTH(i,1)-1
  zz=zz+"+ms"+SUBSTR((DTOC(i,1)),3,4)
  
  INSERT INTO temp1 VALUES (i,j,zz,)
  i=GOMONTH(i,1)
  ENDDO 
  USE temp1
  BROWSE

俺的技术不行,没有模仿成功,达不到目的。如何修改,请老师们指导。

——————————————————————————————————————
要求如下:
依据起始月(Date1)和终结月(Date2)之间时段产生变动的字符串,想达到这样的效果。
具体是这样的,根据起始月Date1、终结月Date2 这两个日期时段(是随时变动的),产生字符串(V1),
要求:序号1----起始月份必须是由十二个月份字段组成并除以12,如此类推,序号12-----终结月份仅由一个月份字段组成并除以1。
如:当 Date1={^2010-10-1} 、Date2={^2011-9-30} 时
产生以下temp1结果,其中v1是字符型段,ms1010指2010年10月,ms1011指2010年11月,ms1109指2011年9月,等等
表temp1:
序号 sdate1 sdate2 v1
1、 2010-10-01 2010-10-31 ( ms1010+ms1011+ms1012+ms1101+ms1102+ms1103+ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/12
2、 2010-11-01 2010-11-30 ( ms1011+ms1012+ms1101+ms1102+ms1103+ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/11
3、 2010-12-01 2010-12-31 ( ms1012+ms1101+ms1102+ms1103+ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/10
4、 2011-01-01 2011-01-31 (ms1101+ms1102+ms1103+ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/9
5、 2011-02-01 2011-02-28 (ms1102+ms1103+ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/8
6、 2011-03-01 2011-03-31 (ms1103+ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/7
7、 2011-04-01 2011-04-30 (ms1104+ms1105+ms1106+ms1107+ms1108+ms1109)/6
8、 2011-05-01 2011-05-31 (ms1105+ms1106+ms1107+ms1108+ms1109)/5
9、 2011-06-01 2011-06-30 (ms1106+ms1107+ms1108+ms1109)/4
10、2011-07-01 2011-07-31 (ms1107+ms1108+ms1109)/3
11、2011-08-01 2011-08-31 (ms1108+ms1109)/2
12、2011-09-01 2011-09-30 (ms1109)/1





[解决办法]
是这个意思吗?

SQL code
Create Cursor temp1 (sdate1 d,date2 d,v1 Char(100))DateS={^1991-01-01}        && 开始日期Date1={^2010-10-01}        && 指定日期DateE={^2012-12-31}        && 结束日期For lnJ=12 To 1 Step -1    lcV1='('    ldDate=Gomonth(Date1,12-lnJ)    For lnI=1 To lnJ Step 1        lcV1=lcV1+'ms'+Substr(Dtos(Gomonth(ldDate,lnI-1)),3,4)+'+'    Endfor    lcV1=Left(lcV1,Len(lcV1)-1)+')/'+Transform(lnJ)    If lnJ=12        lnMonths=Year(Date1)*12+Month(Date1)-(Year(DateS)*12+Month(DateS))-1        For lnK=0 To lnMonths            Insert Into temp1 Values (Gomonth(DateS,lnK),Gomonth(Gomonth(DateS,lnK),1)-1,lcV1)        Endfor    Endif    Insert Into temp1 Values (ldDate,Gomonth(ldDate,1)-1,lcV1)EndforlnMonths=Year(DateE)*12+Month(DateE)-(Year(ldDate)*12+Month(ldDate))For lnL=1 To lnMonths    Insert Into temp1 Values (Gomonth(ldDate,lnL),Gomonth(Gomonth(ldDate,lnL),1)-1,'')EndforLocateBrowse 

热点排行