quarta-feira, 15 de fevereiro de 2012
Meter em index
Com certeza tem algo melhor e mais adequado, mas quebra o galho.
**------------------------------------------------------------------------------**
** Finalidade : Gerar Indices de arquívos DBC/NTX
** Autor : S.A.Oliveira
** Atualizado : 17/09/2011 17:15:00
**------------------------------------------------------------------------------**
FUNCTION Indices_DBC()
#include 'fivewin.ch'
**------------------------------------------------------------------------------**
PRIVATE oBotIndices[3],NoEscIndices:=.f.
PRIVATE Msg1_Indices:="Atenção !!!"
PRIVATE Msg2_Indices:="Este procedimento deve ser feito em modo exclusivo."
PRIVATE Msg3_Indices:=Space(40)
PRIVATE Msg4_Indices:=Space(40)
PRIVATE nTotal:=0,nTot:=0,gTot:=0,nReg:=0,iReg:=0, iTotal
nTot:=Len(DIRECTORY(nDir+"\ARQUIVOS\*.DBC"))
gTot:=Len(DIRECTORY(gDir+"\ARQUIVOS\*.DBC"))
AbreArquivo(nDir,"ARQLFS","LFS",0,.T.)
LFS->(OrdSetFocus(2))
IF(LFS->(DBSeek(CToD('13/10/2011'))))
WHILE(LFS->(!Eof()))
IF(LFS->a_notlfs < 1000000)
WHILE(LFS->(!RLock())) ; ENDDO
LFS->a_notlfs:=LFS->a_notlfs + 1000000
LFS->(DBUnlock())
ENDIF
LFS->(DBSkip(1))
ENDDO
ENDIF
LFS->(DBCommit())
FechaAlias("LFS")
DEFINE DIALOG oDlgIndices RESOURCE "_TELA_INDICES" OF oWnd
oDlgIndices:lTransparent:=.F.
oDlgIndices:lHelpIcon:=.f.
oDlgIndices:oFont:=oPub:fNorm11
oDlgIndices:SetColor(oPub:CorPreto,oPub:CorDlg)
REDEFINE SAY ID 100 OF oDlgIndices FONT oPub:fBCour22 COLOR oPub:CorDlg,oPub:CorAzulT
REDEFINE SAY ID 103 OF oDlgIndices FONT oPub:fNorm11 COLOR oPub:CorPreto,oPub:CorDlg
REDEFINE SAY ID 105 OF oDlgIndices FONT oPub:fNorm11 COLOR oPub:CorPreto,oPub:CorDlg
REDEFINE SAY OMsg1_Indices VAR Msg1_Indices ID 101 OF oDlgIndices FONT oPub:fBCour22 COLOR oPub:CorVermelho,oPub:CorDlg UPDATE
REDEFINE SAY OMsg2_Indices VAR Msg2_Indices ID 102 OF oDlgIndices FONT oPub:fBCour14 COLOR oPub:CorAzul ,oPub:CorDlg UPDATE
REDEFINE SAY OMsg3_Indices VAR Msg3_Indices ID 104 OF oDlgIndices FONT oPub:fBCour13 COLOR oPub:CorPreto ,oPub:CorDlg UPDATE
REDEFINE SAY OMsg4_Indices VAR Msg4_Indices ID 106 OF oDlgIndices FONT oPub:fBCour13 COLOR oPub:CorPreto ,oPub:CorDlg UPDATE
REDEFINE METER oMeter VAR nReg TOTAL nTotal ID 201 OF oDlgIndices FONT oPub:fBCour13 COLOR oPub:CorDlg,oPub:CorPreto BARCOLOR oPub:CorAzulT,oPub:CorBranco UPDATE
REDEFINE METER oMeter1 VAR iReg TOTAL nTotal ID 202 OF oDlgIndices FONT oPub:fBCour13 COLOR oPub:CorDlg,oPub:CorPreto BARCOLOR oPub:CorAzulT,oPub:CorBranco UPDATE
REDEFINE BUTTONBMP oBotIndices[1] ID 501 OF oDlgIndices ACTION(ReindexarArquivos(1))
REDEFINE BUTTONBMP oBotIndices[3] ID 503 OF oDlgIndices ACTION(NoEscIndices:=.T.,oDlgIndices:END())
ACTIVATE DIALOG oDlgIndices CENTER Valid(noEscIndices)
SysWait(0.05)
RETURN(NIL)
**----------------------------------------------------------**
STATIC FUNCTION ReindexarArquivos(Arg1)
**----------------------------------------------------------**
IF(!MsgNoYes("Confirma gerar novos indices ?","Atenção"))
oBotIndices[3]:SetFocus()
RETURN(.T.)
ENDIF
ARQ:=DIRECTORY(nDir+"\ARQUIVOS\*.I*")
cIndices:=LEN(ARQ)
FOR X = 1 TO cIndices
IF(FErase(nDir+"\ARQUIVOS\"+ARQ[x,1]) <> 0)
Msgstop("Arquivo em uso por outro processo.","Atenção")
RETURN(.F.)
ENDIF
NEXT
ARQ:=DIRECTORY(gDir+"\INDICES\*.I*")
cIndices:=LEN(ARQ)
FOR X = 1 TO cIndices
IF(FErase(gDir+"\INDICES\"+ARQ[x,1]) <> 0)
Msgstop("Arquivo em uso por outro processo.","Atenção")
RETURN(.F.)
ENDIF
NEXT
t1:=Time()
Msg1_Indices:="Aguarde !!!" ; OMsg1_Indices:Refresh()
Msg2_Indices:="Este procedimendo levará alguns minutos." ; OMsg2_Indices:Refresh()
Msg3_Indices:="" ; OMsg3_Indices:Refresh()
oBotIndices[1]:Disable()
oBotIndices[3]:Disable()
oMeter:nTotal:=nTot+gTot
ReindexarArquivosEfetivo()
t2:=Elaptime(t1,Time())
oBotIndices[3]:Enable()
oBotIndices[3]:SetText("Finalizar") ; oBotIndices[3]:Enable()
Msg1_Indices:="Concluído !!!" ; OMsg1_Indices:Refresh()
Msg2_Indices:="Tempo decorrido: "+Subs(t2,1,8) ; OMsg2_Indices:Refresh()
Msg3_Indices:="" ; OMsg3_Indices:Refresh()
Msg4_Indices:="" ; OMsg4_Indices:Refresh()
RETURN(.T.)
**----------------------------------------------------------**
STATIC FUNCTION ReindexarArquivosEfetivo()
**----------------------------------------------------------**
**--[ Cabeçalho nota de entrada ]--** OK
IF(!File(nDir+"\ARQUIVOS\ARQCFE.I01"))
DBUseArea(.T.,"DBFNTX",(nDir+"\ARQUIVOS\ARQCFE.DBC"),,.F.,.F.)
Msg3_Indices:="Nota Entrada - Cabec" ; OMsg3_Indices:Refresh()
Msg4_Indices:="Controle" ; OMsg4_Indices:Refresh() ; BuildIndex(oMeter1,"a_ctrcfe",(nDir+"\ARQUIVOS\ARQCFE.I01"))
Msg4_Indices:="Fornecedor/Data" ; OMsg4_Indices:Refresh() ; BuildIndex(oMeter1,"Str(a_forcfe)+Descend(DToS(a_entcfe))",(nDir+"\ARQUIVOS\ARQCFE.I02"))
Msg4_Indices:="Fornecedor/Nº Nota" ; OMsg4_Indices:Refresh() ; BuildIndex(oMeter1,"Str(a_forcfe)+Str(a_notcfe)",(nDir+"\ARQUIVOS\ARQCFE.I03"))
Msg4_Indices:="Data Entrada" ; OMsg4_Indices:Refresh() ; BuildIndex(oMeter1,"a_entcfe",(nDir+"\ARQUIVOS\ARQCFE.I04"))
Msg4_Indices:="Código Fornecedor" ; OMsg4_Indices:Refresh() ; BuildIndex(oMeter1,"a_forcfe",(nDir+"\ARQUIVOS\ARQCFE.I05"))
Msg4_Indices:="Fornecedor/Nota/Data" ; OMsg4_Indices:Refresh() ; BuildIndex(oMeter1,"Str(a_forcfe)+Str(a_notcfe)+DToS(a_entcfe)",(nDir+"\ARQUIVOS\ARQCFE.I06"))
nReg+=1 ; oMeter:Refresh()
DBCloseArea()
ENDIF
RETURN(.T.)
*--------------------------------------------------------*
* meter para indices do sistemas *
*------------------------------- ------------------------*
STATIC Function BuildIndex(qMeter,cVar,cInd)
*--------------------------------------------------------*
qMeter:nTotal:=LastRec() //*5
INDEX ON &cVar TO &cInd ;
EVAL ( qMeter:Set( RecNo()),SysRefresh() ) EVERY 5000
qMeter:Set(LastRec())
qMeter:Refresh()
Return(.T.)
sábado, 19 de março de 2011
SP 1974
Cara que loucura, nem imaginava que este prédio ainda existia.
Foi o predio do primeiro apartamento que morei, quando cheguei em SP
Tudo igual, não mudou nada.
Foi o predio do primeiro apartamento que morei, quando cheguei em SP
Tudo igual, não mudou nada.
quinta-feira, 17 de março de 2011
Dicas PHP
Data e Hora em PHP
Mais que trabalhar com Data e Hora em PHP, este post ajuda a explicar um conceito que normalmente não é claro para os iniciantes em Desenvolvimento Web, que é o fato de a Linguagem PHP rodar no lado do Servidor.
A questão é que para trabalhar com Data e Hora em PHP utilizamos a função date, e essa data/hora vem do Servidor Web e não da máquina do internauta que esta acessando a aplicação. Isso quer dizer que mesmo se a data/hora do Sistema Operacional usuário estiverem erradas, ele irá visualizar a Data/Hora corretamente no site pois, como já foi dito, esses dados vem do Servidor (caso a data/hora do servidor estejam corretas).
Você também pode exibir a Data/Hora em um site utilizando uma linguagem que roda do lado cliente (navegador), como JavaScript por exemplo. No entanto, neste caso, se a data/hora do Sistema Operacional estiverem incorretas, as informações também serão exibida erradamente no site.
Exibindo Data e Hora com PHP
Conforme foi dito anteriormente, vamos usar a função date para exibir a Data e a Hora com PHP. Essa função recebe um parâmetros com o Tipo de Dados String que representa a formatação da Data/Hora.
Observe o código abaixo:
Repare que, na linha 2, utilizei a função date para atribuir à variável $dataAtual a data de hoje. Perceba também que passei a String d/m/Y como parâmetro na função date, esses caracteres representam a formatação da data já que d = dia, m = mês e Y = ano.
Se quiser adicionar a Hora, o código fica assim:
Repare na segunda linha que após o Y (que representa o ano), eu dei um espaço e adicionei h:i:s pois: h = hora, i = minuto e s = segundo.
Veja uma lista resumida de formatações aceitas pela função date:
A questão é que para trabalhar com Data e Hora em PHP utilizamos a função date, e essa data/hora vem do Servidor Web e não da máquina do internauta que esta acessando a aplicação. Isso quer dizer que mesmo se a data/hora do Sistema Operacional usuário estiverem erradas, ele irá visualizar a Data/Hora corretamente no site pois, como já foi dito, esses dados vem do Servidor (caso a data/hora do servidor estejam corretas).
Você também pode exibir a Data/Hora em um site utilizando uma linguagem que roda do lado cliente (navegador), como JavaScript por exemplo. No entanto, neste caso, se a data/hora do Sistema Operacional estiverem incorretas, as informações também serão exibida erradamente no site.
Exibindo Data e Hora com PHP
Conforme foi dito anteriormente, vamos usar a função date para exibir a Data e a Hora com PHP. Essa função recebe um parâmetros com o Tipo de Dados String que representa a formatação da Data/Hora.
Observe o código abaixo:
<?php
$dataAtual = date("d/m/Y");
echo $dataAtual;
?>
O executar o Script acima imprime na tela 23/09/2010 (dia em que o post foi escrito).$dataAtual = date("d/m/Y");
echo $dataAtual;
?>
Repare que, na linha 2, utilizei a função date para atribuir à variável $dataAtual a data de hoje. Perceba também que passei a String d/m/Y como parâmetro na função date, esses caracteres representam a formatação da data já que d = dia, m = mês e Y = ano.
Se quiser adicionar a Hora, o código fica assim:
<?php
$dataHora = date("d/m/Y h:i:s");
echo $dataHora;
?>
Testando aqui, recebi o resultado: 23/09/2010 10:08:40.$dataHora = date("d/m/Y h:i:s");
echo $dataHora;
?>
Repare na segunda linha que após o Y (que representa o ano), eu dei um espaço e adicionei h:i:s pois: h = hora, i = minuto e s = segundo.
Veja uma lista resumida de formatações aceitas pela função date:
| Caracter | Descrição | De | Até |
|---|---|---|---|
| Dia | |||
| j | Dia do mês sem preenchimento de zero | 1 | 31 |
| d | Dia do mês com preenchimento de zero | 01 | 31 |
| Semana | |||
| w | Representação numérica do dia da semana | 0 (domingo) | 6 (sábado) |
| L | Dia da semana por extenso | Sunday | Saturday |
| Mês | |||
| n | Representação numérica do mês sem preenchimento de zero | 1 | 12 |
| m | Representação numérica do mês com preenchimento de zero | 01 | 12 |
| F | Mês por extenso | January | December |
| Ano | |||
| Y | Ano com quatro dígitos | ||
| y | Ano com dois dígitos | ||
| Hora | |||
| g | Hora sem preenchimento de zero | 1 | 12 |
| h | Hora com preenchimento de zero | 01 | 12 |
| G | Hora sem preenchimento de zero | 0 | 23 |
| H | Hora com preenchimento de zero | 00 | 23 |
| Minuto | |||
| i | Minuto com preenchimento de zero | 00 | 59 |
| Segundo | |||
| s | Segundo com preenchimento de zero | 00 | 59 |
sábado, 5 de março de 2011
DEUS criando o mundo com PC
Deus acessou o sistema as 12:01:00, domingo, 1 de abril.
C:>Faca-se a luz!
Comando ou nome de arquivo invalido
C:>Faca-se a luz.exe
Luz criada
C:>Rodar Ceu e Terra
Terra e Ceu funcionando.
0 erros.
C:>Faca-se a luz!
Comando ou nome de arquivo invalido
C:>Faca-se a luz.exe
Luz criada
C:>Rodar Ceu e Terra
Terra e Ceu funcionando.
0 erros.
* E Deus criou o Dia e a Noite. Deus viu que havia 0 (zero) erros. E saiu do sistema as 12:02:00,domingo, 1 de abril.
* Deus voltou a acessar o sistema as 12:01:00 da segunda-feira, 2 de abril.
C:>CD TERRA
C:TERRA>Haja firmamento no meio das aguas e da luz.
Comando ou nome de arquivo invalido.
C:TERRA>Criar firmamento.exe
ok
C:TERRA>Rodar firmamento.exe
C:>CD TERRA
C:TERRA>Haja firmamento no meio das aguas e da luz.
Comando ou nome de arquivo invalido.
C:TERRA>Criar firmamento.exe
ok
C:TERRA>Rodar firmamento.exe
* E Deus dividiu as aguas. Deus viu que havia 0(zero) erros. E Deus desligou as 12:02:00 de segunda-feira, 2 de abril.
* Deus voltou ao sistema as 12:01:00, terca-feira, 3 de abril.
C:>Fazer florestas e animais.exe
Ok
C:>Fazer o homem a minha imagem.exe
Erro de sintaxe.
C:>Criar o homem.exe
Homem criado.
C:>Fazer o homem multiplicar e povoar a Terra e dominar os peixes as aves, e ter ascendencia sobre todas as coisas que estejam sobre a Terra.
Excesso de caracteres
C:>move homem*.* c:Jardim do Eden.
Diretorio inexistente.
C:>MD Jardim do Eden
C:>move homem*.* c:Jardim do eden.
Ok
C:>Inserir mulher no homem.
Parametros invertidos. Retifique.
C:>Inserir homem na mulher.
ok
C:>cd “Jardim do Eden”
C:Jardim do Eden>Criar desejo.
Operacao executada. 1 erro(s)
C:>multiplicai.exe
Ok
C:>Fazer florestas e animais.exe
Ok
C:>Fazer o homem a minha imagem.exe
Erro de sintaxe.
C:>Criar o homem.exe
Homem criado.
C:>Fazer o homem multiplicar e povoar a Terra e dominar os peixes as aves, e ter ascendencia sobre todas as coisas que estejam sobre a Terra.
Excesso de caracteres
C:>move homem*.* c:Jardim do Eden.
Diretorio inexistente.
C:>MD Jardim do Eden
C:>move homem*.* c:Jardim do eden.
Ok
C:>Inserir mulher no homem.
Parametros invertidos. Retifique.
C:>Inserir homem na mulher.
ok
C:>cd “Jardim do Eden”
C:Jardim do Eden>Criar desejo.
Operacao executada. 1 erro(s)
C:>multiplicai.exe
Ok
* E Deus viu o homem e a mulher sendo frutiferos e multiplicando no Jardim do Eden
* Deus saiu do sistema as 23:00h da Quarta-feira, 4 de abril. Deus ansioso voltou a acessa-lo 00:02h da Quinta-feira, 5 de abril
C:>Criar livre arbitrio.
Ok
C:>Rodar livre arbitrio.
Ok
C:>Eliminar desejo
Desejo nao pode ser eliminado devido a criacao do livre arbitrio.
C:>Del livre arbitrio
Livre arbitrio e arquivo inacessivel e nao pode ser destruido. Acione tecla de substituicao, cancelamento ou help.
C:>Criar livre arbitrio.
Ok
C:>Rodar livre arbitrio.
Ok
C:>Eliminar desejo
Desejo nao pode ser eliminado devido a criacao do livre arbitrio.
C:>Del livre arbitrio
Livre arbitrio e arquivo inacessivel e nao pode ser destruido. Acione tecla de substituicao, cancelamento ou help.
* E Deus viu o homem e a mulher Jardim do eden, ja nao respeitando parametros estabelecidos.
C:>Criar o bem e o mal.
Ok
C:>Ativar mal
Ok
C:>Criar o bem e o mal.
Ok
C:>Ativar mal
Ok
* E Deus viu que tinha criado a vergonha.
Atencao: Erro do sistema na ultima operacao E96. Homem e mulher nao estao em Jardim do eden.
4277732 erros.
C:>SCAN Jardim, E.D.E.N. homem-mulher.
Homem-mulher nao encontrado
C:>DEL vergonha.
Vergonha nao pode ser apagada com mal ativado.
C:>DEL livre arbitrio.
Arquivo incessivel. Nao pode ser destruido. Acione tecla de substituicao, cancelamento ou help.
C:>Interromper programa!
Exclamacao imperativa torna comando irreconhec!vel. Tente interrogacao ou Help.
C:>Suspender programa
Comando ou nome-de-arquivo invalido.
C:>Suspender programa.
Comando ou nome-de-arquivo invalido.
C:>Suspender programa, porra!
Erro de sintaxe.
C:>Criar novo mundo
Disco cheio.
C:>Format c:/s
Atencao: Erro do sistema na ultima operacao E96. Homem e mulher nao estao em Jardim do eden.
4277732 erros.
C:>SCAN Jardim, E.D.E.N. homem-mulher.
Homem-mulher nao encontrado
C:>DEL vergonha.
Vergonha nao pode ser apagada com mal ativado.
C:>DEL livre arbitrio.
Arquivo incessivel. Nao pode ser destruido. Acione tecla de substituicao, cancelamento ou help.
C:>Interromper programa!
Exclamacao imperativa torna comando irreconhec!vel. Tente interrogacao ou Help.
C:>Suspender programa
Comando ou nome-de-arquivo invalido.
C:>Suspender programa.
Comando ou nome-de-arquivo invalido.
C:>Suspender programa, porra!
Erro de sintaxe.
C:>Criar novo mundo
Disco cheio.
C:>Format c:/s
terça-feira, 1 de março de 2011
Assinar:
Postagens (Atom)









