[RESUELTO] Cambiar propiedad 'Solo añadir datos'

Discute sobre las herramientas de la base de datos
Responder
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

[RESUELTO] Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Hola,

Necesito cambiar la propiedad 'Solo añadir datos' del formulario dependiendo del botón que lo llame.
Deseo utilizar el mismo formulario para editar y para añadir nuevos registros.
He conseguido posicionar el formulario en un nuevo registro (moveToInsertRow) pero no me interesa conservar el acceso a otros registros desde la barra de navegación.
Existe un desplegable para esto en las propiedades del formulario, solo necesito decidir el valor de este desplegable al abrirlo.

Saludos.
Última edición por mauricio el Lun Abr 30, 2018 6:25 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Sigo atascado.
Nadie puede ayudarme un poco con esto?
Gracias.
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
RMG
Mensajes: 3885
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por RMG »

Hola,

Lo simple mejor que lo complicado. Dos formularios, uno solo para introducir datos y otro para consultar, y que cada botón abra un formulario. Respecto a cambiar la propiedad solo introducir datos por mi parte no te puedo ayudar.

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)
Longi
Mensajes: 811
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por Longi »

Buenas!

Mira a ver si esto te vale:

Código: Seleccionar todo

Sub Datos(Event)

    Form=Event.Source.Model.Parent

    form.AllowInserts= "False"
    Form.AllowDeletes= "False"
    Form.AllowUpdates= "False"

End sub 
Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Gracias por vuestras respuestas.

Para RMG: Mantener las modificaciones a largo plazo en dos formularios, aparentemente gemelos, resulta mucho más complicado que en uno solo.

Para Logni: Estas propiedades son las primeras que probé, no deshabilitan los botones de navegación de la barra, no funcionan como la propiedad "Solo Añadir Datos". Yo uso los valores lógicos True/False sin comillas.

Saludos.
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
Longi
Mensajes: 811
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por Longi »

Buenas!
A mi sí que me funciona según está.
Otra posibilidad es inhabilitar cada uno de los controles como te pongo en este código, que no inhabilita botones, porque cuando lo hice no me lo planteé, pero puedes añadirlos siguiendo el ejemplo:

Código: Seleccionar todo

    oDrawPage = ThisComponent.DrawPage                                                         ' Página de dibujo
    For i = 0 to oDrawPage.Count - 1                                                           ' Recorremos todas los elementos de dibujo del documento
    oShape = oDrawPage.getByIndex(i)                                                           ' Elemento de dibujo a inspeccionar en este momento
    If oShape.name="Marco1" Then                                                               ' Si se llama Marco1
    oShape.setPropertyValue("BackColor", RGB(204,255,204))                                     ' Aplicamos color
    End if                                                                                     ' Acabamos la condición
    next                                                                                       ' Vamos al siguiente elemento de dibujo

	oForm = Evento.Source                                                                      ' El formulario activo
	Controles = oForm.getCount()-1                                                             ' Número total de controles del formulario
 
    For i=0 to Controles                                                                       ' Ciclo que recorre todos los controles
	Control = oForm.getByIndex(i)                                                              ' Control que toca en este momento
                             
	If Control.supportsService("com.sun.star.form.component.TextField") Then                   ' Si el control es de texto..
	'oShape.layerID=2
	Control.enabled = False                                                                    ' Lo deshabilitamos
    End If                                                                                     ' Acabamos la condición
    If Control.supportsService("com.sun.star.form.component.ComboBox") Then                    ' Si el control es un ComboBox..
	Control.enabled = False                                                                    ' Lo deshabilitamos
    End If                                                                                     ' Acabamos la condición
	If Control.supportsService("com.sun.star.form.component.ListBox") Then                     ' Si el control es un listBox
	Control.enabled = False                                                                    ' Lo deshabilitamos
    End If                                                                                     ' Acabamos la condición
	If Control.supportsService("com.sun.star.form.component.GridControl") Then                 ' Si el control es un control de tabla...
	Control.enabled = False                                                                    ' Lo deshabilitamos
    End If                                                                                     ' Acabamos la condición
    Next                                                                                       ' Pasamos al siguiente control
A ver si esto te va mejor.
Otro saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Hola,

Me refería a deshabilitar algunos controles de la barra de navegación, no del formulario, sobre todo los referentes a la navegación entre registros. Esto sería una posible solución, aunque no es la idea original.
No puedo ocultar la barra porque contiene otros botones personalizados que quiero mantener activos.

Saludos.
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
Longi
Mensajes: 811
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por Longi »

Puedes ocultar la barra y en su lugar pones botones de acción hechos por ti, de tal manera que solo manejas los registros con los botones que hagas tu, y la barra la ocultas.
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Gracias por la ayuda.
Sería mi última opción. Las mismas acciones que en modo edición, pero con otro tipo de botones no resulta muy 'elegante'.
Para que el usuario se sienta cómodo debería tener un aspecto similar a la barra original, es importante mantener una interfaz similar en toda la aplicación. Intentar imitar esta falsa barra de navegación puede ser complicado.
Creo que sería mejor crear una nueva barra solo para cuando abro en modo añadir, donde muchos botones fueran simplemente imágenes sin acción asignada para simular que están deshabilitados.

En cualquier caso, me parece que es complicarse la vida inútilmente, yo solo necesito cambiar un True por False desde código al cargar el form, en lugar del modo diseño.

Saludos.
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
Longi
Mensajes: 811
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por Longi »

La opción más razonable es la de RMG, pero lo que yo sugería es que el formulario no tenga barra de ningún tipo, y que hagas botones para las opciones que tiene la barra.
Después podrás dejar inutilizado cada botón que quieras con la macro (por ejemplo según el nombre), y dejas el botón para inactivar todo lo demás como activo. Luego necesitarías otra macro igual para reactivarlos. El aspecto sería el mismo en la primera opción que en la segunda, salvo que todo queda como difuminado.
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Longi
Mensajes: 811
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por Longi »

Encontré esto:

Código: Seleccionar todo

Sub sDesactiva(Event As Object)
   Dim oForm As Object
   Dim vRow As Integer
   oForm=Event.Source.Model.Parent
   If oForm.IsModified And Not oForm.IsNew Then oForm.CancelRowUpdates
   oForm.AllowDeletes=Not(oForm.AllowDeletes)
   oForm.AllowInserts=oForm.AllowDeletes
   oForm.AllowUpdates=oForm.AllowDeletes
   vRow=oForm.Row
   oForm.Reload
   oForm.Absolute(vRow)
End Sub
El hilo es https://forum.openoffice.org/es/forum/v ... =33&t=3590
El autor es Cascabel, así que ofrece todas las garantías posibles.

Otro saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Gracias por las respuestas.

Parece que no es lo que necesito, este código al parecer permite o deniega las actualizaciones.
Lo que quiero es abrir en modo añadir registro o en modo editar, me da igual hacerlo con la orden de abrir el formulario o luego una vez abierto cambiarle el modo de trabajo.

Saludos.
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
Avatar de Usuario
JoseJuan
Mensajes: 34
Registrado: Mié Abr 04, 2018 10:41 pm
Ubicación: Valencia (España)

Re: Cambiar propiedad 'Solo añadir datos'

Mensaje por JoseJuan »

Lo he solucionado con algo parecido a esto:

Código: Seleccionar todo

Sub ToggleAddDataOnly(oEv as object)
    Dim oForm as object

    oForm = oEv.Source.Model.Parent
    If oForm.IgnoreResult = TRUE then
      oForm.setPropertyValue("IgnoreResult", FALSE)
    else
      oForm.setPropertyValue("IgnoreResult", TRUE)   ' modo solo añadir
    end if
    oForm.reload
    oForm.moveToInsertRow

End Sub
Gracias a todos por vuestras sugerencias.
libreoffice 5.3.7.2 (x64) en Windows 7 / Libreoffice 6.4.2.2 en Windows 10
RMG
Mensajes: 3885
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: [RESUELTO] Cambiar propiedad 'Solo añadir datos'

Mensaje por RMG »

Gracias por compartirlo.

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)
Responder