CONTROLE DE USO

NILTON.VIANNA 21/10/2014 10:45:58
#442057
Bom dia colegas,
Alguém me poderia da uma ideia sobre registro do sistema
Tenho um projeto e queria fazer o controle de uso mensal
Exemplo: assim que confirmado o pagamento da mensalidade
Eu enviaria uma chave de ativação para mais 30 ou mais dias de uso,
Pois essa chave não poderia ser repetida (óbvio)

Grato
ARES 23/10/2014 08:47:31
#442107
Amigo,

Certa vez tive a mesma necessidade e, para sana-la eu usei um FTP:

1 passo: o programa interno quando der baixa na duplicata do cliente gera uma nova licença de uso;

2 passo: em um programa interno eu coloquei uma função para gerar informações que são enviadas para um pasta em formato texto
- cnpj do cliente
- e a data limite de uso

3 passo: no programa externo (cliente) no login eu coloquei uma função que avisa ao cliente que o programa esta próximo do vencimento e disponibiliza um botão para liberar licença de uso;

No programa externo na tabela licença eu coloquei os seguintes campos: id - licença - data_atual - bloqueio

4 passo: quando for feito o login no programa externo ele salva a data_atual e verifica se a licença esta com a data maior que a atual;
4.1 é atualizado a data_atual de acordo com a do computador do cliente;
4.1 se ao abrir o programa verificar que a data atual e diferente da data do computador - ou seja o cliente voltou a data para abrir o programa, é verificado se a data_atual é maior que a data do computador e retorna informando que as nadas estão diferentes;
4.2 se ao abrir o programa verificar que a licença esta vencida ele não abre o programa.

5 passo: ao clicar no atualizar ele abre o formulário com o FTP que irá buscar no servidor interno o aquivo texto que ira atualizar o seu programa.

Este FTP poderá ser usado para enviar atualização do programa também.

==================================

Segunda alternativa que estou usando atualmente:

Meu banco de dados esta em [Ô]nuvem[Ô] em um servidor remoto - Mysql
quando dou baixa no pagamento do cliente ele salva as informações necessárias no meu banco de dados em uma tabela específica para a atualização de clientes;
quando o programa do cliente vence (mesmos critérios de avaliação anterior) ele abre uma conexão com o meu banco de dados remoto e verifique cpf ou cnpj do cliente mais uma chave (inventada) que foi salva em cada programa instalado- valida - e faz a prorrogação da sua licença de uso.

===================================

Esta funcionando perfeitamente.
NILTON.VIANNA 23/10/2014 12:24:31
#442119

Obrigado
Ricardo Nantes, pela resposta.
Acho que o ideal é mesmo banco de dados esta em [Ô]nuvem[Ô]

Seria bem mais fácil administrar o mesmo
eu tenho o gerador de registro mais só no caso de formatação.
minha ideia seria enviar uma chave com um tempo de uso, nessa chave eu determinaria um prazo de validade.
vou estudar algo
Grato



ALVAROVB2009 23/10/2014 13:54:38
#442120
ja que vc quer computação nas nuvens, logo o bando de dados do seu cliente também deva estar, ao enviar o boleto e ele não pagar, tire o acesso dele ao banco.

Coloque alguma claúsula no seu sistema que se ele ver determinando campo desabilitado, o sistema não faz mais a inclusão de novos registros, até o pagamento da fatura e toda vez que se da o login, dará a mensagem da pendência
ARES 23/10/2014 17:45:46
#442129
Perfeito!

A chave pode ser a própria data de uso. Quando o cliente fizer a atualização, fará a atualização da data. já usei dessa forma e funcionou perfeitamente.

Veja bem, programa vencendo/vencido o cliente ira tentar baixar uma chave(data) vencida e programa continua bloqueado. Cliente efetua o pagamento e uma nova licença(data) e liberada cliente atualiza e fica mais um mês.

Veja os códigos que usava para validar:

Private Sub heimdall()

On Error GoTo errabrir

If Me.txtlimite = 1 Then
Exit Sub
End If



permicao = Now
permicao1 = Now
mycon.Open [Ô]dsn=asgard_salles[Ô]

Dim mycon1 As New ADODB.Connection
Dim myrs12 As New ADODB.Recordset

With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText
.CommandText = [Ô]Select *from heimdall_security where permitido_ate > [ô][Ô] & Format(permicao, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô] [Ô]
Set myrs = .Execute

.CommandText = [Ô]update heimdall_security set [Ô] & _
[Ô]day_now = [ô][Ô] & Format(permicao, [Ô]yyyy/mm/dd[Ô]) & [Ô][ô][Ô]
.Execute

End With

With myrs
If .EOF And .BOF Then
Set myrs = Nothing
Set mycmd = Nothing
mycon.Close
MsgBox [Ô] O limite de uso do sistema acabou, favor informar ao administrativo[Ô], vbCritical, [Ô]Projeto Asgard[Ô]
Unload Me
Exit Sub
Else

If myrs!permitido_ate <= (permicao + 10) Then

MsgBox [Ô] LICENÇA DE USO DO PROGRAMA[Ô] & vbCrLf & vbCrLf & _
[Ô]Prezado usuário;[Ô] & vbCrLf & vbCrLf & _
[Ô]Informamos que a sua licença de uso vencerá no dia [Ô] & Format(myrs!permitido_ate, [Ô]dd/mm/yyyy[Ô]) & [Ô].[Ô] & vbCrLf & _
[Ô]Pedimos a getileza de informar ao administrativo, caso ao contrário, o programa irá perder toda a sua funcionalidade.[Ô] & vbCrLf & vbCrLf & _
[Ô]Atenciosamente,[Ô] & vbCrLf & _
[Ô]Suporte Asgard[Ô], vbInformation, [Ô]Asgard[Ô]

End If
End If

End With


saida:
Set myrs = Nothing
Set rs = Nothing
Set mycmd = Nothing
mycon.Close


errabrir:
With Err
If .Number <> 0 Then
MsgBox [Ô]Erro ao entrar no sistema.[Ô], vbCritical, [Ô]Objetivo[Ô]
.Number = 0
Me.txtNome.SetFocus
Unload Me
Exit Sub
End If
End With
End Sub

Private Sub heimdall_time()
Dim permicao2 As Date

[ô]On Error GoTo errabrir


permicao2 = Format(Now, [Ô]YYYY/MM/DD[Ô])

mycon.Open [Ô]dsn=asgard_salles[Ô]

With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText
.CommandText = [Ô]Select *from heimdall_security where day_now > [ô][Ô] & Format(permicao2, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] [Ô]
Set myrs = .Execute

End With

With myrs
If .EOF And .BOF Then
Set myrs = Nothing
Set mycmd = Nothing
mycon.Close
Exit Sub
Else
Me.txtlimite = [Ô]1[Ô]
MsgBox [Ô] O limite de uso do sistema acabou.[Ô] & vbCrLf & _
[Ô]Favor não alterar a data do computador.[Ô], vbCritical, [Ô]Projeto Asgard[Ô]
End If
End With


saida:
Set myrs = Nothing
Set mycmd = Nothing
mycon.Close


errabrir:
With Err
If .Number <> 0 Then
MsgBox [Ô]Erro ao entrar no sistema.[Ô], vbCritical, [Ô]Objetivo[Ô]
.Number = 0
Me.txtNome.SetFocus
Exit Sub
End If
End With
End Sub



no command para entrar no programa

Private Sub cmdEntrar_Click()

heimdall_time

If Me.txtlimite = [Ô]0[Ô] Then
heimdall
usuario
usuario_bloqueia_nivel
Entrar
Else
MsgBox [Ô]Limite de uso esgotado.[Ô] & vbCrLf & _
[Ô]Favor entrar em contato com o suporte.[Ô], vbCritical, [Ô]Asgard[Ô]
Exit Sub
End If

End Sub

NILTON.VIANNA 23/10/2014 18:11:25
#442130


Interesante seu raciocino
Vou fazer o teste

Grato
NILTON.VIANNA 26/10/2014 00:37:10
#442163

ARES
Não entendi uns comandos
Grato

Private Sub cmdEntrar_Click()
heimdall_time
If Me.txtLimite = [Ô]0[Ô] Then
heimdall
usuario <-------------------- ?? oque é Label, txt variavel
usuario_bloqueia_nivel
Entrar <-------------------- ?? oque é Label, txt variavel
Else
MsgBox [Ô]Limite de uso esgotado.[Ô] & vbCrLf & _
[Ô]Favor entrar em contato com o suporte.[Ô], vbCritical, [Ô]Asgard[Ô]
Exit Sub
End If
End Sub
ARES 26/10/2014 13:18:28
#442165
Amigo, bom dia!

Este comando é no meu formulário de entrada. Eu o uso no meu programa por isso que tem estas informações.

use-o da seguinte maneiro:

Private Sub cmdEntrar_Click()

heimdall_time

If Me.txtLimite = [Ô]0[Ô] Then

heimdall

Else

MsgBox [Ô]Limite de uso esgotado.[Ô] & vbCrLf & _
[Ô]Favor entrar em contato com o suporte.[Ô], vbCritical, [Ô]Asgard[Ô]
Exit Sub

End If

End Sub
Tópico encerrado , respostas não são mais permitidas