home *** CD-ROM | disk | FTP | other *** search
- ** BEGIN OF SELEFM.PRG **
- ** PARA FNA(32) **
- @ 1,0 CLEAR
- @ 0,0 SAY '╤í╘±╓≈╬─╝■ . . . '
- DIME FNOC(10,5)
- I=1
- DO WHILE I<9
- STOR '' TO FN,FNO,CFN
- I_I=I
- DO SELEF
- I=I_I
- IF LEN(FN)=0
- IF I=1
- RETU TO MAST
- ENDIF
- I=I-1
- EXIT
- ENDIF
- J=1
- DO WHILE J<I
- IF FNO=FNOC(J,2)
- J=0
- EXIT
- ENDIF
- J=J+1
- ENDDO
- IF J=0
- @ 0,15 SAY '╬─╝■[&CFN.]<&FN..DBF>╥╤╤í╣²! ╟δ╓╪╨┬╤í╘± . . . '
- LOOP
- ENDIF
- FNOC(I,1)=FN
- FNOC(I,2)=FNO
- FNOC(I,3)=CFN
- IF I=1
- SELE 10
- USE IDX INDE IDX
- @ 1,0 CLEAR
- SET FILT TO F_NO=FNO
- GO TOP
- @ 1, 20 SAY CFN+FN+'.DBF ╙╨╧┬┴╨╦≈╥²:'
- H=2
- DO WHILE .NOT. EOF()
- @ H,5 SAY '['+STR(H-1,2)+'].....'+IDX_DES+IDX_NAME+IDX_EXP
- SKIP
- H=H+1
- ENDDO
- YN=0
- @ 0,0 SAY SPACE(80)
- @ 0,20 SAY '╟δ╤í╘±╓≈╬─╝■╦≈╥²:' GET YN PICT '99' RANG 0,H-2
- READ
- IF YN=0
- IDXN=''
- ELSE
- GO TOP
- SKIP YN-1
- IDXN=TRIM(IDX_NAME)
- ENDIF
- USE
- ELSE
- @ 1,0 CLEAR
- J=1
- DO WHILE J<=I-1
- @ INT((J-1)/2)+1,IIF(J/2=INT(J/2),40,0) SAY STR(J,1)+'..'+FNOC(J,1)+' '+FNOC(1,3)
- J=J+1
- ENDDO
- YN=1
- @ 0,0 SAY SPACE(80)
- @ 0,10 SAY FN+'.DBF '+CFN+'║═╧┬┴╨──╕÷╩²╛▌┐Γ╖ó╔·┴¬╧╡[1-'+STR(J-1,1)+']:' GET YN PICT '9' RANG 1,J-1
- READ
- FNOC(I,4)=YN
- CLEAR
- SELE 10
- USE DBD INDE DBD
- SET FILT TO F_NO=FNOC(I,2).AND.FIELD_TYPE$'CND'
- GO TOP
- K=1
- J=1
- DO WHILE .NOT.EOF()
- @ K,(J-1)*15 SAY STR((K-1)*5+J,2)+'.'+TRIM(C_NAME)
- K=IIF(J=5,K+1,K)
- J=IIF(J=5,1,J+1)
- SKIP
- ENDDO
- DO WHILE .T.
- @ 0,0 SAY SPACE(80)
- FD=0
- @ 0,2 SAY '╟δ╤í╘±╣╪┴¬╫╓╢╬[0..░┤╝╟┬╝║┼╥╗╥╗╢╘╙ª! ╞Σ╦ⁿ,╫╓╢╬▒╪╨δ╘┌<'+FNOC(FNOC(I,4),3)+'>╓╨!]: ' GET FD PICT '99' RANG 0,K*5+J-1
- READ
- IF FD=0
- FNOC(I,5)=''
- EXIT
- ELSE
- GO TOP
- SKIP FD-1
- FNOC(I,5)=TRIM(FIELD_NAME)
- TY=FIELD_TYPE
- FL=FIELD_LEN
- FD=FIELD_DEC
- SET FILT TO
- SET EXACT ON
- LOCA FOR F_NO=FNOC(FNOC(I,4),2).AND.FIELD_NAME=FNOC(I,5)
- SET EXACT OFF
- SET FILT TO F_NO=FNOC(I,2).AND.FIELD_TYPE$'CND'
- IF EOF()
- @ 0,2 SAY '╫╓╢╬<'+FNOC(I,5)+'>▓╗╘┌╓≈╬─╝■<'+FNOC(FNOC(I,4),1)+'.DBF>╓╨! ╟δ╓╪╨┬╤í╘± . . . '
- A=INKEY(2)
- LOOP
- ENDIF
- YN='N'
- @ 0,0 CLEAR TO 0,79
- @ 0,2 SAY '╩╟╫Θ║╧╣╪┴¬╫╓┬≡?[Y/N]:' GET YN PICT '!' VALID YN$'YN'
- READ
- IF YN='Y'
- DO CASE
- CASE TY='N'
- FNOC(I,5)='STR('+FNOC(I,5)+','+STR(FIELD_LEN,3)+IIF(FIELD_DEC=0,'',','+STR(FIELD_DEC,3))+')'
- CASE TY='D'
- FNOC(I,5)='DTOC('+FNOC(I,5)+')'
- ENDCASE
- DO WHILE .T.
- YN=1
- @ 0,0
- @ 0,2 SAY '╡▒╟░╣╪┴¬╫╓╬¬<'+FNOC(I,5)+'>!'
- @ 0,57 SAY ' ╟δ╝╠╨°╤í╘±╣╪┴¬╫╓:' GET YN PICT '999' RANG 1,K*5+J-1
- READ
- SET FILT TO F_NO=FNOC(I,2).AND.FIELD_TYPE$'CND'
- GO TOP
- SKIP YN-1
- FDN=TRIM(FIELD_NAME)
- FT=FIELD_TYPE
- FL=FIELD_LEN
- FD=FIELD_DEC
- SET FILT TO
- SET EXACT ON
- LOCA ALL FOR F_NO=FNOC(FNOC(I,4),2).AND.FIELD_NAME=FDN
- SET EXACT OFF
- IF EOF()
- @ 0,0
- @ 0,0 SAY '╫╓╢╬<&FDN.>▓╗╘┌╓≈╬─╝■<'+FNOC(FNOC(I,4),1)+'.DBF>╓╨! ╟δ╓╪╨┬╤í╘±!!!'
- A=INKEY(2)
- LOOP
- ENDIF
- DO CASE
- CASE FT='N'
- FNOC(I,5)=FNOC(I,5)+'+STR('+FDN+','+STR(FL,3)+IIF(FD=0,'',','+STR(FD,3))+')'
- CASE FT='D'
- FNOC(I,5)=FNOC(I,5)+'+DTOC('+FDN+')'
- CASE FT='C'
- FNOC(I,5)=FNOC(I,5)+'+'+FDN
- ENDCASE
- YN=' '
- @ 0,0 SAY SPACE(80)
- @ 0,2 SAY '╗╣╥¬╤í╘±╣╪┴¬╫╓┬≡?[Y/N]:' GET YN PICT '!' VALID YN$'YN'
- READ
- IF YN='N'
- EXIT
- ENDIF
- ENDDO
- ENDIF
- EXIT
- ENDIF
- ENDDO
- ENDIF
- YN='N'
- @ 0,0 SAY SPACE(80)
- @ 0,20 SAY '╗╣╨Φ╥¬╤í╘±╩²╛▌╬─╝■┬≡?[Y/N]:' GET YN PICT '!' VALID YN$'YN'
- READ
- IF UPPE(YN)<>'Y'
- EXIT
- ENDIF
- I=I+1
- @ 0,0 SAY '╤í╘±╕¿╬─╝■ . . .'+SPACE(64)
- ENDDO
- NUM=I
- CLOS DATA
- SELE 1
- STOR FNOC(1,1) TO FNA(3),FNA(8)
- FNA(6)=NUM
- FNA(7)=IDXN
- SELE 2
- USE TAA
- ZAP
- SELE 3
- USE DBD
- COPY TO DB FOR F_NO=FNOC(1,2)
- SELE 2
- APPE FROM DB
- REPL ALL FIELD_NAME WITH 'A->'+FIELD_NAME
- J=2
- I=9
- DO WHILE J<=NUM
- SELE 1
- FNA(I)=FNOC(J,4)
- FNA(I+1)=FNOC(J,5)
- FNA(I+2)=FNOC(J,1)
- I=I+3
- SELE 3
- COPY TO DB FOR F_NO=FNOC(J,2)
- SELE 2
- APPE FROM DB
- REPL ALL FOR SUBS(FIELD_NAME,3,1)<>'>' FIELD_NAME WITH SUBS('ABCDEFGHIJ',J,1)+'->'+FIELD_NAME
- J=J+1
- ENDDO
- CLOS DATA
- RETU