Boa Noite,
Tem como criar arquivo de log, no clipper, ja com o programa feito, estou com um problema o cliente teima que o programa na esta gravando os dados, eu queria mostra isso no log que e o funcionaria esta fazendo.
Em outro setores rotinas do programa nunca deu problema como esse!!!
desde ja agradeco sua atencao.
t+
:*
Arquivo de Log
Moderador: Moderadores
Rotinas do GAS
Não sei se ajuda, mas acho que vale a pena dar uma olhada.
Essa rotina faz parte de um aplicativo gerado pelo GAS.
:xau
Essa rotina faz parte de um aplicativo gerado pelo GAS.
Código: Selecionar todos
PROC VE_LOG() // ve relatorio gravado em disco
PRIV cod_sos, cur_sor
IF nivelop<3 // se usuario nao autorizado,
RETU // cai fora..
ENDI
cur_sor=SETCURSOR(3) // salva cursor/acende
SAVE SCREEN // salva tela
cod_sos=1
BROWSE_REL(arq_log,2,3,MAXROW()-2,78,.t.) // mostra o arquivo de log
REST SCREEN // restaura a tela
SETCURSOR(cur_sor) // restabelece o cursor
RETU
PROC POE_NO_LOG(tp_mov) // coloca informacoes no log
LOCAL i, estr_:={}, nc, j, x, db_:=sistema[op_sis,O_ARQUI,O_NOME] // nome do dbf
t=FILEATTRIB(arq_log) // testa se existe/verif atributos
IF t=-1 // arquivo nao existe
area_=FCREATE(arq_log,1) // tenta criar o arquivo
ELSE // atributo errado
RWRITE(arq_log) // torna o arquivo R/W
area_=FOPEN(arq_log,1) // abre o arquivo
ENDI
IF area_>0 // arquivo aberto beleza.
buff=PADR(db_,8)+" » " // comeca o log com o nome do dbf
buff+=PADR(usuario,15)+" » " // nome do usuario
IF tp_mov=INCLUI // esta incluindo/alterando
IF op_menu=INCLUSAO // e' inclusao
buff+="INCLUSAO " // coloca no log
ELSE
buff+="DEPOIS ALTERACAO " // modificou o dbf
ENDI
ELSEIF tp_mov=EXCLUI // excluindo registro
buff+="EXCLUSAO "
ELSEIF tp_mov=FORM_INVERSA // formula inversa e feita
buff+="ANTES ALTERACAO " // antes da alteracao
ELSEIF tp_mov=RECUPERA
buff+="RECUPERACAO " // recuperando reg excluido
ELSEIF tp_mov=FORM_DIRETA
buff+="DEPOIS ALTERACAO " // modificou o dbf
ENDI
buff+=DTOC(DATE())+" "+TIME() // coloca data e hora no log
nc=EVAL(&("{||"+db_+"->(FCOU())}")) // numero de campos do arquivo
estr_=&db_.->(DBSTRUCT()) // pega estrutura do dbf
FOR i=1 TO nc // coloca todos os campos no log
IF db_==ALIAS()
msg=&db_.->(FIEL(i)) // campo do arquivo
ELSE
msg=db_+"->"+&db_.->(FIEL(i))
ENDI
x=TRANS(&msg.,sistema[op_sis,O_CAMPO,i,O_MASC])
j=IF(LEN(x)>LEN(sistema[op_sis,O_CAMPO,i,O_TITU]),LEN(x),LEN(sistema[op_sis,O_CAMPO,i,O_TITU]))
IF estr_[i,2] = "C" .OR. estr_[i,2] = "D" // caracter e data alinha a esquerda
buff+=" » "+PADR(TRANS(&msg.,sistema[op_sis,O_CAMPO,i,O_MASC]),j+2)
ELSE // campo numerico alinha a direita
buff+=" » "+PADL(TRANS(&msg.,sistema[op_sis,O_CAMPO,i,O_MASC]),j+2)
ENDI
NEXT
buff=EMBARALHA(buff) // encripta os dados
buff+=CHR(13)+CHR(10) // forca quebra de linha
FSEEK(area_,0,2) // vai para o final do arquivo
j=FWRITE(area_,buff,LEN(buff)) // grava o log
FCLOSE(area_) // fecha o log
SETRHS(arq_log) // coloca atrigutos rhs
ENDI
RETU
Clp52e, Blinker 5.1

