Seguramente será una banalidad pero ya a mis 70 años ya no doy mas de si.
Quisiera poder elegir entre abrir un formulario Biblioform1 o Préstamos a través de dos contraseñas diferentes y el procedimiento es el obtenido de alguno de vosotros.
Sub Password ()
Dim oDlg As Object
Dim Res As Integer
oDlg = CargarDialogo( "Standard", "Dialog1" )
Do
Res = oDlg.execute()
If Res = 1 Then
If Not (oDlg.getControl("txtContra").Text = "123456") Then
Res = 0
co1 = co1 + 1
oDlg.getControl("txtContra").Text = ""
End If
If co1 > 3 Then
Res = 1
End If
End If
Loop While Res = 0
oDlg.dispose()
Dim Control as Object
Control = ThisDatabaseDocument.CurrentController
If Not Control.IsConnected Then Control.Connect
ThisDatabaseDocument.FormDocuments.GetByName("Biblioform1").Open
'ThisDatabaseDocument.FormDocuments.GetByName("Prestamos").Open
End Sub
Gracias de antemano
Última edición por Edu9 el Mar Nov 02, 2021 6:25 am, editado 1 vez en total.
Sub Password ()
Dim oDlg As Object
Dim Res As Integer
Dim co1 As Integer
Dim sForm As Strinng
oDlg = CargarDialogo( "Standard", "Dialog1" )
Do
Res = oDlg.execute()
If Res = 1 Then
sForm = oDlg.getControl("txtContra").Text
If Not (sForm = "123456") Or Not (sForm = "56789") Then
Res = 0
co1 = co1 + 1
oDlg.getControl("txtContra").Text = ""
End If
If co1 > 3 Then
Res = 1
End If
End If
Loop While Res = 0
oDlg.dispose()
Dim Control as Object
Control = ThisDatabaseDocument.CurrentController
If Not Control.IsConnected Then Control.Connect
If sForm = "123456" Then
ThisDatabaseDocument.FormDocuments.GetByName("Biblioform1").Open
End If
If sForm = "56789" Then
ThisDatabaseDocument.FormDocuments.GetByName("Prestamos").Open
End If
End Sub
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Sub Password ()
Dim oDlg As Object
Dim Res As Integer
Dim co1 As Integer
Dim sForm As String
oDlg = CargarDialogo( "Standard", "Dialog1" )
Do
Res = oDlg.execute()
If Res = 1 Then
sForm = oDlg.getControl("txtContra").Text
If Not (sForm = "123456") Or Not (sForm = "56789") Then
Res = 0
co1 = co1 + 1
oDlg.getControl("txtContra").Text = ""
End If
If co1 > 3 Then
Res = 1
End If
End If
Loop While Res = 0
oDlg.dispose()
Dim Control as Object
Control = ThisDatabaseDocument.CurrentController
If Not Control.IsConnected Then Control.Connect
If sForm = "123456" Then
ThisDatabaseDocument.FormDocuments.GetByName("Biblioform1").Open
End If
If sForm = "56789" Then
ThisDatabaseDocument.FormDocuments.GetByName("Prestamos").Open
End If
End Sub
He tratado de buscar la causa pero no la encuentro.
Gracias por tu paciencia y tu rapidez.
RESUELTO
Gracias a tí RMG resolví mi problema, tu orientación era buena pero incorrecta pues en la toma de decisión (Or) me generaba error y lo que hice al final fue añadir otra linea If debajo de la primera, el procedimiento queda así:
Global co1 As Integer
Sub Password ()
Dim oDlg As Object
Dim Res As Integer
Dim sForm As String
oDlg = CargarDialogo( "Standard", "Dialog1" )
Do
Res = oDlg.execute()
If Res = 1 Then
sForm = oDlg.getControl( "txtContra" ).Text
If Not (sForm = "123456") Then 'AQUI SE CAMBIA LA CONTRASEÑA
If Not (sForm = "56789") Then
Res = 0
co1 = co1 + 1
oDlg.getControl("txtContra").Text = ""
End If
End If
If co1 > 3 Then
Res = 1
End If
End If
Loop While Res = 0
oDlg.dispose()
Dim Control as Object
Control = ThisDatabaseDocument.CurrentController
If Not Control.IsConnected Then Control.Connect
If sForm = "123456" Then
ThisDatabaseDocument.FormDocuments.GetByName("Biblioform1").Open
End If
If sForm = "56789" Then
ThisDatabaseDocument.FormDocuments.GetByName("Prestamos").Open
End If
End Sub