[RESUELTO] UPDATE con CASE WHEN o con IF

Discute sobre las herramientas de la base de datos

[RESUELTO] UPDATE con CASE WHEN o con IF

Notapor pmartimor » Lun Feb 11, 2019 1:42 pm

Buenos días:
Estoy intentando hacar una actualización de datos en una tabla de forma condicionada.

Necesito hacer lo siguiente:

Si FECHA_BAJA IS NULL (O VACIA) ' Fecha_Baja es un campo que ya existe en la tabla
....... FECHA_HASTA = FECHA_FIN ' Fecha_Fin es un campo de la consulta creado a partir del contenido de una caja de texto del formulario
ELSE
....... Si FECHA_BAJA < FECHA_FIN
............. FECHA_HASTA = FECHA_BAJA ' Fecha_Hasta es el campo al que queremos dar valor con un UPDATE y Fecha_Baja es un campo que ya existe en la tabla
....... ELSE
............. FECHA_HASTA = FECHA_FIN
....... END
END

Esto se haría sobre la tabla 'datosfechas' para todos los registros de la tabla. Todos los campos citados son de esta tabla.
Pero he de hacerlo en una macro, para que lo pueda hacer el usuario, ya que los campos FECHA_FIN es un campo creado para la consulta desde una caja de texto del formulario
frmFechas y FECHA_BAJA es un campo de la tabla que no siempre tendrá el mismo contenido
y además se irán añadiendo registros nuevos a la tabla en los que de entrada FECHA_BAJA y FECHA_FIN estarán vacíos e irán tomando valores con el paso del tiempo
cuando proceda.
Vemos que siempre es el campo FECHA_HASTA el que cambiará con los contenidos del campo que corresponda según las condiciones expuestas, pues es el campo al que
queremos hacer el UPDATE.

En la macro se modifica la consulta.


Trabajo con OpenOffice 4.1.5

Saludos y gracias anticipadas.
Última edición por pmartimor el Jue Feb 14, 2019 5:48 pm, editado 6 veces en total
OpenOffice 4.1.5 en clientes Windows 10, 7, XP sobre BD MySql. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 51
Registrado: Jue Mar 08, 2018 2:11 pm

Re: UPDATE con CASE WHEN o con IF

Notapor RMG » Lun Feb 11, 2019 5:30 pm

Hola,

Si adjuntas un pequeño ejemplo, te podremos ayudar mejor.

Saludos
OpenOffice 4.1.5 y LibreOffice 5.4.5.1 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3386
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: UPDATE con CASE WHEN o con IF

Notapor pmartimor » Lun Feb 11, 2019 9:11 pm

RMG escribió:Hola,

Si adjuntas un pequeño ejemplo, te podremos ayudar mejor.

Saludos


Buenos días:
Estoy intentando hacar una actualización de datos en una tabla de forma condicionada.

Necesito hacer lo siguiente:

Si FECHA_BAJA IS NULL (O VACIA) ' Fecha_Baja es un campo que ya existe en la tabla
....... FECHA_HASTA = FECHA_FIN ' Fecha_Fin es un campo de la consulta creado a partir del contenido de una caja de texto del formulario
ELSE
....... Si FECHA_BAJA < FECHA_FIN
............. FECHA_HASTA = FECHA_BAJA ' Fecha_Hasta es el campo al que queremos dar valor con un UPDATE y Fecha_Baja es un campo que ya existe en la tabla
....... ELSE
............. FECHA_HASTA = FECHA_FIN
....... END
END

Esto se haría sobre la tabla 'datosfechas' para todos los registros de la tabla. Todos los campos citados son de esta tabla.
Pero he de hacerlo en una macro, para que lo pueda hacer el usuario, ya que los campos FECHA_FIN es un campo creado para la consulta desde una caja de texto del formulario
frmFechas y FECHA_BAJA es un campo de la tabla que no siempre tendrá el mismo contenido
y además se irán añadiendo registros nuevos a la tabla en los que de entrada FECHA_BAJA y FECHA_FIN estarán vacíos e irán tomando valores con el paso del tiempo
cuando proceda.
Vemos que siempre es el campo FECHA_HASTA el que cambiará con los contenidos del campo que corresponda según las condiciones expuestas, pues es el campo al que
queremos hacer el UPDATE.

En la macro se modifica la consulta conFechas para realizar un filtro de datos creando los alias Fecha_Inicio y Fecha_Fin que corresponden a fórmulas
en las que entran los datos que se recogen de cajas de texto en el formulario frmFechas. Envío un fichero ejemplo.


Trabajo con OpenOffice 4.1.5

Saludos y gracias anticipadas.
Adjuntos
basefechas.zip
(12.81 KiB) 3 veces
OpenOffice 4.1.5 en clientes Windows 10, 7, XP sobre BD MySql. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 51
Registrado: Jue Mar 08, 2018 2:11 pm

Re: UPDATE con CASE WHEN o con IF

Notapor RMG » Mar Feb 12, 2019 5:41 pm

Hola,

Mira si te sirve esta solución.

Saludos
Adjuntos
basefechas1.zip
(13.47 KiB) 3 veces
OpenOffice 4.1.5 y LibreOffice 5.4.5.1 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3386
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: UPDATE con CASE WHEN o con IF

Notapor pmartimor » Jue Feb 14, 2019 5:47 pm

RMG escribió:Hola,

Mira si te sirve esta solución.

Saludos


Gracias por la buena solución. No sé por qué me había empeñado en hacerlo con una sola línea de código, cosas de novato :? :?

Gracias a los foros se puede seguir aprendiendo a través de programadores ya experimentados.

:super:
OpenOffice 4.1.5 en clientes Windows 10, 7, XP sobre BD MySql. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 51
Registrado: Jue Mar 08, 2018 2:11 pm


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado