RESUELTO: Guardar datos en dos tablas desde formulario

Discute sobre las herramientas de la base de datos
Responder
Luismaux
Mensajes: 10
Registrado: Mar Feb 16, 2021 1:22 pm

RESUELTO: Guardar datos en dos tablas desde formulario

Mensaje por Luismaux »

Hola, llevo poco tiempo utilizando LibreOffice Base pero mucho aprendido con vosotros, cosa que es de agradecer, pero estoy realizando una Base de datos y me he quedado estancado.
Esta base está compuesta de dos tablas con registros iguales, las cuales quiero rellenar introduciendo datos desde un formulario en las dos. Mirando por el foro la única idea que me funciona a medias, es un código que al pulsar un boton guarda los datos en las dos tablas pero en una de ellas los guarda cada registro en una fila diferente y yo necesito que me los guarde todos en la misma fila.
Como no sé si me he explicado adjunto un ejemplo de lo que tengo hasta el momento, por si alguien me supiera indicar cual es el error si es en el código, o si hubiera otra forma de hacerlo.
Muchas gracias de antemano.
Adjuntos
BasePrueba.zip
(11.45 KiB) Descargado 139 veces
Última edición por Luismaux el Jue Feb 18, 2021 11:11 am, editado 1 vez en total.
LibreOffice 7.0.4.2 (+86)
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Guardar datos en dos tablas desde formulario

Mensaje por RMG »

Hola

La macro no es correcta, mira si esta te sirve, además he puesto que cargue el Id que no tenias. Recuerda que solo cargando el Id puedes obtener todos los datos de la tabla relacionada a través de una consulta.
Primero debes guardar el registro, después cargas la tabla2.

Código: Seleccionar todo

Sub InsertcamposEnOtrasTablasNomApell(Evento)
Dim oDeclaracion As Object
Dim sSQL As String
Dim oForm As Object
Dim iId As Integer
Dim sNomApell1 As String
Dim sDomicilio1 As String
Dim sTelefono1 As String
oForm = Evento.Source.Model.Parent
iId = oForm.getByName("IdTabla1").Value
sNomApell1 = oForm.getByName("NomApell1").Text
sDomicilio1 = oForm.getByName("Domicilio1").Text
sTelefono1 = oForm.getByName("Telefono1").Text
oDeclaracion =ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement
'Ordenes SQL a ejecutar
sSQL = "INSERT INTO ""Tbl_2"" (""IdTabla1"", ""Nombre2"", ""Domicilio2"", ""Telefono2"") VALUES (" & iId & ",'" & sNomApell1 & "'," & "'" & sDomicilio1 & "'," &  "'" & sTelefono1 & "')"
oDeclaracion.executeUpdate( sSQL )
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)
Luismaux
Mensajes: 10
Registrado: Mar Feb 16, 2021 1:22 pm

Re: Guardar datos en dos tablas desde formulario

Mensaje por Luismaux »

Hola RMG, muchas gracias por tu rápida respuesta.
He aplicado el código que me das y hay dos problemas, uno es que solo me guarda datos en la Tbl_2, y el Id que guarda, siempre es 0.
¿La solución para guardar en la Tbl_1 podría ser añadiendo esta línea al código pero con las datos de esta tabla?

Código: Seleccionar todo

 sSQL = "INSERT INTO ""Tbl_1"" (""IdTabla1"", ""Nombre1"", ""Domicilio1"", ""Telefono1"") VALUES (" & iId & ",'" & sNomApell1 & "'," & "'" & sDomicilio1 & "'," &  "'" & sTelefono1 & "')"
oDeclaracion.executeUpdate( sSQL )
Para lo del Id no se me ocurre nada, puesto que como es autonumérico, supongo que el problema será que cuando ejecuta la macro y lo guarda el Id no se ha actualizado todavía.
Muchas gracias,
LibreOffice 7.0.4.2 (+86)
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Guardar datos en dos tablas desde formulario

Mensaje por RMG »

Hola,

Como te digo arriba, primero debes guardar los datos en la tabla1, icono de disquete en barra de navegación de formulario, a continuación con el botón grabas los datos en tabla 2.

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)
Luismaux
Mensajes: 10
Registrado: Mar Feb 16, 2021 1:22 pm

RESUELTO: Guardar datos en dos tablas desde formulario

Mensaje por Luismaux »

Es verdad, muchas gracias así va perfecto.
Muy agradecido de la ayuda que dais, muchísimas gracias.
LibreOffice 7.0.4.2 (+86)
Responder