12 Ago 2019 02:52
/*
PPESQNUM - Pesquisar um numro
*/
#include "dbstruct.ch"
#include "directry.ch"
#include "inkey.ch"
PROCEDURE PPESQNUM
LOCAL mNumero := 0, GetList := {}
@ 1, 0 SAY "Numero:" GET mNumero PICTURE "999999"
READ
IF LastKey() == K_ESC
RETURN
ENDIF
Pesquisa( ".\", mNumero )
Pesquisa( ".\dbf_bhp\", mNumero )
Mensagem( "Tecle ESC", " 27" )
RETURN
STATIC FUNCTION Pesquisa( cPath, mNumero )
LOCAL aFiles, nCont, cFile, nField, lEncontrou, xValue, aStru, nAtual, nTotal
aFiles := Directory( cPath + "*.dbf" )
FOR nCont = 1 TO Len( aFiles )
cFile := cPath + aFiles[ nCont, F_NAME ]
USE ( cFile )
aStru := dbStruct()
GOTO TOP
nAtual := 0
nTotal := LastRec()
GrafTempo( Ltrim( Str( nCont ) ) + "/" + Ltrim( Str( Len( aFiles ) ) ) + " " + cFile )
DO WHILE ! Eof()
GrafTempo( nAtual++, nTotal )
FOR nField = 1 TO Len( aStru )
xValue := FieldGet( nField )
lEncontrou := .F.
IF ValType( xValue ) == "N"
IF xValue == mNumero
lEncontrou := .T.
ENDIF
ELSEIF ValType( xValue ) == "C"
IF Ltrim( Str( mNumero ) ) $ xValue
lEncontrou := .T.
ENDIF
ENDIF
IF lEncontrou
SayScroll( "Encontrado em " + cFile + " " + FIeldName( nField ) + " " + Str( RecNo(), 6 ) )
Errorsys_WriteErrorLog( "Encontrado em " + cFile + " " + FIeldName( nField ) + " " + ;
Str( RecNo(), 6 ) + " " + Transform( xValue, "" ) )
Inkey(1)
ENDIF
NEXT
SKIP
ENDDO
USE
NEXT
RETURN NIL
Encontrado em .\arqmv2.dbf ORDEM 3789 053629
Encontrado em .\artmov.dbf CODIGO 10858 53629
Encontrado em .\artmov.dbf CODIGO 10859 53629
Encontrado em .\b0100.dbf CGC 5984 01536291000108
Encontrado em .\b0100.dbf CGC 13044 09536294000145
Encontrado em .\b0100.dbf COD_CLI 62869 53629
Encontrado em .\b0800.dbf ORDEM 52995 053629
Encontrado em .\b0800.dbf DOC 107504 1536299
Encontrado em .\b0800.dbf DOC 107505 1536299
Encontrado em .\b1300.dbf ORDEM 67177 053629
Encontrado em .\b1300.dbf ORDEM 67178 053629
Encontrado em .\b1300.dbf ORDEM 67179 053629
Encontrado em .\b1300.dbf DOC 134469 1536299
Encontrado em .\b1300.dbf DOC 134470 1536299
Encontrado em .\b1600.dbf COD_CLI 116309 53629
Encontrado em .\b1700.dbf COD_CLI 289710 53629
Encontrado em .\b1700.dbf COD_CLI 289711 53629
Encontrado em .\b1700.dbf COD_CLI 289712 53629
Encontrado em .\b1700.dbf COD_CLI 289713 53629
Encontrado em .\b1700.dbf COD_CLI 289714 53629
Encontrado em .\b5800.dbf COD_FLG 120173 053629
Encontrado em .\b5800.dbf COD_FLG 120174 053629
Encontrado em .\b5800.dbf CODIGO 249395 53629
Encontrado em .\b5800.dbf CODIGO 249396 53629
Encontrado em .\b6400.dbf ORDEM 21030 053629
Encontrado em .\b6400.dbf COD_FLG 51094 053629
Encontrado em .\b6400.dbf CODIGO 99509 53629
Encontrado em .\client.dbf CGC 5986 01536291000108
Encontrado em .\cliente.dbf CGC 6033 01536291000108
Encontrado em .\clientes.dbf CGC 5983 01536291000108
Encontrado em .\cpcli.dbf COD_CLI 64847 53629
Encontrado em .\cpcli.dbf COD_CLI 64848 53629
Encontrado em .\kitmov.dbf CODIGO 2765 53629
Encontrado em .\mov03.dbf COD_FLG 95121 053629
Encontrado em .\mov03.dbf COD_FLG 95122 053629
Encontrado em .\mov03.dbf CODIGO 212638 53629
Encontrado em .\mov03.dbf CODIGO 212639 53629
Encontrado em .\dbf_bhp\b2500.dbf COD_PRO 8157 053629
Encontrado em .\dbf_bhp\b2600.dbf COD_PRO 15384 053629
Encontrado em .\dbf_bhp\b2600.dbf COD_PRO 15401 053629
Encontrado em .\dbf_bhp\b2900.dbf COD_PRO 25971 053629
Encontrado em .\dbf_bhp\b3000.dbf COD_PRO 24751 053629
Encontrado em .\dbf_bhp\b3200.dbf COD_PRO 15278 053629
12 Ago 2019 10:09
13 Ago 2019 06:47
FUNCTION PESQUISAR_ALGO()
PRIVATE mNumero := 0, GetList := {}, cTXT:=SPAC(14)
PRIVATE aFiles:={}, nCont, cFile, nField, lEncontrou, xValue, aStru, nAtual, nTotal
PRIVATE cLocal_dos_arquivos := [C:\BACKUP]
mNumero := VAL(MSGGETTEXTO( [Pesquisar EAN ], [entre o texto p/pesquisa], @cTXT, [9999999999999] ))
SubPastas_DBF( cLocal_dos_arquivos, @aFILES, cLocal_dos_arquivos) // Pesquisa subpasta
//HWG_MSGINFO(STR(LEN(aFILES)))
FOR nCont = 1 TO Len( aFiles )
cFile := aFiles[ nCont, F_NAME ]
//hwg_msgstop( str(nCONT,3)+[ => ]+alltrim(cFILE) )
USE ( cFile ) NEW ALIAS TESTE
aStru := dbStruct()
GOTO TOP
nAtual := 0
nTotal := LastRec()
TAMANHO:=TESTE->(LASTREC()) ; nLIDAS:=1
oBar:=HProgressBar():NewBox( alltrim(cFILE)+" "+lTrim(strZERO(nLIDAS,9))+" De "+ALLTRIM(strZERO(TAMANHO,9))+" Registro(s)",,,750,,TAMANHO)
DO WHILE ! Eof()
FOR nField = 1 TO Len( aStru )
xValue := FieldGet( nField )
lEncontrou := .F.
IF ValType( xValue ) == "N"
IF xValue == mNumero
lEncontrou := .T.
ENDIF
ELSEIF ValType( xValue ) == "C"
IF Ltrim( Str( mNumero ) ) $ xValue
lEncontrou := .T.
ENDIF
ENDIF
IF lEncontrou
HWG_MSGINFO("Encontrado em " + cFile +CRLF+CRLF+ FIeldName( nField ) + CRLF+CRLF + Str( RecNo(), 6 ))
ENDIF
NEXT
TESTE->(DBSKIP())
oBar:Step(alltrim(cFILE)+[ ]+lTrim(strzero(nLIDAS++,9))+" De "+ALLTRIM(Strzero(TAMANHO,9))+" Registro(s)")
ENDDO
USE
oBAR:CLOSE()
NEXT
RETURN NIL
FUNCTION SubPastas_DBF( cPath, gFILE, cPathFound )
LOCAL xFiles, oELement, aARQUI:={}
xFiles := Directory( cPath+[\]+ "*.*", "D" )
//HWG_MSGINFO(STR(LEN(xFILES)))
FOR EACH oElement IN xFiles
IF "D" $ oElement[ F_ATTR ] .AND. oELement[ F_NAME ] != "." .AND. oELement[ F_NAME ] != ".."
cPath := cPathFound+[\]+oELement[ F_NAME ]
aARQUI := Directory( cPath+[\]+"*.dbf" )
FOR EACH oELement in aARQUI
AADD ( @gFILE, { cPath+"\"+oELement[1] })
NEXT
aARQUI:={}
SubPastas_DBF( cPath+"\", @gFile, @cPathFound )
ENDIF
NEXT
RETURN NIL
13 Ago 2019 08:55
13 Ago 2019 09:17
#include "dbstruct.ch"
#include "directry.ch"
#include "inkey.ch"
PROCEDURE ppesqnum
LOCAL mNumero := 0, GetList := {}
@ 1, 0 SAY "Numero:" GET mNumero PICTURE "999999"
READ
IF LastKey() == K_ESC
RETURN
ENDIF
Pesquisa( ".\", mNumero )
Mensagem( "Tecle ESC", " 27" )
RETURN
STATIC FUNCTION Pesquisa( cPath, mNumero )
LOCAL aFiles, nCont, cFile, nKey := 0
aFiles := Directory( cPath + "*.*", "D" )
FOR nCont = 1 TO Len( aFiles )
cFile := cPath + aFiles[ nCont, F_NAME ]
IF nKey == K_ESC
EXIT
ENDIF
nKey := Inkey()
IF "D" $ aFiles[ nCont, F_ATTR ]
IF AScan( { ".", ".." }, aFiles[ nCont, F_NAME ] ) == 0
Pesquisa( cPath + aFiles[ nCont, F_NAME ] + "\", mNumero )
ENDIF
ELSEIF ! ".dbf" $ Lower( cFile )
ELSE
PesquisaNoDbf( cFile, nCont, Len( aFiles ), @nKey, mNumero )
ENDIF
NEXT
RETURN NIL
STATIC FUNCTION PesquisaNoDbf( cFile, nDbfAtual, nDbfTotal, nKey, mNumero )
LOCAL aStru, nField, cTxt, xValue, lEncontrou, nAtual, nTotal
USE ( cFile )
IF ! Used()
RETURN NIL
ENDIF
aStru := dbStruct()
GOTO TOP
nAtual := 0
nTotal := LastRec()
GrafTempo( Ltrim( Str( nDbfAtual ) ) + "/" + Ltrim( Str( nDbfTotal ) ) + " " + cFile )
DO WHILE ! Eof()
IF nKey == K_ESC
EXIT
ENDIF
nKey := Inkey()
GrafTempo( nAtual++, nTotal )
FOR nField = 1 TO Len( aStru )
xValue := FieldGet( nField )
lEncontrou := .F.
IF ValType( xValue ) == "N"
IF xValue == mNumero
lEncontrou := .T.
ENDIF
ELSEIF ValType( xValue ) == "C"
IF Ltrim( Str( mNumero ) ) $ xValue
lEncontrou := .T.
ENDIF
ENDIF
IF lEncontrou
cTxt := "Encontrado em " + ;
cFile + " " + ;
Str( RecNo(), 6 ) + " " + ;
FieldName( nField ) + " " + ;
Transform( xValue, "" )
SayScroll( cTxt )
ErrSys_WriteErrorLog( cTxt )
Inkey(1)
ENDIF
NEXT
SKIP
ENDDO
USE
RETURN NIL
13 Ago 2019 09:29
FUNCTION SubPastas_DBF( cPath, gFILE, cPathFound )
LOCAL xFiles, oELement, aARQUI:={}
xFiles := Directory( cPath+[\]+ "*.*", "D" )
//HWG_MSGINFO(STR(LEN(xFILES)))
FOR EACH oElement IN xFiles
IF "D" $ oElement[ F_ATTR ] .AND. oELement[ F_NAME ] != "." .AND. oELement[ F_NAME ] != ".."
cPath := cPathFound+[\]+oELement[ F_NAME ]
aARQUI := Directory( cPath+[\]+"*.dbf" )
FOR EACH oELement in aARQUI
AADD ( @gFILE, { cPath+"\"+oELement[1] })
NEXT
aARQUI:={}
SubPastas_DBF( cPath+"\", @gFile, @cPathFound )
ENDIF
NEXT
RETURN NIL
aFileList := {}
ProcuraDbf( "c:\", @aFileList )
FUNCTION ProcuraDbf( cPath, aFileList )
LOCAL oFile
FOR EACH oFile IN Directory( cPath + "*.*", "D" )
IF "D" $ oFile[ F_ATTR ]
IF oFile[ F_NAME ] != "." .AND. oFile[ F_NAME ] != ".."
ProcuraDbf( cPath + oFile[ F_NAME ] + "\" , @aFileList )
ENDIF
ELSE
AAdd( aFileList, cPath + oFile[ F_NAME ] )
ENDIF
NEXT
RETURN NIL
13 Ago 2019 09:38
Seu fonte tá confuso, tá misturando as coisas, duas funções Directory() aonde deveria ser uma só.
Sua rotina recursiva tem que tratar somente o diretório atual e nada mais.
13 Ago 2019 10:00
13 Ago 2019 10:02
ELSEIF ".dbf" $ Lower( oFile[ F_NAME ] )
AAdd( aFileList, cPath + oFile[ F_NAME ] )
ENDIF
13 Ago 2019 10:28
13 Ago 2019 17:57
asimoes escreveu:Poderia usar thread pra ficar mais rápido ?