[RESUELTO]Como hacer una elección en un procedimiento

Discute sobre las herramientas de la base de datos
Responder
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

[RESUELTO]Como hacer una elección en un procedimiento

Mensaje por Edu9 »

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.

Código: Seleccionar todo

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.
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Como hacer una elección en un procedimiento password

Mensaje por RMG »

Hola,

Prueba esto.

Código: Seleccionar todo

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)
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Como hacer una elección en un procedimiento password

Mensaje por Edu9 »

No sé como agradecerte tu rápida respuesta, RMG. Lo probaré mañana pero seguro que funciona a la perfección. Un abrazo.
LibreOffice 7.2 en Windows 7
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Como hacer una elección en un procedimiento password

Mensaje por Edu9 »

Hola RMG
El procedimeinto se atasca en la linea If Not ( sForm = "123456" ) Or Not ( sForm = "56789" ) Then
y se queda esperando una contraseña.

Código: Seleccionar todo

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.
LibreOffice 7.2 en Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Como hacer una elección en un procedimiento password

Mensaje por RMG »

Hola,

Si no tienes información confidencial, puedes adjuntar un pequeño ejemplo, me temo que te falta el dialogo.

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)
Edu9
Mensajes: 34
Registrado: Mar Ene 16, 2018 12:53 pm

Re: Como hacer una elección en un procedimiento password

Mensaje por Edu9 »

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í:

Código: Seleccionar todo

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
Muchas gracias por tu valiosa ayuda
LibreOffice 7.2 en Windows 7
Responder