www.pudn.com > jq_gongzi.ARJ > GZBXG.PRG


*************************** 
* .\GZBXG.PRG 
*************************** 
X = GZBWJ+'.dbf' 
Y = GZBWJ+'.%%%' 
! copy \gzb\&x \gzb\&y >nul 
use &gzbwj 
set color to 
clear  
P = 1 
set color to gr/n 
@ 0 , 0 say '挚 诚 奉 献 !' 
@ 0 , 67 say 'JQ系列软件' 
set color to g/n 
@ 0 , 30 say '工资表数据修改' 
@ 1 , 0 say '===============================================================================' 
? '   ' 
? '===============================================================================' 
@ 23 , 0 say '===============================================================================' 
set color to b/gr 
@ 24 , 0 say 'F1帮助:F2删除列:F3增加列:F4帐号F5姓名:F6增加:F8删除:F9列拷贝:F10排序:^End列清零; 
 ' 
set color to 
ZDS = fcount() 
PD = 1 
YFGZ = 0 
SFGZ = 0 
do while PD<=ZDS 
  if field(PD)='应发工资' 
    YFGZ = PD 
  endif  
  if field(PD)='实发工资' 
    SFGZ = PD 
  endif  
  PD = PD+1 
enddo  
if YFGZ=0 
  @ 10 , 30 say '“应发工资”项目没找到!' 
  I = inkey(0) 
  return  
endif  
if SFGZ=0 
  @ 11 , 30 say '“实发工资”项目没找到!' 
  I = inkey(0) 
  return  
endif  
go bottom 
PD = recno() 
JLS = PD 
PD = PD/19 
PD1 = int(PD) 
YS = PD-PD1 
if YS=0 
  YS = PD1 
else  
  YS = PD1+1 
endif  
go top 
YC = 1 
BS = 0 
YS1 = 1 
@ 2 , 0 say '编号' 
@ 2 , 6 say '姓名' 
do while .t. 
  LC = 0 
  JSQ = 4 
  P = 1 
  if YFGZ>7 
    PD1 = 7 
  else  
    PD1 = YFGZ-1 
    P = 0 
  endif  
  ZD1 = 4 
  ZD2 = PD1 
  do while JSQ<=PD1 
    FIELD = field(JSQ) 
    @ 2 , 20+LC say field(JSQ) 
    @ 4+bs,20+lc say &field   
    JSQ = JSQ+1 
    LC = LC+12 
  enddo  
  @ 4+BS , 0 say 编号 
  @ 4+BS , 6 say 姓名 
  if  not eof() 
    skip  
    BS = BS+1 
  else  
    exit  
  endif  
  if BS=19 
    exit  
  endif  
enddo  
READZD = ZD1 
READLC = 0 
go top 
set color to n/w 
BS = 0 
LC = 0 
JSQ = 4 
if YFGZ>7 
  PD1 = 7 
else  
  PD1 = YFGZ-1 
endif  
do while JSQ<=PD1 
  FIELD = field(JSQ) 
  @ 4+bs,20+lc say &field   
  JSQ = JSQ+1 
  LC = LC+12 
enddo  
@ 4+BS , 0 say 编号 
@ 4+BS , 6 say 姓名 
PD = 0 
ZY = 0 
set color to gr+/bg 
DATA = field(READZD) 
@ 4+bs,20+readlc say &data 
do while .t. 
  X = inkey(0) 
  do case 
  case X=23 
    set color to 
    if  not eof() 
      REN = recno() 
      DATA = field(READZD) 
      repl all &data with 0 
      ZDS = fcount() 
      PD = 1 
      YFGZ = 0 
      SFGZ = 0 
      do while PD<=ZDS 
        if field(PD)='应发工资' 
          YFGZ = PD 
        endif  
        if field(PD)='实发工资' 
          SFGZ = PD 
        endif  
        PD = PD+1 
      enddo  
      if YFGZ=0 
        @ 10 , 30 say '“应发工资”项目没找到!' 
        I = inkey(0) 
        return  
      endif  
      if SFGZ=0 
        @ 11 , 30 say '“实发工资”项目没找到!' 
        I = inkey(0) 
        return  
      endif  
      go top 
      do while  not eof() 
        PD = 5 
        JSQ = 0 
        do while PD7 
        PD1 = 7 
      else  
        PD1 = YFGZ-1 
        P = 0 
      endif  
      ZD1 = 4 
      ZD2 = PD1 
      do while JSQ<=PD1 
        FIELD = field(JSQ) 
        @ 2 , 20+LC say field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      if  not eof() 
        skip  
        BS = BS+1 
      else  
        exit  
      endif  
      if BS=19 
        exit  
      endif  
    enddo  
    READZD = ZD1 
    READLC = 0 
    go top 
    set color to n/w 
    BS = 0 
    LC = 0 
    JSQ = 4 
    if YFGZ>7 
      PD1 = 7 
    else  
      PD1 = YFGZ-1 
    endif  
    do while JSQ<=PD1 
      FIELD = field(JSQ) 
      @ 4+bs,20+lc say &field   
      JSQ = JSQ+1 
      LC = LC+12 
    enddo  
    @ 4+BS , 0 say 编号 
    @ 4+BS , 6 say 姓名 
    PD = 0 
    ZY = 0 
    set color to gr+/bg 
    DATA = field(READZD) 
    @ 4+bs,20+readlc say &data 
  case X=4 
    if READZDZD1 
      set color to n/w 
      DATA = field(READZD) 
      @ 4+bs,20+readlc say &data 
      set color to gr+/bg 
      READZD = READZD-1 
      READLC = READLC-12 
      DATA = field(READZD) 
      @ 4+bs,20+readlc say &data 
    else  
      ?? chr(7) 
    endif  
  case X=46 or X=45 or X=43 or X>47 and X<58 
    if  not eof() and field(READZD)<>'帐号' 
      if X<>45 and X<>43 
        keyboard chr(X) 
        @ 0 , 17 say '=' 
      else  
        if X=45 
          @ 0 , 17 say '-' 
        else  
          @ 0 , 17 say '+' 
        endif  
      endif  
      DATA = field(READZD) 
      olddata=&data 
      repl &data with 0 
      @ 4+bs,20+readlc get &data 
      read  
      @ 0 , 17 say '  ' 
      if readkey()=268 or readkey()=12 
        repl &data with olddata 
      else  
        if X=45 
          repl &data with olddata-&data 
        else  
          if X=43 
            repl &data with olddata+&data 
          endif  
        endif  
      endif  
      set color to 
      @ 4+BS , 20+READLC say '           ' 
      PD = 5 
      JSQ = 0 
      do while PD6 
        PD1 = 6 
      else  
        PD1 = YFGZ-1 
      endif  
      JSQ = ZD1 
      PD2 = ZD2 
      do while JSQ<=PD2 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to n/w 
      if  not BS=18 and  not eof() 
      endif  
      LC = 0 
      JSQ = ZD1 
      if YFGZ>6 
        PD1 = 6 
      else  
        PD1 = YFGZ-1 
      endif  
      do while JSQ<=PD2 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to gr+/bg 
      DATA = field(READZD) 
      @ 4+bs,20+readlc say &data 
    else  
      ?? chr(7) 
    endif  
  case X=5 
    if BS=0 or recno()=1 
      ?? chr(7) 
    else  
      set color to 
      LC = 0 
      JSQ = 4 
      if YFGZ>6 
        PD1 = 6 
      else  
        PD1 = YFGZ-1 
      endif  
      JSQ = ZD1 
      PD1 = ZD2 
      do while JSQ<=PD1 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to n/w 
      skip -1 
      BS = BS-1 
      LC = 0 
      if YFGZ>6 
        PD1 = 6 
      else  
        PD1 = YFGZ-1 
      endif  
      JSQ = ZD1 
      PD1 = ZD2 
      do while JSQ<=PD1 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to gr+/bg 
      DATA = field(READZD) 
      @ 4+bs,20+readlc say &data 
    endif  
  case X=24 or X=13 
    if BS=18 or eof() 
      ?? chr(7) 
    else  
      set color to 
      LC = 0 
      if YFGZ>6 
        PD1 = 6 
      else  
        PD1 = YFGZ-1 
      endif  
      JSQ = ZD1 
      PD2 = ZD2 
      do while JSQ<=PD2 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to n/w 
      skip  
      BS = BS+1 
      LC = 0 
      JSQ = ZD1 
      if YFGZ>6 
        PD1 = 6 
      else  
        PD1 = YFGZ-1 
      endif  
      do while JSQ<=PD2 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to gr+/bg 
      DATA = field(READZD) 
      @ 4+bs,20+readlc say &data 
    endif  
  case X=3 
    if YC1 
      YC = YC-1 
      go YC*19 
      skip -18 
      X = recno() 
      set color to 
      BS = 0 
      @ 4 , 0 clear to 22 , 79 
      do while .t. 
        LC = 0 
        JSQ = ZD1 
        do while JSQ<=ZD2 
          FIELD = field(JSQ) 
          @ 2 , 20+LC say field(JSQ) 
          @ 4+bs,20+lc say &field   
          JSQ = JSQ+1 
          LC = LC+12 
        enddo  
        @ 4+BS , 0 say 编号 
        @ 4+BS , 6 say 姓名 
        if  not eof() 
          skip  
          BS = BS+1 
        else  
          exit  
        endif  
        if BS=19 
          exit  
        endif  
      enddo  
      go X 
      set color to n/w 
      BS = 0 
      LC = 0 
      JSQ = ZD1 
      do while JSQ<=ZD2 
        FIELD = field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      set color to gr+/bg 
      DATA = field(READZD) 
      @ 4+bs,20+readlc say &data 
    else  
      ?? chr(7) 
    endif  
  case X=9 
    if  not bof() and  not eof() 
      RRECN = recno() 
      RBS = BS 
      if ZD2=4 
          ZD2 = ZD1+4 
        else  
          ZD2 = SFGZ 
        endif  
        do while .t. 
          JSQ = JSQ1 
          LC = 0 
          PD2 = ZD2 
          do while JSQ<=PD2 
            FIELD = field(JSQ) 
            @ 2 , 20+LC say field(JSQ) 
            @ 4+bs,20+lc say &field   
            JSQ = JSQ+1 
            LC = LC+12 
          enddo  
          @ 4+BS , 0 say 编号 
          @ 4+BS , 6 say 姓名 
          if  not eof() 
            skip  
            BS = BS+1 
          else  
            exit  
          endif  
          if BS=19 
            exit  
          endif  
        enddo  
        go RRECN 
        READZD = ZD1 
        READLC = 0 
        set color to n/w 
        BS = RBS 
        LC = 0 
        JSQ = JSQ1 
        do while JSQ<=PD2 
          FIELD = field(JSQ) 
          @ 4+bs,20+lc say &field   
          JSQ = JSQ+1 
          LC = LC+12 
        enddo  
        @ 4+BS , 0 say 编号 
        @ 4+BS , 6 say 姓名 
        set color to gr+/bg 
        DATA = field(READZD) 
        @ 4+bs,20+readlc say &data 
      else  
        ?? chr(7) 
      endif  
    else  
      ?? chr(7) 
    endif  
  case X=15 
    if  not bof() and  not eof() 
      if ZD1>4 
        RRECN = recno() 
        RBS = BS 
        go (YC-1)*19+1 
        X = recno() 
        set color to 
        @ 2 , 20 say space(60) 
        @ 4 , 15 clear to 22 , 79 
        BS = 0 
        JSQ1 = JSQ 
        ZD2 = ZD1-1 
        ZD1 = ZD2-4 
        do while .t. 
          JSQ = ZD1 
          LC = 0 
          PD2 = ZD2 
          do while JSQ<=PD2 
            FIELD = field(JSQ) 
            @ 2 , 20+LC say field(JSQ) 
            @ 4+bs,20+lc say &field   
            JSQ = JSQ+1 
            LC = LC+12 
          enddo  
          @ 4+BS , 0 say 编号 
          @ 4+BS , 6 say 姓名 
          if  not eof() 
            skip  
            BS = BS+1 
          else  
            exit  
          endif  
          if BS=19 
            exit  
          endif  
        enddo  
        go RRECN 
        READZD = ZD1 
        READLC = 0 
        set color to n/w 
        BS = RBS 
        LC = 0 
        JSQ = ZD1 
        do while JSQ<=PD2 
          FIELD = field(JSQ) 
          @ 4+bs,20+lc say &field   
          JSQ = JSQ+1 
          LC = LC+12 
        enddo  
        @ 4+BS , 0 say 编号 
        @ 4+BS , 6 say 姓名 
        set color to gr+/bg 
        DATA = field(READZD) 
        @ 4+bs,20+readlc say &data 
      else  
        ?? chr(7) 
      endif  
    endif  
  case X=-3 
    if  not eof() 
      save screen to PM 
      set color to gr+/g 
      @ (4+BS-1) , 18 clear to (4+BS+1) , 33 
      @ (4+BS-1) , 22 say '修改帐号:' 
      set color to n/w , w+/bg 
      @ 4+BS , 20 get 帐号 
      read  
      restore screen from PM 
      if READZD=3 
        set color to n/w 
        @ 4+BS , 20 say 帐号 
      endif  
    else  
      ?? chr(7) 
    endif  
  case X=-4 
    if  not eof() 
      set color to n/w , w+/bg 
      @ 4+BS , 0 get 编号 
      @ 4+BS , 6 get 姓名 
      read  
      set color to n/w 
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
    else  
      ?? chr(7) 
    endif  
  case X=-5 
    save screen to PM 
    set color to n/bg 
    @ 5 , 18 clear to 11 , 43 
    set color to gr+/bg 
    @ 7 , 20 clear to 10 , 40 
    X1 = 7 
    X2 = 10 
    Y1 = 20 
    Y2 = 40 
    do box-1 
    X1 = 0 
    X2 = '        ' 
    @ 6 , 26 say '增 加 一 人' 
    @ 8 , 24 say '编号:' get X1 picture '999' 
    @ 9 , 24 say '姓名:' get X2 
    read  
    skip -BS 
    if  not eof() 
      X = recno() 
    else  
      X = 9999999 
    endif  
    locate all for 编号>X1 
    insert blank before 
    replace 编号 with X1 , 姓名 with X2 
    JLS = JLS+1 
    PD = JLS/19 
    PD1 = int(PD) 
    YS = PD-PD1 
    if YS=0 
      YS = PD1 
    else  
      YS = PD1+1 
    endif  
    if X<>9999999 
      go X 
    else  
      go top 
    endif  
    X = recno() 
    BS1 = BS 
    BS = 0 
    restore screen from PM 
    set color to 
    do while .t. 
      LC = 0 
      JSQ = ZD1 
      do while JSQ<=ZD2 
        FIELD = field(JSQ) 
        @ 2 , 20+LC say field(JSQ) 
        @ 4+bs,20+lc say &field   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      if  not eof() 
        skip  
        BS = BS+1 
      else  
        exit  
      endif  
      if BS=19 
        exit  
      endif  
    enddo  
    go X 
    skip BS1 
    set color to n/w 
    BS = BS1 
    LC = 0 
    JSQ = ZD1 
    do while JSQ<=ZD2 
      FIELD = field(JSQ) 
      @ 4+bs,20+lc say &field   
      JSQ = JSQ+1 
      LC = LC+12 
    enddo  
    @ 4+BS , 0 say 编号 
    @ 4+BS , 6 say 姓名 
    set color to gr+/bg 
    DATA = field(READZD) 
    @ 4+bs,20+readlc say &data 
    set color to 
  case X=-7 
    if  not eof() 
      save screen to PM 
      set color to g+/gr 
      @ 6 , 20 clear to 8 , 60 
      I = 'F' 
      ?? chr(7) 
      @ 7 , 24 say '真的删除记录吗?(Y/N)' get I 
      read  
      restore screen from PM 
      RECN = recno() 
      if I='y' or I='Y' 
        delete  
        pack  
        JLS = JLS-1 
        if RECN>=JLS and BS>=1 
          BS = BS-1 
        endif  
        set color to 
        @ 4+BS , 0 clear to 22 , 79 
        X1 = BS 
        if RECN>JLS 
          if  not bof() and  not eof() 
            go JLS 
          else  
            go top 
          endif  
        else  
          if  not bof() and  not eof() 
            go RECN 
          else  
            go top 
          endif  
        endif  
        X = 0 
        do while .t. 
          LC = 0 
          JSQ = ZD1 
          do while JSQ<=ZD2 
            FIELD = field(JSQ) 
            @ 2 , 20+LC say field(JSQ) 
            @ 4+bs,20+lc say &field   
            JSQ = JSQ+1 
            LC = LC+12 
          enddo  
          @ 4+BS , 0 say 编号 
          @ 4+BS , 6 say 姓名 
          if  not eof() 
            skip  
            X = X+1 
            BS = BS+1 
          else  
            exit  
          endif  
          if BS=19 
            exit  
          endif  
        enddo  
        skip -X 
        if int(JLS/19)-(JLS/19)=0 and YC>1 
          YC = YC-1 
          YS = YS-1 
          if RECN>JLS 
            go JLS 
          else  
            go RECN 
          endif  
          skip -18 
          X = recno() 
          set color to 
          BS = 0 
          @ 4 , 0 clear to 22 , 79 
          do while .t. 
            LC = 0 
            JSQ = ZD1 
            do while JSQ<=ZD2 
              FIELD = field(JSQ) 
              @ 2 , 20+LC say field(JSQ) 
              @ 4+bs,20+lc say &field   
              JSQ = JSQ+1 
              LC = LC+12 
            enddo  
            @ 4+BS , 0 say 编号 
            @ 4+BS , 6 say 姓名 
            if  not eof() 
              skip  
              BS = BS+1 
            else  
              exit  
            endif  
            if BS=19 
              exit  
            endif  
          enddo  
          go X 
          set color to n/w 
          BS = 0 
          LC = 0 
          JSQ = ZD1 
          do while JSQ<=ZD2 
            FIELD = field(JSQ) 
            @ 4+bs,20+lc say &field   
            JSQ = JSQ+1 
            LC = LC+12 
          enddo  
          @ 4+BS , 0 say 编号 
          @ 4+BS , 6 say 姓名 
          set color to gr+/bg 
          DATA = field(READZD) 
          @ 4+bs,20+readlc say &data 
        endif  
        set color to n/w 
        BS = X1 
        LC = 0 
        JSQ = ZD1 
        do while JSQ<=ZD2 
          FIELD = field(JSQ) 
          @ 4+bs,20+lc say &field   
          JSQ = JSQ+1 
          LC = LC+12 
        enddo  
        @ 4+BS , 0 say 编号 
        @ 4+BS , 6 say 姓名 
        set color to gr+/bg 
        DATA = field(READZD) 
        @ 4+bs,20+readlc say &data 
        PD = JLS/19 
        PD1 = int(PD) 
        YS = PD-PD1 
        if YS=0 
          YS = PD1 
        else  
          YS = PD1+1 
        endif  
      endif  
    else  
      ?? chr(7) 
    endif  
  case X=-9 
    erase gzb.%%% 
    Y2 = field(1) 
    sort on (Y2) to gzb.%%% 
    use  
    X = GZBWJ+'.dbf' 
    eras &x 
    rena gzb.%%% to &x   
    use &gzbwj 
    set color to n/w 
    ZDS = fcount() 
    PD = 1 
    YFGZ = 0 
    SFGZ = 0 
    do while PD<=ZDS 
      if field(PD)='应发工资' 
        YFGZ = PD 
      endif  
      if field(PD)='实发工资' 
        SFGZ = PD 
      endif  
      PD = PD+1 
    enddo  
    if YFGZ=0 
      @ 10 , 30 say '“应发工资”项目没找到!' 
      I = inkey(0) 
      return  
    endif  
    if SFGZ=0 
      @ 11 , 30 say '“实发工资”项目没找到!' 
      I = inkey(0) 
      return  
    endif  
    go bottom 
    PD = recno() 
    JLS = PD 
    PD = PD/19 
    PD1 = int(PD) 
    YS = PD-PD1 
    if YS=0 
      YS = PD1 
    else  
      YS = PD1+1 
    endif  
    go top 
    YC = 1 
    BS = 0 
    YS1 = 1 
    @ 2 , 0 say '编号' 
    @ 2 , 6 say '姓名' 
    do while .t. 
      LC = 0 
      JSQ = 4 
      P = 1 
      if YFGZ>7 
        PD1 = 7 
      else  
        PD1 = YFGZ-1 
        P = 0 
      endif  
      ZD1 = 4 
      ZD2 = PD1 
      do while JSQ<=PD1 
        RFIELD = field(JSQ) 
        @ 2 , 20+LC say field(JSQ) 
        @ 4+bs,20+lc say &Rfield   
        JSQ = JSQ+1 
        LC = LC+12 
      enddo  
      @ 4+BS , 0 say 编号 
      @ 4+BS , 6 say 姓名 
      if  not eof() 
        skip  
        BS = BS+1 
      else  
        exit  
      endif  
      if BS=19 
        exit  
      endif  
    enddo  
    READZD = ZD1 
    READLC = 0 
    go top 
    set color to w+/w 
    BS = 0 
    LC = 0 
    JSQ = 4 
    if YFGZ>7 
      PD1 = 7 
    else  
      PD1 = YFGZ-1 
    endif  
    do while JSQ<=PD1 
      RFIELD = field(JSQ) 
      @ 4+bs,20+lc say &field   
      JSQ = JSQ+1 
      LC = LC+12 
    enddo  
    @ 4+BS , 0 say 编号 
    @ 4+BS , 6 say 姓名 
    PD = 0 
    ZY = 0 
    set color to gr+/bg 
    DATA = field(READZD) 
    @ 4+bs,20+readlc say &data 
  case X=-8 
    do BJCOPY 
  case X=-1 
    do SCL 
  case X=-2 
    do CRL 
  case X=27 
    pack  
    exit  
  otherwise  
    ?? chr(7) 
  endcase  
enddo  
set color to 
close all 
return