[RESUELTO] UPDATE con CASE WHEN o con IF

Discute sobre las herramientas de la base de datos
Responder
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

[RESUELTO] UPDATE con CASE WHEN o con IF

Mensaje por pmartimor »

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.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: UPDATE con CASE WHEN o con IF

Mensaje por RMG »

Hola,

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

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)
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

Re: UPDATE con CASE WHEN o con IF

Mensaje por pmartimor »

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) Descargado 266 veces
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: UPDATE con CASE WHEN o con IF

Mensaje por RMG »

Hola,

Mira si te sirve esta solución.

Saludos
Adjuntos
basefechas1.zip
(13.47 KiB) Descargado 289 veces
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)
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

Re: UPDATE con CASE WHEN o con IF

Mensaje por pmartimor »

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:
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
Responder