CONTAGEM DE DIAS VB6 - 30 DIAS
Boa tarde Amigos... Feliz natal...
estou tentando bolar uma funcao em vb6 para contagem de dias, o que preciso na verdade é que uma funcao seja executada a cada 30 dias ou a cada virada de mes...indiferente se fechar o software, ele precisara continuar contando apos ser aberto novamente.....
para que nao possa voltar a data do micro to usando o nslock, ate iria usar seu contador de userdays...mas nao sei como zera-lo...pois a cada 30 dias a contagem precisa recomecar...
alguem teria alguma ideia?
obrigado!
estou tentando bolar uma funcao em vb6 para contagem de dias, o que preciso na verdade é que uma funcao seja executada a cada 30 dias ou a cada virada de mes...indiferente se fechar o software, ele precisara continuar contando apos ser aberto novamente.....
para que nao possa voltar a data do micro to usando o nslock, ate iria usar seu contador de userdays...mas nao sei como zera-lo...pois a cada 30 dias a contagem precisa recomecar...
alguem teria alguma ideia?
obrigado!
Quando preciso usar um número de dias para autorizar o uso do sistema, eu costumo utilizar uma página php na Internet para fazer essa validação. Dessa forma, não há como essa data ser alterada no computador aonde o sistema está. Veja um pequeno artigo que escrevi sobre isso no meu blog criquio.wordpress.com. O exemplo do artigo está em Access/VBA mas pode ser facilmente convertido para qualquer outra linguagem E para a contagem de dias você pode guardar a data da última contagem e fazer algo como DataAtual - UltimaData ou então utilizar o DateAdd para fazer o cálculo:
Em VBA: DateAdd([Ô]d[Ô], 30, Date)
Em VB: Mid(DateAdd(DateInterval.Day, 30, Now), 1, 10)
Em VBA: DateAdd([Ô]d[Ô], 30, Date)
Em VB: Mid(DateAdd(DateInterval.Day, 30, Now), 1, 10)
Pois eh amigo...ideia interessante, o problema eh que isso que to fazendo é para protecao de um sistema, entao se o cara ficar sem internet nao tenho como validar...
se tivesse como zerar o contador do nslock seria ideal...
se tivesse como zerar o contador do nslock seria ideal...
Bom vamos lá para uma duvida em VB6
basta você inserir uma data inicial para se saber se passaram 30 dias veja
a função acima pode ser usada em um timer ou no load do form principal para verificar o tempo
uma data inicial fixa deverá existir, a partir dela todos demais trinta dias serão calculados
mas veja bem os 30 dias nunca serão no ultimo ou primeiro dia do mes, levando em consideração que temos meses com 28, 30 e 31 dias.
se você deseja fazer a verificação a cada virada de mês é mais fácil ainda.
basta coolocar no timer ou load do form o seguinte
If Day(Date) = 1 Then
faz o que você deseja
End If
o exemplo acima vai zerar o contador a cada dia primeiro
basta você inserir uma data inicial para se saber se passaram 30 dias veja
Public Funciton ContagemTempo(dataInicial As Date)
Dim T As Integer
T = Datediff([Ô]d[Ô],datainicial, date) Mod 30
If T = 0 Then
msgbox [Ô]se passaram 30 dias[Ô] [ô]depois é só colocar o que deseja no lugar desta mensagem
End If
End Function
a função acima pode ser usada em um timer ou no load do form principal para verificar o tempo
ContagemTempo([Ô]01/01/2013[Ô])
uma data inicial fixa deverá existir, a partir dela todos demais trinta dias serão calculados
mas veja bem os 30 dias nunca serão no ultimo ou primeiro dia do mes, levando em consideração que temos meses com 28, 30 e 31 dias.
se você deseja fazer a verificação a cada virada de mês é mais fácil ainda.
basta coolocar no timer ou load do form o seguinte
If Day(Date) = 1 Then
faz o que você deseja
End If
o exemplo acima vai zerar o contador a cada dia primeiro
bom dia amigo MARCELO-TREZE....
Cara ta quase...as funcoes acima funcionam, porem encontrei alguns impecilios...na primeira delas o problema eh o seguinte, o cliente abriu o sistema agora, depois so vai abrir daqui 40 dias... se passaram os 30 mais 10, e assim ele nao ira acionar a funcao....
sobre a outra funcao, tb, so funcionaria se abrir no dia 1 de cada mes...to tentando pensa algo em cima das 2 funcoes que sugerisse...
Cara ta quase...as funcoes acima funcionam, porem encontrei alguns impecilios...na primeira delas o problema eh o seguinte, o cliente abriu o sistema agora, depois so vai abrir daqui 40 dias... se passaram os 30 mais 10, e assim ele nao ira acionar a funcao....
sobre a outra funcao, tb, so funcionaria se abrir no dia 1 de cada mes...to tentando pensa algo em cima das 2 funcoes que sugerisse...
OLA AMIGO...
deixei da seguinte forma:
agora sempre que passam 30 dias ou mais ele avisa...so tava tentando entende como a funcao funciona...que calculo ela esta fazendo?
deixei da seguinte forma:
Citação:Public Function ContagemTempo(dataInicial As Date)
Dim T As Integer
T = DateDiff([Ô]d[Ô], dataInicial, Date) < 30
If T = 0 Then
Debug.Print [Ô]foi [Ô] & Time
Else
Debug.Print [Ô] NAO foi [Ô] & Time
End If
End Function
agora sempre que passam 30 dias ou mais ele avisa...so tava tentando entende como a funcao funciona...que calculo ela esta fazendo?
é o seguinte
Datediff retorna a diferença entre duas datas,
Escreve-se a função desta forma
DateDiff(tipo,datainicial, datafinal)
tipo = [Ô]h[Ô] hora, [Ô]n[Ô] minutos, [Ô]s[Ô] segundos, [Ô]d[Ô] dia, [Ô]m[Ô] mes, [Ô]y[Ô] ano.
datainicial = como o próprio nome ja diz uma data inicial
datafinal = tambem como o nome diz uma data final
exemplo
Datediff([Ô]d[Ô],[Ô]01/01/2013[Ô], [Ô]10/01/2013[Ô]) = 10
ou
Datediff([Ô]h[Ô],[Ô]12:00:00[Ô],[Ô]18:00:00[Ô]) = 8
na sua função acima você terá a data inicial (datainicial) e a data do sistema(date), para se tirar os dias
para que tudo funcione como você deseja, o ideal é gravar a primeira data no registro do windows e sempre que o sistema abrir você recupera-la
veja como é fácil
para salvar a data no registro
SaveSetting [Ô]Nome_do_seu_programa[Ô], [Ô]tempo[Ô], [Ô]datainicial[Ô], Text1.Text
para recuperar
Registro = GetSetting ([Ô]nome_do_seu_programa[Ô], [Ô]tempo[Ô], [Ô]datainicial[Ô])
aplicadas ao que você precisa
bom o código acima vai gravar a data inicial no registro do windows e sempre verificará a se a diferença entre a data inicial e a data atual, sendo menor ou iguala a 30 faz X caso contrario faz Y
Datediff retorna a diferença entre duas datas,
Escreve-se a função desta forma
DateDiff(tipo,datainicial, datafinal)
tipo = [Ô]h[Ô] hora, [Ô]n[Ô] minutos, [Ô]s[Ô] segundos, [Ô]d[Ô] dia, [Ô]m[Ô] mes, [Ô]y[Ô] ano.
datainicial = como o próprio nome ja diz uma data inicial
datafinal = tambem como o nome diz uma data final
exemplo
Datediff([Ô]d[Ô],[Ô]01/01/2013[Ô], [Ô]10/01/2013[Ô]) = 10
ou
Datediff([Ô]h[Ô],[Ô]12:00:00[Ô],[Ô]18:00:00[Ô]) = 8
na sua função acima você terá a data inicial (datainicial) e a data do sistema(date), para se tirar os dias
para que tudo funcione como você deseja, o ideal é gravar a primeira data no registro do windows e sempre que o sistema abrir você recupera-la
veja como é fácil
para salvar a data no registro
SaveSetting [Ô]Nome_do_seu_programa[Ô], [Ô]tempo[Ô], [Ô]datainicial[Ô], Text1.Text
para recuperar
Registro = GetSetting ([Ô]nome_do_seu_programa[Ô], [Ô]tempo[Ô], [Ô]datainicial[Ô])
aplicadas ao que você precisa
Private Sub Command1_Click()
Dim Registro As String, T As Integer
[ô] primeiro verificamos se a data inicial existe no registro do windows
Registro = GetSetting([Ô]nome_do_seu_programa[Ô], [Ô]tempo[Ô], [Ô]datainicial[Ô])
If Registro = [Ô][Ô] Then
SaveSetting [Ô]Nome_do_seu_programa[Ô], [Ô]tempo[Ô], [Ô]datainicial[Ô], Date
Else
T = DateDiff([Ô]d[Ô], CDate(Registro), Date)
If T <= 30 Then
Debug.Print [Ô]foi [Ô] & Time
Else
Debug.Print [Ô] NAO foi [Ô] & Time
End If
End If
End Sub
bom o código acima vai gravar a data inicial no registro do windows e sempre verificará a se a diferença entre a data inicial e a data atual, sendo menor ou iguala a 30 faz X caso contrario faz Y
Tópico encerrado , respostas não são mais permitidas