Actualizacion de Base de Datos desde OpenCalc

¿Nuevo en Apache OpenOffice? ¿No sabe cómo comenzar o dónde hacer su pregunta? ¡Este es el lugar!
Reglas del Foro
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
Responder
santiagobruno
Mensajes: 3
Registrado: Mié Ago 22, 2018 11:26 am

Actualizacion de Base de Datos desde OpenCalc

Mensaje por santiagobruno »

Hola! Buenas tardes a todos!

Esta es mi primer consulta en el foro. He estado intentando replicar el programa que desarrolla Mauricio en su guìa "AprendiendoOOoBasic".

Llegado al momento de tener que generar una Macro que me permita, a travez de su ejecuciòn, actualizar registros en una base de datos he tenido inconvenientes.

El còdigio que he creado es el siguiente:

Código: Seleccionar todo


	Sub cmdActualizar_Clic()
	Dim sSQL As String

		iSel = lstClientes.getSelectedItemPos
		sClave = txtClave.getText
		sNombre = txtNombre.getText
		sInfo = "Si actualiza los datos del cliente " & sNombre & " con clave " & sClave & " los datos sobreescritos no podrán recuperarse " & Chr(13) & Chr(13) & "¿Está seguro de continuar?"
		iRes = MsgBox( sInfo, 36,"Actualizar cliente" )
		If iRes = 6 Then

			If ValidarDatos() Then
	                sSQL = "UPDATE ""Clientes"" SET ""Nombre"" =" & sNombre & " WHERE ""Id"" = " & sClave
	                Call ActualizarDatos( oDatos, sSQL )
				'Activamos y desactivamos los demás controles necesarios
				cmdEditar.setEnable( True )
				cmdEliminar.setEnable( True )
				lstClientes.setEnable( True )
				cmdNuevo.setEnable( True )
				cmdSalir.setEnable( True )
				cmdGuardar.setEnable( False )
				cmdCancelar.setEnable( False )
				'Desactivamos los cuadros de texto
				Call ActivarCuadrosTexto( False )
	
				lstClientes.removeItems( 0, lstClientes.getItemCount )			
		'		olstClientes.removeItems( 0, olstClientes.getItemCount )
				Call TraerClientes( oDatos )
			
			End If
			
		EndIf
			
	End Sub



Cuando lo acciono (lo he asociado a un boton) me larga el error siguiente:

"Error en tiempo de ejecuciòn de BASIC.
Se ha producido una excepciòn
Type: com.sun.star.sdbc.SQLException
Message: Column not found: NuevoNombre"

donde "NuevoNombre" es el dato que vendrìa a reemplazar al anterior y se encuentra en un textbox dentro del cuadro de dialogo desde el que manejo la base de datos en Calc.

Supongo que mi error se encuentra en la setencia sSQL:

sSQL = "UPDATE ""Clientes"" SET ""Nombre"" =" & sNombre & " WHERE ""Id"" = " & sClave

ya que si la reemplazo por

sSQL = "UPDATE ""Clientes"" SET ""Nombre""='Charly' WHERE ""Id""=" & sClave

funciona perfectamente.

La diferencia es que en esta ultima sentencia sSQL el nombre esta fijo en 'Charly' mientras que lo que yo necesitarìa es que se pueda extraer desde el textBox.

He intentado buscar en el foro algo parecido o el codigo anexo que Mauricio menciona en su manual que viene adjunto al mismo pero no encontrado ni uno ni lo otro.

Desde ya muchas gracias!

Saludos para toda la comunidad!
Santiago Bruno
Apache OpenOffice 4.1.5
Windows
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Actualizacion de Base de Datos desde OpenCalc

Mensaje por mauricio »

Hola...

Te has respondido tu mismo... falta que concatenes las comillas simples a la variable, para que quede más o menos así:

Código: Seleccionar todo

sSQL = "UPDATE ""Clientes"" SET ""Nombre"" ='" & sNombre & "' WHERE ""Id"" = " & sClave
Prueba y nos cuentas...

P.D. Si estas empezando a programar, te recomiendo mucho aprender Python en vez del artrítico Basic...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
santiagobruno
Mensajes: 3
Registrado: Mié Ago 22, 2018 11:26 am

Re: Actualizacion de Base de Datos desde OpenCalc

Mensaje por santiagobruno »

Muchisimas gracias Mauricio!

Aprovecho para agradecer el tiempo que has dedicado a tu guia, es una excelente herramienta de aprendizaje.

Y ya que estoy.. me podrias responder a la siguiente inquietud que me surge a partir de leer el P.D. que has dejado: Con Python podría hacer todo lo que aprendemos con tu guia? Es decir, puede reemplazar totalmente el lenguaje de oBasic???

Gracias nuevamente!
Santiago Bruno
Apache OpenOffice 4.1.5
Windows
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Actualizacion de Base de Datos desde OpenCalc

Mensaje por mauricio »

santiagobruno escribió:Con Python podría hacer todo lo que aprendemos con tu guia? Es decir, puede reemplazar totalmente el lenguaje de oBasic???
No solo puedes hacer "todo" lo que haces con Basic, si no además, donde termina Basic, Python apenas va empezando, y lo mejor... aquí estoy para resolver sus dudas de Python... :lol:
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
santiagobruno
Mensajes: 3
Registrado: Mié Ago 22, 2018 11:26 am

Re: Actualizacion de Base de Datos desde OpenCalc

Mensaje por santiagobruno »

Hola Mauricio! Buen día! En base a tu sugerencia, quisiera consultarte por algun manual que conozcas que me permita aprender python orientado a Openoffice o Libreoffice. Desde ya muchas gracias por tu sugerencia!

Saludos!
Santiago Bruno
Apache OpenOffice 4.1.5
Windows
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Actualizacion de Base de Datos desde OpenCalc

Mensaje por PepeOooSevilla »

Hola.

Puedes empezar por (de nuestro compañero mauricio):
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Responder