Programación General > Visual Basic 6.0 e inferiores

 Re: Problema. URGENTE POR FAVOR

<< < (2/2)

Jaume:
J.M. Disculpa si he dado la impresión de molestarme. De ningún modo me molesta que comenten mis respuestas o que las mejoren. Puede que haya sonado mal, puede por que lo estoy haciendo desde el trabajo y lo he escrito un poco deprisa.

Ya te he comentado que tu respuesta me parece correcta, es más, mis aplicaciones tienen un sistema parecido de usuario y password.

Solo he querido matizar nuestras visiones, para que ROBER.29 vea las diferencias entre nuestros puntos de vista.

Tu has propuesto uno más complejo, pero que en mi opinión, si no es que haces este último control de máquina que comentas en el último mensaje, acarrea el mismo problema que el mio, puesto que se podrá ejecutar el programa desde tantas máquinas como quieras sabiendo un nombre de usuario y una contraseña.

Solo pretendo mejorar las opiniones que vamos dando.

:good:

Salu2

JuanK:
Hola, asi como de novedad estoy por aca metiendo la cucharada.
Segun entendi tu pregunta y espero no entenderla mal lo que más te podria preocupar es que usen la liscencia en màs de  17 equipos.

Aca en donde trabajo tenemos una liscencia asi..y se se maneja como se muestra a continuacion:

Resulta que solo hay 30 liscencias del aplicativo, asi que el proveedor genero una tabla en la base de datos con 17 ids permitidos, cada id esta representado por la direccion ip de la maquina que tiene liscencia asi que nunca se puede utilizar una liscencia en una maquina que no tenga una ip registrada.

Claro que como dijo jaume esto genera mantenimientos pero en el caso de mi empresa esto se maneja asi:

Resulta que el proveedor nos da acceso a todas las bases de datos del software es decir usuarios, permisos, otras tablas etc... con exepcion de una base de datos de liscencias, de la cual solo tienen acceso ellos y logicamente el software, cada vez que hemos necesitado actualizar un registro, como por ejemplo que la maquina con liscencia cambie de IP, les hemos enviado la solicitud por e-mail, y a vuelta ellos nos envian un EXE que trae enbebido un script con las modificaciones pertinentes en esta tabla..este exe nunca pesa mas de 10k, y como son solo 17 liscencias, lo mas que hace el proveedor es hacer un query para modificar 17 registros... eso es siendo muy exagerado ya que por lo general solo  se modifica 1 registro.

Creo que en tu caso esto seria muy optimo ya que nos comentas que solo son 30 liscencias, si fueran 3000 seria tenaz, pero no son 3000:P espero haberles servido de ayuda.

hasta pronto.

J.M.Movilla:
Este es un problema propio de los foros; en un chat no te ves la cara, pero al menos respondes en directo y no da tiempo a malas interpretaciones...
Porque yo en este caso he empezado diciéndote "sin acritú..." en plan de gracia, pero quizá tú lo hayas interpretado como que veo acritud en tu mensaje anterior, lo cual no es así.

En resumen, que los dos estamos de acuerdo, y que a Roberto se lo estamos complicando con nuestros temas y el nuevo de Juank... Va a tener que decidir lo que mejor le vaya.

Un afectuoso saludo

HurryCrack:
Hola Rober no se si esto te servira pero no he encontrado nada mas simple y facil de usar para IMPEDIR LA EJECUCION DE UN PROGRAMA EN USO. Solo debes convertirlo a 17 programas en uso, fale?
Entiendo ke sea un problema grabe, ya ke se estan aprobechando de algo ke no es suyo.

' Para que funcione el codigo debe estar compilado en .EXE

If App.PrevInstance = True Then
     MsgBox "Este programa ya esta en ejecución !", vbCritical, "Error"
End
End if


Espero te sea de ayuda, sino es ke no se como detectas la ejecucion de tu programa sin utilizar API'S de windows.
Tambien supongo ke sera demasiado tarde para recomendarte ke ese tiop de programas deben hacerse en el formato CLIENTE/SERVIDOR lo cual te ahorraria muchos kebraderos de cabeza.
Por cierto no se como funciona eso de tener un programa en un servidor y crearle X accesos directos, no te da ningun tipo de conflicto? bueno ya te digo ke no lo veo. Si necesitais algo andare por aki, un saludo.:hippi:

ROBER.29:
Muchas gracias por vuestra ayuda. Al final lo he solucionado comprobando cuantas personas están conectadas a la base de datos.

En el form load del formulario conecto con la base de datos y luego compruebo cuantas personas hay conectadas con la siguiente función:

Private Sub control_licencias(ByVal conexion As String)
    Dim Cn As New ADODB.Connection, Rs As New ADODB.Recordset
    Dim cont As Integer
    Const JET_SCHEMA_USERROSTER As String = "{947bb102-5d43-11d1-bdbf-00c04fb92675}"
   
    Cn.Open conexion
    Set Rs = Cn.OpenSchema(adSchemaProviderSpecific, , JET_SCHEMA_USERROSTER)
   
    cont = 0
    While Not Rs.EOF
        If Rs!CONNECTED Then
            cont = cont + 1
        End If
        Rs.MoveNext
    Wend
   
    If cont > 17 Then
        FrmMensaje.ver_botones 1
        FrmMensaje.lblInformacion.Caption = "No hay ninguna licencia libre."
        FrmMensaje.Show
        error = True
        Unload FrmRecorder
    End If
   
    Rs.Close: Set Rs = Nothing
    Cn.Close: Set Cn = Nothing
End Sub

En el caso de que haya más de 17 personas no le djo seguir ejecutando la aplicación.

Gracias a todos.

Saludos,
Roberto García

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa