home *** CD-ROM | disk | FTP | other *** search
- ****** ╔·│╔╫Θ║╧╠⌡╝■ DBFEXP.PRG ******
- ****** DO DBFEXP ******
- ****** FN:╬─╝■├√.(╚δ┐┌) ******
- ****** EXP:╠⌡╝■▒φ┤∩╩╜.(│÷┐┌) ******
- ****** EXP1: ******
- @ 0,0 CLEAR
- SET TALK OFF
- SET BELL OFF
- SET DELI OFF
- IF TYPE('FN')='U'
- FN=''
- FNO=''
- DO SELEF
- IF LEN(FN)=0
- RETU
- ENDIF
- ENDIF
- SELE 1
- IF TYPE('FNO')='U'
- USE FILE INDE FILE
- SEEK FN
- FNO=F_NO
- ENDIF
- @ 1,0 CLEAR
- USE &FN
- GO BOTT
- NN3=RECNO()
- USE DBD INDE DBD
- SET FILT TO F_NO=FNO.AND.FIELD_TYPE<>'M'
- COUNT TO MAX
- GO TOP
- EXP='.T.'
- EXP1='.T.'
- PRIV HS,LS
- HS=25
- LS=5
- XSH=HS-7
- N=0
- DO WHILE .T.
- @ 3,0 CLEAR
- N1=N+1
- I=3
- DO WHILE .NOT. EOF()
- J=0
- DO WHILE .NOT. EOF() .AND. J<LS
- N=N+1
- IF N=1
- @ I,0 SAY ' 1.╝╟┬╝║┼'
- J=J+1
- ENDIF
- @ I,J*15 SAY STR(N+1,2)+'.'+C_NAME
- J=J+1
- SKIP
- ENDDO
- I=I+1
- IF I=XSH+3
- EXIT
- ENDIF
- ENDDO
- DO WHILE .T.
- @ 0,58 SAY ' '
- @ 1,1 SAY '╡▒╟░╝∞╦≈╠⌡╝■╬¬:'+EXP1
- DO WHILE .T.
- @ 0,7 SAY '╤í╘±╝∞╦≈╣╪╝ⁿ╫╓┤·║┼[Enter_═╦│÷ PgUp_╟░▓Θ PgDn_║≤▓Θ]:'
- YN=INKEY(0)
- IF YN>48.AND.YN<58
- @ 0,58 SAY CHR(YN)
- EXIT
- ENDIF
- IF YN=13.OR.YN=18.OR.YN=3
- EXIT
- ENDIF
- ??CHR(7)
- ENDDO
- @ 0,0 SAY SPACE(7)
- @ 0,62 SAY SPACE(16)
- IF YN=18
- IF N1=1
- LOOP
- ENDIF
- IF N1<LS*XSH+1
- N=0
- ELSE
- N=N1-LS*XSH+1
- ENDIF
- GO TOP
- SKIP N
- EXIT
- ENDIF
- IF YN=3
- IF N=MAX
- LOOP
- ENDIF
- GO TOP
- SKIP N
- EXIT
- ENDIF
- IF YN=13
- USE
- RETU
- ENDIF
- DO WHILE .T.
- @ 0,58 SAY CHR(YN)
- YN1=INKEY(0)
- IF YN1>47.AND.YN1<58
- @ 0,59 SAY CHR(YN1)
- EXIT
- ENDIF
- IF YN1=19.OR.YN1=127.OR.YN1=13
- EXIT
- ENDIF
- ??CHR(7)
- ENDDO
- IF YN1=127.OR.YN1=19
- LOOP
- ENDIF
- IF YN1=13
- NN=YN-48
- ELSE
- NN=VAL(CHR(YN)+CHR(YN1))
- ENDIF
- NN=NN-1
- IF NN>MAX .OR. NN<0
- @ 0,62 SAY STR(NN+1,3)+'╨≥║┼│¼╖╢╬º!'
- @ 0,3 SAY '╓╪╨┬'
- LOOP
- ENDIF
- @ XSH+3,0 CLEAR
- IF NN=0
- DO WHILE .T.
- NN2=NN3
- NN1=1
- @ XSH+3,0 SAY '╟δ╩Σ╚δ╝╟┬╝╖╢╬º: ╞≡╩╝╝╟┬╝║┼ ╓╒╓╣╝╟┬╝║┼'
- @ XSH+3,27 GET NN1 PICT '999999'
- @ XSH+3,47 GET NN2 PICT '999999'
- READ
- IF NN2=NN1
- EXP=EXP+'.AND.RECNO()='+LTRIM(STR(NN1,6))
- EXP1=EXP1+'.AND.╝╟┬╝║┼='+LTRIM(STR(NN1,6))
- EXIT
- ENDIF
- IF NN2>=NN1
- EXP=EXP+'.AND. RECNO()>='+LTRIM(STR(NN1,6))+'.AND.RECNO()<='+LTRIM(STR(NN2,6))
- EXP1=EXP1+'.AND.╝╟┬╝║┼>='+LTRIM(STR(NN1,6))+'.AND.╝╟┬╝║┼<='+LTRIM(STR(NN2,6))
- EXIT
- ENDIF
- LOOP
- ENDDO
- LOOP
- ENDIF
- GO TOP
- SKIP NN-1
- T=FIELD_TYPE
- PIC=''
- DO CASE
- CASE T='N'
- @ XSH+3,1 SAY '└α╨═:╩²╫╓╨═,│ñ╢╚:'+STR(FIELD_LEN,3)+' ╨í╩²:'+STR(FIELD_DEC,2)
- IF FIELD_DEC<>0
- EX=0.0
- PIC=REPL('9',FIELD_LEN-FIELD_DEC-1)+'.'+REPL('9',FIELD_DEC)
- ELSE
- PIC=REPL('9',FIELD_LEN)
- EX=0
- ENDIF
- CASE T='C'
- @ XSH+3,1 SAY '└α╨═:╫╓╖√╨═,│ñ╢╚:'+STR(FIELD_LEN,3)
- EX=SPACE(FIELD_LEN)
- CASE T='D'
- @ XSH+3,1 SAY '└α╨═:╚╒╞┌╨═,╕±╩╜:─Ω/╘┬/╚╒ YY/MM/DD'
- *╘┬/╚╒/─Ω MM/DD/YY'
- EX=DATE()
- CASE T='L'
- @ XSH+3,1 SAY '└α╨═:┬▀╝¡╨═,╨╬╩╜: .T. OR .F.'
- EX=.T.
- ENDCASE
- @ ROW(),COL() SAY ' ┬▀╝¡╖√:*_╙δ +_╗≥|╣╪╧╡╖√:>,>=,<,<=,=,<>,$'
- IF LEN(TRIM(NOTE))<>0
- @ ROW()+1,1 SAY '╓╡╙≥:'+NOTE
- ENDIF
- @ ROW()+1,1 SAY '╟δ╩Σ╚δ╧▐╓╞╠⌡╝■:<┬▀╝¡╘╦╦π╖√>'+TRIM(C_NAME)+'<╣╪╧╡╘╦╦π╖√><│ú╩²>'
- ROW1=ROW()+1
- DO WHILE .T.
- OP=' '
- LOG=' '
- @ ROW1,1 SAY '╟δ╩Σ╚δ........: ' GET LOG
- @ ROW(),COL()+6 SAY TRIM(C_NAME)+' ' GET OP PICT 'XX'
- IF T='N'
- @ ROW(),COL()+5 GET EX PICT "&PIC"
- ELSE
- @ ROW(),COL()+5 GET EX
- ENDIF
- READ
- IF AT(OP,'<> < = >= > <= $ ')=0 .OR. LOG#'+'.AND.LOG#'*'
- LOOP
- ELSE
- IF .NOT. (OP='<>' .OR. OP=' =' .OR. OP='= ').AND.FIELD_TYPE='L' .OR. OP$' $ '.AND.FIELD_TYPE#'C'
- @ 9,1 SAY EX
- ? '^------------╣╪╧╡╘╦╦π╖√┤φ!'
- WAIT '╩Σ╚δ╚╬║╬╝ⁿ╘≥╓╪╤í...'
- LOOP
- ENDIF
- ENDIF
- EXIT
- ENDDO
- IF LOG='*'
- LOG='.AND.'
- ELSE
- LOG='.OR.'
- ENDIF
- OP=LTRIM(TRIM(OP))
- EE="EXP=EXP+'.AND.'+TRIM(FIELD_NAME)+OP+EX1"
- DO CASE
- CASE T='N'
- EX1=LTRIM(STR(EX,FIELD_LEN,FIELD_DEC))
- EXP=EXP+LOG+TRIM(FIELD_NAME)+OP+EX1
- EXP1=EXP1+LOG+TRIM(C_NAME)+OP+EX1
- CASE T='C'
- EX1="'"+TRIM(EX)+"'"
- IF OP$' $ '
- EXP=EXP+LOG+EX1+OP+TRIM(FIELD_NAME)
- EXP1=EXP1+LOG+EX1+OP+TRIM(C_NAME)
- ELSE
- EXP=EXP+LOG+TRIM(FIELD_NAME)+OP+EX1
- EXP1=EXP1+LOG+TRIM(C_NAME)+OP+EX1
- ENDIF
- CASE T='D'
- EX1='CTOD("'+DTOC(EX)+'")'
- EXP=EXP+LOG+TRIM(FIELD_NAME)+OP+EX1
- EXP1=EXP1+LOG+TRIM(C_NAME)+OP+DTOC(EX)
- CASE T='L'
- IF (OP='= '.OR.OP=' =') .AND. EX .OR. OP='<>'.AND..NOT.EX
- EXP=EXP+LOG+TRIM(FIELD_NAME)
- EXP1=EXP1+LOG+TRIM(C_NAME)
- ELSE
- EXP=EXP+LOG+'.NOT.'+TRIM(FIELD_NAME)
- EXP1=EXP1+LOG+'.NOT.'+TRIM(C_NAME)
- ENDIF
- ENDCASE
- IF EXP='.T..AND.'
- EXP=SUBS(EXP,9)
- EXP1=SUBS(EXP1,9)
- ENDIF
- IF EXP='.T..OR.'
- EXP=SUBS(EXP,8)
- EXP1=SUBS(EXP1,8)
- ENDIF
- @ XSH+3,0 CLEAR
- ENDDO
- ENDDO
- USE
- SET DELI ON
- RETURN
- ** END OF DBFEXP.PRG **