CRL.PRG
上传用户:zhanyi0618
上传日期:2013-01-31
资源大小:1118k
文件大小:5k
源码类别:

企业管理

开发平台:

VFP

  1. ***************************
  2. * .CRL.PRG
  3. ***************************
  4. if READZD<4
  5.   ?? chr(7)
  6.   return 
  7. endif 
  8. save screen to PM
  9. PD1 = '          '
  10. set color to w/g
  11. @ 6 , 30 , 8 , 53 box '           '
  12. set color to gr+/bg
  13. PD = 'N'
  14. @ 7 , 31 say '真的增加一列吗(Y/N)?' get PD
  15. read 
  16. restore screen from PM
  17. if PD='Y' or PD='y'
  18.   PD2 = 6
  19.   PD3 = 0
  20.   set color to gr+/g
  21.   @ 8 , 29 clear to 14 , 57
  22.   @ 8 , 39 say '增加一列'
  23.   set color to w+/bg , n/w
  24.   @ 9 , 30 clear to 13 , 56
  25.   @ 10 , 31 say '请输入列名称:' get PD1
  26.   @ 11 , 31 say '请输入列宽度:' get PD2 picture '99' valid PD2>0
  27.   @ 12 , 31 say '输入小数位数:' get PD3 picture '9' valid PD3<PD2-1
  28.   read 
  29.   if len(trim(PD1))=0
  30.     restore screen from PM
  31.     return 
  32.   endif 
  33.   PD1 = trim(ltrim(PD1))
  34.   Y1 = ",./:;'"+'"*?|][}{`~&^$#@!%()<>-_'
  35.   PD = len(Y1)
  36.   Y2 = 1
  37.   do while Y2<=PD
  38.     Y3 = substr(Y1,Y2,1)
  39.     Y4 = at(Y3,PD1)
  40.     if Y4<>0
  41.       set color to gr+/n
  42.       @ 15 , 30 say '列名称中含有非法字符!'+Y3
  43.       I = inkey(5)
  44.       set color to w+/b
  45.       restore screen from PM
  46.       return 
  47.     endif 
  48.     Y2 = Y2+1
  49.   enddo 
  50.   Y2 = substr(PD1,1,1)
  51.   if Y2='1' or Y2='0' or Y2='2' or Y2='3' or Y2='4' or Y2='5' or Y2='6' or;
  52.  Y2='7' or Y2='8' or Y2='9'
  53.     set color to gr+/n
  54.     @ 15 , 30 say '列名称不能以数字开头!'
  55.     I = inkey(5)
  56.     set color to w+/b
  57.     restore screen from PM
  58.     return 
  59.   endif 
  60.   FILE1 = GZBWJ+'.dbf'
  61.   use 
  62.   if file('gzb-k.dbf')
  63.     erase gzb-k.dbf
  64.   endif 
  65.   copy file &file1 to gzb-k.dbf 
  66.   use &gzbwj 
  67.   if file('gzbkk.dbf')
  68.     erase gzbk.dbf
  69.   endif 
  70.   copy to gzbk.dbf structure extended
  71.   use gzbk
  72.   locate all for PD1$FIELD_NAME and len(trim(PD1))=len(trim(FIELD_NAME))
  73.   if  not eof()
  74.     set color to gr+/n
  75.     @ 15 , 30 say '列名称已存在!'
  76.     I = inkey(5)
  77.     set color to w+/b
  78.     use &gzbwj
  79.     restore screen from PM
  80.     return 
  81.   endif 
  82.   go READZD
  83.   copy to gz.%%% rest
  84.   go READZD
  85.   delete rest
  86.   pack 
  87.   append blank
  88.   replace FIELD_NAME with PD1 , FIELD_DEC with PD3 , FIELD_TYPE with 'N';
  89.  , FIELD_LEN with PD2
  90.   append from gz.%%%
  91.   erase gz.%%%
  92.   set color to gr+/bg
  93.   X1 = 8
  94.   X2 = 10
  95.   Y1 = 28
  96.   Y2 = 48
  97.   do box-1
  98.   @ 9 , 30 say '正在处理数据......'
  99.   delete all for FIELD_NAME=' '
  100.   pack 
  101.   use 
  102.   FILE = GZBWJ+'.dbf'
  103.   eras &file
  104.   crea &gzbwj from gzbk
  105.   use &gzbwj
  106.   append from gzb-k.dbf
  107.   use 
  108.   use &gzbwj
  109.   select 2
  110.   use 
  111.   select 1
  112.   if file('gzjg.dbf')
  113.     erase gzjg.dbf
  114.   endif 
  115.   copy to gzjg.dbf structure extended
  116.   select 2
  117.   use gzjg
  118.   select 1
  119.   ZDS = fcount()
  120.   PD = 1
  121.   YFGZ = 0
  122.   SFGZ = 0
  123.   do while PD<=ZDS
  124.     if field(PD)='应发工资'
  125.       YFGZ = PD
  126.     endif 
  127.     if field(PD)='实发工资'
  128.       SFGZ = PD
  129.     endif 
  130.     PD = PD+1
  131.   enddo 
  132.   if YFGZ=0
  133.     @ 10 , 30 say '“应发工资”项目没找到!'
  134.     I = inkey(0)
  135.     return 
  136.   endif 
  137.   if SFGZ=0
  138.     @ 11 , 30 say '“实发工资”项目没找到!'
  139.     I = inkey(0)
  140.     return 
  141.   endif 
  142.   go top
  143.   do while  not eof()
  144.     PD = 5
  145.     JSQ = 0
  146.     do while PD<YFGZ
  147.       PD1 = field(PD)
  148.       jsq=jsq+&pd1 
  149.       PD = PD+1
  150.     enddo 
  151.     PD1 = field(YFGZ)
  152.     repl &pd1 with jsq
  153.     PD = YFGZ+1
  154.     do while PD<SFGZ
  155.       PD1 = field(PD)
  156.       jsq=jsq-&pd1
  157.       PD = PD+1
  158.     enddo 
  159.     PD1 = field(SFGZ)
  160.     repl &pd1 with jsq
  161.     skip 
  162.   enddo 
  163.   restore screen from PM
  164.   set color to n/b
  165.   @ 2 , 12 clear to 22 , 79
  166.   P = 1
  167.   set color to gr/n
  168.   @ 0 , 0 say '挚 诚 奉 献 !'
  169.   @ 0 , 67 say 'JQ财务系统'
  170.   set color to g/n
  171.   @ 0 , 30 say '工资表数据编辑'
  172.   @ 1 , 0 say '==============================================================================='
  173.   ? '   '
  174.   ? '==============================================================================='
  175.   @ 23 , 0 say '==============================================================================='
  176.   set color to b/gr
  177.   set color to w+/b
  178.   ZDS = fcount()
  179.   PD = 1
  180.   YFGZ = 0
  181.   SFGZ = 0
  182.   do while PD<=ZDS
  183.     if field(PD)='应发工资'
  184.       YFGZ = PD
  185.     endif 
  186.     if field(PD)='实发工资'
  187.       SFGZ = PD
  188.     endif 
  189.     PD = PD+1
  190.   enddo 
  191.   if YFGZ=0
  192.     @ 10 , 30 say '“应发工资”项目没找到!'
  193.     I = inkey(0)
  194.     return 
  195.   endif 
  196.   if SFGZ=0
  197.     @ 11 , 30 say '“实发工资”项目没找到!'
  198.     I = inkey(0)
  199.     return 
  200.   endif 
  201.   go bottom
  202.   PD = recno()
  203.   JLS = PD
  204.   PD = PD/19
  205.   PD1 = int(PD)
  206.   YS = PD-PD1
  207.   if YS=0
  208.     YS = PD1
  209.   else 
  210.     YS = PD1+1
  211.   endif 
  212.   go top
  213.   YC = 1
  214.   BS = 0
  215.   YS1 = 1
  216.   @ 2 , 0 say '编号'
  217.   @ 2 , 6 say '姓名'
  218.   do while .t.
  219.     LC = 0
  220.     JSQ = 3
  221.     P = 1
  222.     if YFGZ>7
  223.       PD1 = 7
  224.     else 
  225.       PD1 = YFGZ-1
  226.       P = 0
  227.     endif 
  228.     ZD1 = 3
  229.     ZD2 = PD1
  230.     do while JSQ<=PD1
  231.       RFIELD = field(JSQ)
  232.       @ 2 , 20+LC say field(JSQ)
  233.       @ 4+bs,20+lc say &Rfield  
  234.       JSQ = JSQ+1
  235.       LC = LC+12
  236.     enddo 
  237.     @ 4+BS , 0 say 编号
  238.     @ 4+BS , 6 say 姓名
  239.     if  not eof()
  240.       skip 
  241.       BS = BS+1
  242.     else 
  243.       exit 
  244.     endif 
  245.     if BS=19
  246.       exit 
  247.     endif 
  248.   enddo 
  249.   READZD = ZD1
  250.   READLC = 0
  251.   go top
  252.   set color to w+/b
  253.   BS = 0
  254.   LC = 0
  255.   JSQ = 3
  256.   if YFGZ>7
  257.     PD1 = 7
  258.   else 
  259.     PD1 = YFGZ-1
  260.   endif 
  261.   do while JSQ<=PD1
  262.     RFIELD = field(JSQ)
  263.     @ 4+bs,20+lc say &Rfield  
  264.     JSQ = JSQ+1
  265.     LC = LC+12
  266.   enddo 
  267.   @ 4+BS , 0 say 编号
  268.   @ 4+BS , 6 say 姓名
  269.   PD = 0
  270.   ZY = 0
  271.   set color to gr+/bg
  272.   RFIELD = field(READZD)
  273.   @ 4+bs,20+readlc say &Rfield
  274. else 
  275.   restore screen from PM
  276. endif 
  277. return