[RESUELTO] Cargar datos en ListBox desde consulta SQL

Discute sobre las herramientas de la base de datos
Responder
Avalonia
Mensajes: 7
Registrado: Lun Mar 26, 2018 9:39 am

[RESUELTO] Cargar datos en ListBox desde consulta SQL

Mensaje por Avalonia »

Hola amigos.

Les expongo mi problema. Tengo un formulario donde se almacenan Actuaciones llevadas a cabo por personas, el cual tiene incrustado un listbox (combobox) donde deben aparecer insertadas todas las personas existentes en el sistema, las cuales han sido almacenadas en la tabla Personas, el cual tiene asociado formulario del mismo nombre.
Las tablas Personas y Actuaciones, no están relacionadas directamente, existiendo otras relaciones con tablas intermedias.
Es posible que desde el formulario actuaciones se agreguen nuevas personas haciendo llamada desde el mismo al formulario de Personas. Pero a la vuelta, el listbox antes indicado debe contener los datos actualizados, es decir, debe contener las personas que efectivamente están en la tabla personas.
He usado el siguiente código para cargar los datos en el llistbox de forma dinámica, pero me da error, y no acabo de descubrir el motivo:

Código: Seleccionar todo

Sub RefrescaDatosFrmActuaciones (oEvent as Object)
	Dim oForm as Object, oControl as Object
	Dim oStat As Object, oRes As Object
	Dim sSQL as string
	Dim VarItems() As String
	Dim posicion as long

	oControl = oEvent.Source.Model
	oForm = oControl.Parent
	
	sSQL = "SELECT ""DNI"" FROM ""Personas"" ORDER BY ""DNI"" ASC"
	
	oStat = ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement()
	oStat.setPropertyvalue("ResultSetType", com.sun.star.sdbc.ResultSetType.SCROLL_SENSITIVE) 
	oRes = oStat.executeQuery(sSQL)
	posicion = 0
	If Not IsNull(oRes) Then
		While oRes.next
			redim preserve VarItems(posicion)
			VarItems(posicion) = oRes.getString(1) ' DNI
			posicion = posicion + 1
		Wend 
		oControl.ListSource=VarItems() 
	endif
End Sub
En un primer momento, intenté cargar los datos asociándolos directamente a la tabla, en lugar de usar una macro, pero tenía el problema de no actualizarse el listado cuando había cambios en la tabla. Para ello, también usé el siguiente código que se ejecutaba cuando se volvía a activar el foco del diálogo Actuaciones:

Código: Seleccionar todo

Sub RefrescaDatosFrmActuaciones (oEvent as Object)
	oEvent.Source.getDrawPage.getForms.getByIndex(0).getByName("cmbPersonas").refresh()
End Sub
Al no resultar, opté por hacer la carga manual indicada al inicio del post, la cual no he conseguido aún que funcione.

Gracias de antemano por su tiempo.
LibreOffice 5.4 sobre Ubuntu 17.10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Cargar dotos en ListBox desde consulta SQL

Mensaje por RMG »

Hola,

Esto se puede hacer desde las propiedades del listBox Tipo de contenido de la lista = Sql, contenido de la lista despliegas el generador y pones la tabla con los datos, debes poner el campo a visualizar y el ID correspondiente en la consulta. Si haces una búsqueda por el foro tienes bastantes ejemplos. Y en este enlace tienes proyectos donde también lo puedes ver. Y si aún así no lo consigues adjunta un pequeño ejemplo para hacerlo y que tu lo veas.

https://forum.openoffice.org/es/forum/v ... m.php?f=70

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)
Avalonia
Mensajes: 7
Registrado: Lun Mar 26, 2018 9:39 am

[RESUELTO] Cargar datos en ListBox desde consulta SQL

Mensaje por Avalonia »

Hola chicos.

Al final encontré un ejemplo que me ha ayudado bastante con lo que intentaba hacer.
Lo cuelgo aquí, ya que es muy básico y bastante clarificador para aquellos que se encuentren en mi misma situación.

Un saludo!
Adjuntos
relations2listboxes.rar
(34.99 KiB) Descargado 273 veces
LibreOffice 5.4 sobre Ubuntu 17.10
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Cargar datos en ListBox desde consulta SQL

Mensaje por mauricio »

Toma nota de que el tema que se debe marcar como [RESUELTO], es el que abre tu hilo, ahora lo hago por ti, procura hacerlo tu en el futuro.

Saludos y gracias por compartir la solución
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avalonia
Mensajes: 7
Registrado: Lun Mar 26, 2018 9:39 am

Re: [RESUELTO] Cargar datos en ListBox desde consulta SQL

Mensaje por Avalonia »

Ok Mauricio. Te pido disculpas.
Un saludo.
LibreOffice 5.4 sobre Ubuntu 17.10
Responder