[RESUELTO]Consulta que actualice tabla a partir de otra tabl

Discute sobre las herramientas de la base de datos
Responder
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

[RESUELTO]Consulta que actualice tabla a partir de otra tabl

Mensaje por estudioiar »

Buenos dias: Tengo una tabla llamada Sumarios en la que hay dos campos, uno llamado Sumariante y el otro idsumariante.
Por su parte tengo otra tabla en la que estan los noimbres de los sumariantes que llenan el campo Sumariante de la tabla Sumarios. Esta tabla Sumariantes tiene asignado a cada uno de los nombres un Id
Lo que necesitaria es hacer una consulta que me permita llenar el campo idsumariante de la tabla sumarios de acuerdo al nombre seleccionado, con el Id de la tabla Sumartiantes.

Ejemplo Tabla Sumariantes:

Nombre Id
Nacho 1
Pablo 2

Si en la tabla Sumarios, en el campo Sumariante figura Nacho, que la consulta ponga en idsumariante el numero 1, o sea que busque el numero de id de la tabla Sumariantes y la ponga en la tabla sumarios de acuerdo al sumariante seleccionado.

Espero que se entienda.
Muchas gracias
Última edición por estudioiar el Mié Mar 16, 2011 4:05 pm, editado 1 vez en total.
Open Office 3.2 - Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por mauricio »

Hola...

¿Es la misma pregunta que hiciste aquí: http://user.services.openoffice.org/es/ ... 25&start=0 ?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por estudioiar »

No. Porque en la otra pregunta quería hacerlo directamente desde un formulario. Para eso use el ejemplo de Gesfactura, pero lo que ahora quiero hacer es actualizar los datos a traves de una consulta SQL. Lo puedo hacer desde el Ejecutor de Comandos SQL, pero la idea era hacerlo a través de una consulta que se ejecutara al cerrar el formulario.

La consulta SQL la tengo. es UPDATE Sumarios, Sumariantes SET Sumarios.IdSumariante = [Sumariantes]![Id]
WHERE ((([Sumarios]![Sumariante])=[Sumariantes]![Sumariante]));

pero no puedo ejecutarla como consulta ni se como hacerlo desde una macro.

Asi que a la pregunta si es sobre el mismo tema, la respuesta es si. Pero no es la misma pregunta ya que lo que busco es modo diferente de llegar al resultado deseado.

Se agradece la ayuda
Open Office 3.2 - Windows 7
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por estudioiar »

Mejor dicho, ahora que lo pienso es como puedo hacer una mcro que ejecute la siguiente consulta SQL:

UPDATE Sumarios, Sumariantes SET Sumarios.IdSumariante = [Sumariantes]![Id]
WHERE ((([Sumarios]![Sumariante])=[Sumariantes]![Sumariante]));


Muchas gracias
Open Office 3.2 - Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por RMG »

Hola,

En Gesfactura tienes el ejemplo, la macro esta asignada en el formulario forArticulos al botón cambiar precios.

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)
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por estudioiar »

La acabo de ver y de probar. Sin embargo me sale un error. La macro me quedó asi

Código: Seleccionar todo

Sub ActualizarId( Evento )
Dim oCon As Object
Dim oStat As Object
Dim sSQL As String
Dim oRes As Object
	'Conecto con la base
	oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
	oStat = oCon.CreateStatement
	'Actualizo todos los datos en una consulta
	sSQL = "UPDATE ""Sumarios"" SET ""IdSumariante"" = ""Sumariantes.Id"" WHERE ""Sumarios.Sumariante""=""Sumariantes.Sumariante"""

	oRes = oStat.ExecuteQuery(sSQL)
End Sub
Sin embargo me tira el error: Corchetes no validos en el nombre Sumariantes.Id
Open Office 3.2 - Windows 7
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por estudioiar »

Modifique la consulta, y la macro quedó asi:
Sub ActualizarId( Evento )
Dim oCon As Object
Dim oStat As Object
Dim sSQL As String
Dim oRes As Object
'Conecto con la base
oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
oStat = oCon.CreateStatement
'Actualizo todos los datos en una consulta
sSQL = "UPDATE Sumarios, Sumariantes SET Sumarios.IdSumariante = [Sumariantes]![Id] WHERE ((([Sumarios]![Sumariante])=[Sumariantes]![Sumariante]));"


rem sSQL = "UPDATE ""tabArticulos"" SET ""Precio""=""Precio""+ ( ""Precio""*"& Aumento &" / 100 ),""FechaActualizacion""=CURDATE() WHERE ""IDFamilia"" = "&Familia
oRes = oStat.ExecuteQuery(sSQL)
End Sub
Los cambios los hace.
Sin embargo tira el siguiente error en la linea oRes= oStat.ExecuteQuery(sSQL) : La ejecucion de la consulta no regresa un resultado válido

Muchas gracias
Open Office 3.2 - Windows 7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por RMG »

Hola,

Creo que el problema es de la SQL. No te puedo asegurar si se pueden actualizar campos donde intervienen dos tablas, nunca lo he probado, pero lo de los corchetes lo tienes mal, revisalo.

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)
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por estudioiar »

El tema es que la consulta la hace, los datos los actualiza, pero tira ese error. Dejo el tema como pendiente. Lo voy a seguir estudiando.

Muchas gracias
Open Office 3.2 - Windows 7
estudioiar
Mensajes: 47
Registrado: Sab Feb 12, 2011 2:17 pm

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por estudioiar »

Ya encontre la forma de hacerlo. Se puede hacer una consulta SQL con dos tablas. El tema esta en que en vez de ExecuteQuery debe decir ExecuteUpdate.

La macro quedaría asi

Código: Seleccionar todo

Sub ActualizarId( Evento )
Dim oCon As Object
Dim oStat As Object
Dim sSQL As String
Dim oRes As string
'Conecto con la base
oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
oStat = oCon.CreateStatement
'Actualizo todos los datos en una consulta
sSQL = "UPDATE Sumarios, Sumariantes SET Sumarios.IdSumariante = [Sumariantes]![Id] WHERE ((([Sumarios]![Sumariante])=[Sumariantes]![Sumariante]));"


oRes = oStat.ExecuteUpdate(sSQL)

End Sub
Open Office 3.2 - Windows 7
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Consulta que actualice tabla a partir de valor de otra t

Mensaje por mauricio »

Hola...

ExecuteQuery es para hacer consultas...
ExecuteUpdate es para hacer actualizaciones...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
arca91
Mensajes: 6
Registrado: Sab Oct 28, 2017 3:24 pm

Re: [RESUELTO]Consulta que actualice tabla a partir de otra

Mensaje por arca91 »

Hola estoy intentando usar esta misma macro adaptada a mi base pero me da error. Tengo dos tablas TABLA_PALET y TABLA REGISTO. En las dos tablas tengo los campos de IDPALET y UBICACION. Lo que necesito es que con la macro me rellene el campo ubicacion de la tabla registo. para ello tiene que comparar los IDPALET de las dos tablas y copiar el dato de la UBICACION de la TABLA_PALET a la TABLA_REGISTRO.


End Sub
Sub ActualizarTABLA( Evento )
Dim oCon As Object
Dim oStat As Object
Dim sSQL As String
Dim oRes As string
'Conecto con la base
oCon = ThisDatabaseDocument.CurrentController.ActiveConnection
oStat = oCon.CreateStatement
sSQL = "UPDATE TABLA_PALET, TABLA_REGISTRO SET TABLA_PALET.IDPALET = [TABLA_REGISTRO]![IDPALET] WHERE ((([TABLA_PALET]![UBICACION])=[TABLA_REGISTRO]![UBICACION]));"


oRes = oStat.ExecuteUpdate(sSQL)

End Sub

gracias por la ayuda
OPPENOFFICE 4.1.1 en WINDOWS
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: [RESUELTO]Consulta que actualice tabla a partir de otra

Mensaje por RMG »

Hola,

No es conveniente reabrir un viejo tema y menos si esta solucionado, pues tienes menos posibilidades que te puedan ayudar. De todas formas prueba con esto y si no te funciona abres un nuevo hilo con un pequeño ejemplo. Por supuesto pon las comillas correspondientes de la macro

update TABLA_REGISTRO set UBICACION = (select UBICACION from TABLA_PALET where IDPALET = TABLA_REGISTRO.IDPALET)

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)
arca91
Mensajes: 6
Registrado: Sab Oct 28, 2017 3:24 pm

Re: [RESUELTO]Consulta que actualice tabla a partir de otra

Mensaje por arca91 »

Muchas gracias funciona perfectamente.

Saludos
OPPENOFFICE 4.1.1 en WINDOWS
Responder