Access - Macro datos de Informe hacia formulario

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Macro datos de Informe hacia formulario

Publicado por Fernando (13 intervenciones) el 26/06/2024 10:25:21
Hola,

Tengo un access en el que simplemente a través de un formulario relleno los trabajos que realizo en distintas localidades por:
Fecha Inicio
Fecha1, por si dura el trabajo otro día más
Fecha2, idem
Localidad
Duración en días
Horas
Kilómetros
Código de la empresa en la que realizo el trabajo
Observaciones

Luego tengo creado un informe en el que salen estos datos filtrados por mes indicando los demás datos menos observaciones.

Lo que quiero es realizar un macro en la fecha de inicio que cuando la seleccione con el ratón me lleve a el formulario pero exactamente a la fecha señalada por si quiero ver observaciones o por modificar algo.

En primer lugar no se realizar macros correctamente y tengo simplemente en la celda de la fecha de inicio del informe una macro incrustada:
AbrirFormulario
Nombre del formulario formulario (el formulario que quiero que abra)
Vista Formulario
Condición WHERE = [Fecha Inicio] = [formulario]![Fecha Inicio] (he probado a cambiar el orden o solo poner uno)
Modo de datos Modificar
Modo de ventana Diálogo

Este macro me lleva exactamente al formulario que quiero que abra pero al principio de todos los trabajos y no a la fecha que quiero.


Si alguien me sabe dar una respuesta que no sea supercompleja (a no ser que no quede más remedio) se lo agradezco de antemano. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Macro datos de Informe hacia formulario

Publicado por Fernando (13 intervenciones) el 26/06/2024 11:32:51
He cambiado Fecha Inicio por Fecha_Inicio por que estoy probando con procedimiento de evento:

DoCmd.OpenForm "formaciones frm", , , "Fecha_Inicio = " & Fecha_Inicio
o & me.Fecha_Inicio


Y sí me abre el formulario. Pero econ los datos en blanco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro datos de Informe hacia formulario

Publicado por Anonimo (3398 intervenciones) el 26/06/2024 16:56:00
En las macros, para desplazarse a un registro concreto (el que cumpla la condición) hay que utilizar la acción de 'ir a registro' y la condición previa indispensable es que el formulario este abierto (si no lo esta hay que abrirlo), ambas acciones pueden ir en la misma macro.

Al respecto del problema que aparece en el segundo intento, hay que tener en cuenta que se hace en VBA (sin macros ni asistentes) y que Access necesita indicarle el tipo de datos cuando lo desconoce (el caso de un cuadro de texto independiente) en el que se puede escribir un numero, una fecha o un texto.

Las fechas (en Access) las puede reconocer por estar en un campo de tipo DATE (las rechaza si no correctas), porque se le indica con una función de conversion (CDate) o por encerrarlas entre (#) al igual que a los textos se les 'encierra' entre dobles comillas.

Access interpreta los datos como variables (si están declaradas), como números (sin necesidad de marcadores), como texto si comienzan y finalizan con las dobles comillas (y en circunstancias con las comillas simples), y como fecha si el marcador es (#)

Con la expresión publicada (ya corregida) Access abriría el formulario SOLO con los registros que cumpliesen la condición (normalmente suele ser uno), quizás para obtener un subconjunto (varios días por ejemplo los de duración de la tarea) se debería usar otro referente (por ejemplo: el ID de la tarea).

Antes:
1
DoCmd.OpenForm "formaciones frm", , , "Fecha_Inicio = " & Fecha_Inicio

Después:
1
DoCmd.OpenForm "[formaciones frm]", , , "Fecha_Inicio = #" & Fecha_Inicio & "#"

Nota: Cuando el nombre de un objeto contiene espacios o se le eliminan o se demarca con corchetes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Macro datos de Informe hacia formulario

Publicado por Fernando (13 intervenciones) el 27/09/2024 12:57:43
Gracias, pero me sigue pasando casi igual.

Primero. Si escribo "[formaciones frm]" me dice que no encuentra el formulario. Tengo que dejarlo sin corchetes.

Segundo. Con
DoCmd.OpenForm "formaciones frm", , , "Fecha_Inicio = #" & Fecha_Inicio & "#"
Me muestra unos en blanco y otros (pocos) correctos. Y en uno o dos confunde las fechas (02/07/2024 por 07/02/2024 y al revés)


No se. No encuentro diferencias en los que salen con los datos, de los que salen en blanco o fechas con días y mes al revés. Todos se generan e el mismo formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro datos de Informe hacia formulario

Publicado por Anonimo (3398 intervenciones) el 27/09/2024 17:32:54
.Aquí:
Primero. Si escribo "[formaciones frm]" me dice que no encuentra el formulario. Tengo que dejarlo sin corchetes.

Los corchetes se utilizan cuando los nombres de los objetos contienen espacios (para que los interprete como un único dato), cuando va entre dobles comillas no necesita los corchetes, las comillas hacen esa función.

En el segundo:
Access de forma natural (y siempre en la ventana de VBA) interpreta las fechas en formato americano (mes/día/año) y si las toma de un cuadro de texto las interpreta con el formato regional (en España día/mes/año), se acostumbra a utilizar una función (CDate) que las convierte del formato local a formato americano.

Hay diversos métodos, hay quienes utilizan la función FORMAT para hacer esa conversion, otros la función CDate (que convierte cualquier formato local al americano) y también la opción de convertir la fecha (que en principio es un texto un tanto rebelde) a numero (que es el dato real que guarda Access), el numero tiene la ventaja de que es mas fácil de manejar y no suele dar problemas con los formatos (un numero es: solo un numero).

La conversion a numero puede requerir un paso o dos:
.- Si se parte de un dato que ya es una 'fecha Access' basta con: CDbl(el campo de fecha)

.- Si se parte de un dato tipo texto (un cuadro de texto de un formulario), primero se convierte a 'fecha Access' y al dato que se obtiene (una 'Fecha Access) se la convierte a numero : CDbl(CDate(el campo de fecha))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo Pérez Fernández

Macro datos de Informe hacia formulario

Publicado por Eduardo Pérez Fernández (350 intervenciones) el 27/09/2024 13:21:54
Pruebe con

1
DoCmd.OpenForm "formaciones frm", , , "Fecha_Inicio = #" & Format(Fecha_Inicio, "mm/dd/yyyy") & "#"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar