[RESUELTO] Macro en formulario calcular campo

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

[RESUELTO] Macro en formulario calcular campo

Mensaje por telemeteo »

formulario.odb.zip
base de datos de prueba
(10.46 KiB) Descargado 133 veces
Buenas tardes.

Estoy tratando de hacer una macro para un formulario.
El formulario ("Formulario1") no depende de ninguna tabla.
Tiene tres campos:
- Fecha de inicio "fecha_inicio"
- Fecha final "fecha_final"
- Fecha anterior "fecha_anterior"

Los datos de los dos primeros se introducen manualmente, el del tercero (fecha_anterior) tiene que ser igual a "fecha_inicio" -1,
es decir la fecha del día anterior a la fecha incial.
Lo que debe hacer es una vez introducida la fecha de inicio que calcule la fecha anterior.

Con la macro que tengo no lo consigo. He probado mas opciones, sin resultado.
Adjunto la base de datos de prueba.

Gracias y un saludo,

Emiliano
Badajoz
Última edición por telemeteo el Mié Sep 16, 2015 10:01 pm, editado 2 veces en total.
LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro en formulario calcular campo

Mensaje por mauricio »

Hola...

Te anexo tu archivo con una primera opción, con algunos comentarios...

- Asegurate de que todo este dentro de etiquetas Sub - End Sub
- Asegurate siempre de nunca dejar instrucciones a medias, tenías un End IF, sin el If de apertura
- Asegurate de usar siempre el evento correcto, tenías asignada la macro al evento Cargar del documento, ahí no es funcional, lo he cambiado al evento Cambiar Texto del control fecha inicial
- No se que vayas a hacer con el tercer control (fecha_anterior), pero sería bueno que también fuera un control Date y no un TextBox
- El código funciona, pero tiene un error, creo, bastante evidente, si decides aceptarla, tu tarea es decirme cual es y arreglarlo.


Saludos
Adjuntos
formulario.odb.7z
(10.22 KiB) Descargado 166 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

Re: Macro en formulario calcular campo

Mensaje por telemeteo »

Buenas noches,

Gracias por la ayuda.

Era eso lo que quería.
Lo del cuadro de texto ha sido un error, tenía previsto el campo fecha.
Ya está cambiado.

El error que tiene es que sólo efectúa la resta del día. Ha salido rápido. Al poner 01/09/2015 al fecha es 00/09/2015. Revisando el código veo que sólo resta en día:
Creo que eso será fácil repararlo. Voy a intentarlo buscando un poco.

En access usaba mucho código reciclado para macros y similares, pero con esto encuentro algo menos, y, aunque leo bastantes,
la programación no es mi fuerte. He comenzado muy tarde.

Gracias de nuevo y un saludo,

Emiliano
LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

Re: Macro en formulario calcular campo

Mensaje por telemeteo »

Buenas tardes,

He estado viendo el código con más detenimiento. Anoche lo miré rápido y, aunque me fijé que los campos eran cadena, creí que le resultado era fecha.
Ahora, viéndolo con mas detenimiento, observo que los dos campos son texto, con lo que no podré utilizarlos en otras macros para ejecutar consulta. Creo no se si será así.
Al ser cadena sólo cambia los dígitos de la fecha, pero no los del mes ni el año, si por ejemplo fuera 01/01/2015.
¿El objeto se puede tratar como campo fecha o sólo como string?
El formulario es para ejecutar informes.
En otro modelo de base que envié y que R.M.G. hizo el código de la consulta y las consultas para el informe no tenía este último y hay que realizar una consulta para encontrar la fecha anterior, por ello quiero la macro, y que el botón ejecute la macro, sin tener que calcular la fecha anterior.

Un saludo,

Emiliano
LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro en formulario calcular campo

Mensaje por mauricio »

Hiciste la tarea a medias...

Tienes que leer más de las propiedades de los controles... en el caso especifico de los controles fecha, tienes dos propiedades importantes, Date y Text, Date es el valor real de la fecha seleccionada o establecida, Text es simplemente como la ve el usuario.

Por supuesto puedes usar uno u otro valor según te convenga, por ejemplo, para una consulta siempre tienes que tener al final una cadena de texto. El siguiente código te devuelve ya la fecha anterior en un día de forma correcta.

Código: Seleccionar todo

Option Explicit
Dim frm As Object
Dim obj As Object
Dim fecha_seleccionada As Date
Dim fecha_anterior As Date
Dim obj_fecha_anterior As Object


Sub ActualizarFechaAnterior( Event )

	obj = Event.Source.Model
	
	fecha_seleccionada = DateSerial(obj.Date.Year, obj.Date.Month, obj.Date.Day)
	fecha_anterior = DateAdd("d", -1, fecha_seleccionada)
	
	frm = obj.Parent
	obj_fecha_anterior = frm.getByName("fecha_anterior")
	obj_fecha_anterior.Text = CStr(fecha_anterior)
	
End Sub
A estudiar
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

Re: Macro en formulario calcular campo

Mensaje por telemeteo »

Buenas noches,

Muchas gracias Mauricio.

Tendré que traducir la macro con tu libro y el de Andrea.
Hay algunas cosas que entiendo, pero otras no.
La he probado y era eso lo que quería.

Es para utilizarla con dos bases de datos, que quiero quitar VirtualBox y la VM de Windows XP que sólo uso para Access.

Una sólo para cuentas corrientes, para tener todos los datos de mis cuentas organizados y no tener que buscar en "los papeles".
La otra es para gestionar una Comunidad de Vecinos.
Lleva tres "módulos", uno es la anterior, para gestionar los movimientos bancarios, otro es el de contabilidad, que es más sencillo, pues sólo tiene dos tablas.
El tercero, que es más complicado es para gestionar los recibos mensuales.
Los dos primeros los tengo casi acabados, el tercero aún no he comenzado.

Un saludo,

Emiliano
LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
Responder