Access - Cargar dato en Formulario

 
Vista:
Imágen de perfil de Guerrero
Val: 27
Ha disminuido su posición en 17 puestos en Access (en relación al último mes)
Gráfica de Access

Cargar dato en Formulario

Publicado por Guerrero (33 intervenciones) el 30/01/2023 22:42:32
Hola!!

Buenas tardes, espero me puedan ayudar soy novato en esto de la programación y actualmente tengo que hacer una base de datos para registro de la Vacación en access pero tengo problemas para cargar un dato en mi formulario de ingreso de datos, para hacer esto tengo dos consultas

Cns1 con está consulta creo el Formulario de ingreso de datos todo bien, pero debo hacer cálculos con algunos campos y cargar datos de registros anteriores(dato de la Cns2)

Cns2 en está consulta sumo un campo y obtengo el resultado que necesito la suma del campo
Cns2:
SELECT Sum(Tabla1.Campo1) AS SumaDeCampo1
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo2 = Tabla2.Campo2
GROUP BY Tabla2.Campo1
HAVING (((Tabla2.Campo1)=FlitroX));

El problema que tengo es que no sé con usar el resultado de la Cns2 en mi formulario de registro, el dato de la consulta se debe pre cargar al momento de abrir el formulario.

Gracias por la ayuda que puedan dar.

Saludos.
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

Cargar dato en Formulario

Publicado por Anonimo (3316 intervenciones) el 30/01/2023 23:12:33
Si el problema consiste en obtener el dato que devuelve la consulta 'Cns2' es sencillo:

Utiliza una función de dominio para obtener esa suma y mostrarla en un cuadro de texto, en el que su origen de datos:

1
= DLookup("SumaDeCampo1";"Cns2")

Si la consulta devuelve mas de un registro tendríamos un problema (devolverá el primero que encuentre) y para seleccionar uno (el que nos interese) la consulta deberá devolver otro campo mas (que se utilizará para identificarlo)....
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 Guerrero
Val: 27
Ha disminuido su posición en 17 puestos en Access (en relación al último mes)
Gráfica de Access

Cargar dato en Formulario

Publicado por Guerrero (33 intervenciones) el 30/01/2023 23:46:54
Gracias, ya lo tengo es lo que necesitab
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 Guerrero
Val: 27
Ha disminuido su posición en 17 puestos en Access (en relación al último mes)
Gráfica de Access

Cargar dato en Formulario

Publicado por Guerrero (33 intervenciones) el 31/01/2023 15:12:02
Buenos días,

Ya estoy de regreso porque la consulta no devuelve el valor correcto, para las pruebas tengo dos registros con varias incidencias y la consulta trae el ultimo valor pero sin respetar el filtro

= DLookup("SumaDeCampo1";"Cns2", FiltroX)

SumaDeCampo1 FiltroX (Id)
8 6
7 109

Si ejecuto la consulta me da los datos correctos, pero cuando abro el formulario y el FiltroX=109 el dato que se muestra es 8 en lugar de 7 que otra cosa puedo hacer.

Saludos.
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

Cargar dato en Formulario

Publicado por Anonimo (3316 intervenciones) el 31/01/2023 16:39:48
Devolverá al primero que cumpla la condición que se le pase en la variable FiltroX.

¿Qué hay exactamente en FiltroX?

Porque una condición no es 'Pepe' o '125' es:

Nombre = 'Pepe'
o
Importe = 125

En donde (Nombre) o (Importe) han de ser un campo del dominio (consulta/tabla...) con el que se compara el dato referente.

Nota: Si Access no logra interpretar la condición (por un error o una construcción incorrecta) ignorará la condición (como si no existiese) y devolverá lo mismo que devolvería sin ella:

--- el primero que encuentre de ese conjunto ----
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 Guerrero
Val: 27
Ha disminuido su posición en 17 puestos en Access (en relación al último mes)
Gráfica de Access

Cargar dato en Formulario

Publicado por Guerrero (33 intervenciones) el 31/01/2023 19:03:23
Hola!

Muchas gracias por tu ayuda efectivamente estaba mal el filtro, ya no corregí y hasta ahorita todo bien, solo me falta hacer que se actualice el campo al momento de abrir el formulario y no logro hacer que aparezca el valor resultante, trato de hacerlo con

Me.ResultaCampo1.Requery

pero no se actualiza, mientra lo hago con

Me.ResultaCampo1.SetFocus este campo no estará visible, pero necesito se actualice el valor para realizar operaciones

y después hago otro SetFocus al campo siguiente en el formulario, pero quiero saber cual es la forma correcta de activa el resultado del campo y en que evento del formulario debe ir la instrucción

Gracias por la ayuda

Saludos. . .
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

Cargar dato en Formulario

Publicado por Anonimo (3316 intervenciones) el 31/01/2023 20:34:12
Lo normal es que cuando se desee actualizar un campo calculado se le fuerce con un 'Recalc', Requery actualiza el origen del dato, pero el origen de este es un calculo (no la tabla o consulta = origen de datos del formulario).

Lo de 'al abrir el formulario' unido a que ¿esta oculto? el campo y no puede recibir el foco, no aclara la causa.

Para que obtenga un valor, es necesario que tenga acceso a los datos que utiliza y en particular a la condición que se crea tomando un dato externo, por lo que sospecho que FiltroX puede ser el causante

Al desconocer como esta diseñado ese formulario poco puedo aconsejar, pero el peor de los supuestos seria actualizar los campos calculados del formulario en el evento 'al cambiar de registro' por si hay mas campos que puedan interferir:

1
Me.Recalc
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 Guerrero
Val: 27
Ha disminuido su posición en 17 puestos en Access (en relación al último mes)
Gráfica de Access

Cargar dato en Formulario

Publicado por Guerrero (33 intervenciones) el 31/01/2023 23:45:07
Hola!!

Buenas tardes, gracias nuevamente voy a ver si me funciona, anexo el formulario para que veas y me puedas orientar mejor, en realidad creo que es muy sencillo pero como no sé mucho se me complica.


Gracias por la ayuda.

Saludos
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

Cargar dato en Formulario

Publicado por Eduardo (317 intervenciones) el 31/01/2023 17:25:24
Puede utilizar esta función a nivel de formulario.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function resultado(lnFiltro As Integer) As Double
 
 
  Dim strSQl As String
  Dim rs As DAO.Recordset
 
  strSQl = "SELECT Sum(Tabla1.Campo1) AS SumaDeCampo1" & vbCrLf
  strSQl = strSQl & "        FROM Tabla1 " & vbCrLf
  strSQl = strSQl & "  INNER JOIN Tabla2 " & vbCrLf
  strSQl = strSQl & "          ON Tabla1.Campo2 = Tabla2.Campo2" & vbCrLf
  strSQl = strSQl & "    GROUP BY Tabla2.Campo1" & vbCrLf
  strSQl = strSQl & "      HAVING Tabla2.Campo1 =" & lnFiltro & ";"
 
  Set rs = CurrentDb.OpenRecordset(strSQl)
 
  resultado = rs.Fields("SumaDeCampo1")
 
  rs.Close
  Set rs = Nothing
 
End Function

Llame la función así:

Call resultado(filtro) en donde filtro es numérico sino es numérico se debe cambiar la función.
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