PUBLIC LISTADBF := {} XJAF_ARRUMAR := .t. // Carrega por parametro no meu caso pois executo somente quando necessario TIPODRIVER := '.CDX' /* Parameters xProdExec // Executar o sistema usando parametros If xProdExec =="ARRUMAR" XJAF_ARRUMAR := .T. DBFS_0() Endif */ Cria_Dbf01() //--------------------------------------------------------------------- Function Cria_Dbf01() CARQCDX := "TESTE"+TIPODRIVER CARQDBF := "TESTE.DBF" Estru := { {"Registr", "N", 10,0 },; {"Data" , "D", 8,0 },; {"Hora" , "C", 10,0 },; {"Texto" , "C", 50,0 } } AADD(LISTADBF,{CARQCDX,CARQDBF}) Ver_Dbf('TESTE.DBF',ESTRU) If ! File("TESTE.dbf") MSG("AGUARDE.... CRIANDO "+CARQDBF) Dbcreate("TESTE.dbf",Estru) Use Teste For x:= 1 to 1000 Append Blank Repla Registr With x Repla data With date() Repla hora With Time() Repla Texto With StrZero(x,10)+Dtoc(Date())+Time() Next Endif Return Nil //------------------------------------------------------ Static Function Ver_Dbf(cDbf,cMatriz) Local cArquivo := cDbf Local nTotCompos := 0 Local DadoCampo := {} Local cCampos := {} Local cPesq Local b If XJAF_ARRUMAR==.F. Return .t. ENDIF If ! File(cArquivo) Return nil Endif //--- Carregando Estrutura do Dbf Close All Close All Sele 1 Use (cArquivo) Alias _Arq Sele _Arq nTotCompos := FCount() DadoCampo := DbStruct() cCampos := {} Close all For B:=1 to nTotCompos cFields := ALLTRIM(Upper(DadoCampo[b,1]))+; Upper(DadoCampo[b,2])+; Str(DadoCampo[b,3],7)+; Str(DadoCampo[b,4],7) Aadd(cCampos,cFields ) // ,DadoCampo[b,2],DadoCampo[b,3],DadoCampo[b,4]} ) Next cErros := {} For x:= 1 to Len(cMatriz) cPesq := ALLTRIM(Upper(cMatriz[x,1]))+; upper(cMatriz[x,2])+; Str(cMatriz[x,3],7)+; Str(cMatriz[x,4],7) nPos := Ascan(cCampos,cPesq) If nPos == 0 cMsg := "Falta Campo :"+cPesq aadd(cErros,cMsg) Endif Next If Len(cErros) > 0 Cri_Dbf_Estru(cArquivo,cMatriz) Endif Return nil //-------------------------------------- Static Function Cri_Dbf_Estru(cDbf,cEstru) Local nSize := Len(cDbf) Local cNomeFile := Substr(cDbf,1,nSize-4) Local cLocal := "" If File(cLocal+cNomeFile+'.Tmp') Delete File (cLocal+cNomeFile+'.Tmp') Endif Dbcreate(cNomeFile+'.Tmp',cEstru) CLOSE ALL CLOSE ALL SET DELETED OFF MSG("AGUARDE.... Arrumando Arquivo "+cDbf) SELE 1 USE (cNomeFile+'.Tmp') Set index to Append from (cDbf) SET DELETED ON CLOSE ALL CLOSE ALL CLOSE ALL Delete File (cLocal+cDbf) Rename (cLocal+cNomeFile+'.Tmp') to (cLocal+cDbf ) Close all If File(cNomeFile+'.cdx') Delete File (cNomeFile+'.cdx') Endif CLOSE ALL CLOSE ALL Return nil //------------------------------------------------------------ STATIC FUNCTION MSG(XTEXTO) CLEAR @ 24,00 SAY PADC(XTEXTO,80) COLOR("RR+/W") RETURN NIL //-------------------------------------------------------- Static Function CRIA_PDVJAF() Local wPara := {} Aadd(wpara,{'ABERTURA' ,"B+/B" }) Aadd(wpara,{'ANO_CONSULTA_HISTORICO' ,StrZero(Year(Date()),4) }) Aadd(wpara,{'GRAVA_MVTO_INVENTARIO ','S' }) Aadd(wpara,{'FINANCEIRO_SAIDA_TRANSFERENCIA ','00717' }) Aadd(wpara,{'NAO_VALIDAR_IDX ','CTABANCOÜPREVFXOÜFORNECEDÜTRAB_IMP'}) Aadd(wpara,{'AGENDA_QUEBRA_VENDA ','003' }) If XJAF_ARRUMAR==.F. Return .t. ENDIF IF ! FILE("PDVJAF.JAF") MSG("AGUARDE.... CRIANDO ARQUIVO DE PARAMETRO DO SISTEMA (PDVJAF.JAF) ") Set Device to Printer Set Printer to PDVJAF.JAF SetPrc(0,0) Lin := 0 For x:= 1 to Len(wPara) @ lin++,00 say Alltrim(wPara[x,1])+"="+; Alltrim(wPara[x,2])+"#" Next Set device to Screen Set printer on ELSE IF FILE("PDVJAF.NEW") DELETE FILE PDVJAF.NEW ENDIF ENDIF COPY FILE PDVJAF.JAF TO PDVJAF.BKP IF ! FILE('PDVJAF.NEW') MSG("AGUARDE.... ANALIZANDO DADOS DO ARQUIVO DE PARAMETROS") Set Device to Printer Set Printer to PDVJAF.new SetPrc(0,0) Lin := 0 For x:= 1 to Len(wPara) cNovo := Lerparam(Alltrim(wPara[x,1])) If Alltrim(cNovo)=='SEM PARAMETRO' cNovo := Alltrim(wPara[x,2]) Endif @ lin++,00 say Alltrim(wPara[x,1])+"="+; cNovo+"#" Next Set device to Screen Set printer on ENDIF CLOSE ALL COPY FILE PDVJAF.NEW TO PDVJAF.JAF RETURN NIL