Access - MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

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

MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

Publicado por Rodanim (15 intervenciones) el 22/04/2020 21:33:50
HOLA AMIGOS COMO ESTAN.. ESPERO QUE BIEN
SOLO PARA VER SI ALGUIEN ME PUEDE AYUDAR CON ESTO....
TENGO UN FORMULARIO INDEPENDIENTE CON UN BOTÒN DE COMANDO Y UNA CUADRO DE TEXTO INDEPENDIENTE...
ME GUSTARÍA SABER SI HABRÁ ALGUNA FORMA DE PODER ANOTAR EN EL CUADRO DE TEXTO QUE ESTA EN EL FORMULARIO EL RESULTADO DE UNA CONSULTA CON SUS RESPECTIVOS CRITERIOS...

LO HE HECHO A TRAVÉS DE OTRO FORMULARIO(FORMULARIO2) QUE SE EJECUTA Y SE CIERRA DE FORMA AUTOMATICA CON EL BOTÓN DE COMANDO QUE ESTA EN EL FORMULARIO 1. AL EJECUTARSE EL FORMULARIO 2, EN EL EVENTO CARGAR.. COLOQUE EL CODIGO QUE ME MANDA LA RESPUESTA AL FORMULARIO 1..
PERO VEO QUE ES MAS LENTO EL PROCESO.

GRACIAS DE ANTEMANO
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

MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

Publicado por jose (802 intervenciones) el 24/04/2020 16:34:00
LAS Funciones agregadas de dominio, DCont (DCount) , Dbusq ,Dbúsq (Dlookup) ,Dprim ,Dsum, (Dfirst) y Dúltimo (Dlast)mDMín (Dmin) y Dmáx (Dmax

TE PUEDEN AYUDAR .

EN EL EVENTO AL HACER CLIC PONES : (CON TUS DATOS)


1
2
3
4
5
6
Me.CUADROTEXTO = Nz(DLookup("NOMBRE", "Tabla1", "Id = '" & Me.Texto_CONDICIONDELCAMPO-ID & "'"), "Código interno no encontrado")
 
Me.CUADROTEXTO      DoNDE QUIERES  REflejarlo
NOMBRE                          nombre del campom que buscas
Tabla1                                  nombre de la tabla
Me.Texto_CONDICIONDELCAMPO-ID      campo del formulario  que contiene la condicion
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

MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

Publicado por jose (802 intervenciones) el 24/04/2020 17:14:54
https://accessjuancots.blogspot.com/2008/01/capitulo-4-funciones-agregadas-de.html


CAPITULO 4.- FUNCIONES AGREGADAS DE DOMINIO
Cuando uno empieza a desarrollar sus aplicaciones, se nos suele atragantar el acceder a los datos de las tablas que se encuentran cerradas. Una de las maneras más sencillas es con las funciones
agregadas de dominio.
Prácticamente todas ellas son muy similares:

1
NombredelaFuncion("Campodelatabla","Tabla","Condicion")

Para este capitulo vamos a crear una tabla que vamos a llamar Clientes con los siguientes campos:

IdCliente (Autonumérico)

NombreCliente (Texto)

DNICliente (Texto)

FechaNacimiento (Fecha/Hora)

Edad (Numero)

Escribimos tres o cuatro registros inventados para hacer pruebas.

Ahora creamos un formulario independiente, con un simple cuadro de texto, que vamos a llamar txtResultados, y un botón de comando.

Vamos a comenzar por intentar averiguar cuantos registros tenemos en nuestra tabla y para ello vamos a usar la función agregada de dominio DCount.

Como decía antes sería algo así como DCount("CampodelaTabla","Tabla","Condicion"),
pero para este primer ejemplo no vamos a poner ninguna condición con lo que nos quedaría así: DCount("IdCliente","Clientes")

Ahora vamos a aplicarlo, en el evento al hacer click del botón de comando de nuestro formulario ponemos:

1
Me.txtResultados = DCount("IdCliente","Clientes")

Si hacemos click en el botón, nos aparecerá en nuestro cuadro de texto el número de registros de la tabla.

Como todas son muy parecidas, ahora vamos a ver DSum, vamos a sumar las edades de todos nuestros clientes, para ello en el botón de comando borramos lo que teníamos y ponemos:

1
Me.txtResultados = DSum("Edad","Clientes")

Bueno...fácil...¿verdad?

Vamos a obtener el promedio de edad de nuestros clientes, para ello divideremos la suma de sus edades entre el número de clientes

1
Me.txtResultados = DSum("Edad","Clientes") / DCount("IdCliente","Clientes").

Funciona. Pero Access incluye una función para calcular el promedio, se trata de Avg. Probamos ahora poniendo

1
Me.txtResultados = DAvg("Edad","Clientes")

Y obtendremos el mismo resultado que antes.

Ahora vamos a descubrir que edad es la más alta de todas las de la tabla. Utilizaremos DMax

1
Me.txtResultados = DMax("Edad","Clientes")

La menor de todas con DMin

1
Me.txtResultados = DMin("Edad","Clientes").

Vamos a introducir condiciones, y a conocer DLookUp. Esta función nos sirve para encontrar un campo en una tabla. El objetivo va a ser conocer el nombre del cliente que tengamos en la tabla cuyo IdCliente sea igual a 3.

La condición sería "IdCliente = 3"

Por tanto como lo que buscamos es el nombre del cliente quedaría así:

1
DLookUp("NombreCliente","Clientes","IdCliente = 3")

Lo ponemos ahora en el botón de comando

1
Me.txtResultados = DLookUp("NombreCliente","Clientes","IdCliente = 3")

Al hacer click, obtendremos el cliente que se corresponda con el numero 3.

Bien, ahora vamos a poner otro campo de texto en nuestro formulario al que vamos a llamar txtCondicion

Ahora vamos a repetir el ejercicio anterior pero en este caso en vez de utilizar el número 3, utilizaremos el valor del campo txtCondicion. Esta parte de las condiciones es la que se suele atragantar a todo el mundo, pero si lo comprendes bien, verás que en el fondo es sencillo, simplemente respetar la sintaxis para que Access lo entienda.

A la función, la condición se la pasamos como una cadena. Por ello antes de entrar de lleno en el tema, vamos a ver como concatenar cadenas, básicamente sería algo así como cadena1 & cadena2

Por ejemplo pon en el botón de comando lo siguiente:

1
Me.txtResultados = "Esta mañana" & "hace mucho calor"

Al hacer click nos aparecerán ambas frases concatenadas, lógicamente solo es un ejemplo, porque podríamos haber puesto el texto entero. Pero para el propósito de entenderlo sirve. Vemos que se han concatenado pero ha quedado así Esta mañanahace mucho calor. Vamos pues a ponerle un espacio entre una frase y la otra.

1
Me.txtResultados = "Esta mañana " & "hace mucho calor"

Ahora sí, ha quedado perfecto. Vale, pues volviendo a la condición que hay que pasarle a las funciones de dominio debe ser una cadena que la función pueda entender.

Antes poníamos una condición que era "IdCliente = 3"

Como veíamos antes sería lo mismo que poner:

1
"IdCliente= " & "3"

Ahora lo que queremos es que IdCliente sea Igual a lo que pongamos en el campo txtCondicion, por tanto sustituimos "3" por Me.txtCondicion y quedaría así:

1
"IdCliente= " & Me.txtCondicion

Y ahora ya escribimos todo entero:

1
Me.txtResultados = DLookUp("NombreCliente","Clientes","IdCliente= " & Me.txtCondicion)

Esta sintaxis funcionará correctamente siempre y cuando el campo variable sea un número.

Pero la sintaxis varía si el campo variable es un texto o una fecha, vamos a suponer que lo que buscamos es: introduciendo el nombre de nuestro cliente obtener su edad , para ello la función sería

1
Me.txtResultados = DLookUp("Edad","Clientes","NombreCliente= '" & Me.txtCondicion & "'")

Como vemos al tratarse el campo variable de un texto nuestra forma de decírselo es poniéndolo entre comillas simples y dobles.

Por último si se trata de una fecha, debemos ponerlo entre almohadillas, por ejemplo queremos saber el nombre de un cliente poniendo su fecha de nacimiento en el cuadro de texto txtCondicion.

1
2
Me.txtResultados = DLookUp("NombreCliente","Clientes","FechaNacimiento= #" &
Me.txtCondicion & "#")

En principio esta sintaxis sería correcta, pero ya sabemos que VBA entiende las fechas en formato americano, por tanto para estar seguros de hacerlo bien le aplicamos a txtCondicion la función Format. Sería así:

Format(Me.txtCondicion,"mm/dd/yyyy"). Por tanto quedaría:

1
2
Me.txtResultados = DLookup("NombreCliente", "Clientes", "FechaNacimiento= #" &
Format(Me.txtCondicion, "mm/dd/yyyy") & "#")

Como podrás comprobar es una simple cuestión de sintaxis, pero en el fondo es muy fácil
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 41
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

Publicado por Rodanim (15 intervenciones) el 25/04/2020 19:13:47
MUCHÍSIMAS GRACIAS AMIGO..
MUY BUENA EXPLICACIÓN.. MUY COMPLETO...
NUEVAMENTE GRACIAS AMIGO
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
sin imagen de perfil
Val: 41
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

Publicado por Rodanim (15 intervenciones) el 25/04/2020 20:49:02
Amigo jose me puedes ayudar en esto...
necesito usar 2 condiciones, usando el and o el or.... trato de ver si funciona siguiendo tus ejemplos, pero no me funciona:
te dejo el orden como lo estoy haciendo,, ya trate de hacerlo de varias maneras pero no me funciona

1
Me.TxtRespuesta = DLookup("CampoNombre", "TablaCliente", "CampoEdad= 15") And DLookup("CampoNombre", "TablaCliente", "CampoNombre= '" & Me.TxtCondicion & "'")

Al usar este orden me muestra el mensaje "No coinciden los tipos"

También me gustaría ver como puedo aplicar una variable como condición y para almacenar la respuesta..

Mira este ejemplo, solo que cuando no hay registros que cumplan con las condiciones me muestra un mensaje de error "Uso no valido de null"

1
2
3
Dim Var1 As String
Var1 = DLookup("CampoNombre", "TablaCliente", "nombre= '" & Me.CampoNombre & "'")
Me.TxtRespuesta=Var1

Gracias de antemano
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

MANDAR RESPUESTA DE UNA CONSULTA A UN FORMULARIO ACCESS

Publicado por Anonimo (1745 intervenciones) el 26/04/2020 00:24:55
Verifica de forma independiente el resultado de esas dos funciones de dominio.

Si indica que 'no coinciden los tipos' es porque no encuentra el dato apropiado (como si llamas por teléfono a un amigo y te confundes en un digito … el del otro lado no es quien esperas que sea y colgara la llamada).

Y si, con la función DLookup, cuando no existe un dato aparece el odiado 'NULL' pero se soluciona verificando si existe, dos opciones para eso:
En lugar de un String (variable de tipo alfanumérico) no indicar tipo (la variable seria de tipo 'Variant') este tipo admite 'cualquier cosa' incluso los NULL y solo quedaría verificar (antes de publicar el resultado) que su contenido sea 'cualquier cosa excepto un null')

La otra alternativa (para no hacer viajes infructuosos) consiste en preguntar 'cuantos hay que cumplan esas condiciones y de haber 'por lo menos uno' pues se ejecuta el DLookup .

Por ejemplo así:

1
2
3
4
5
6
7
Dim Var1 As String
IF DCount ("*", "TablaCliente", "nombre= '" & Me.CampoNombre & "'") > 0 Then
Var1 = DLookup("CampoNombre", "TablaCliente", "nombre= '" & Me.CampoNombre & "'")
Me.TxtRespuesta=Var1
Else
Me.TxtRespuesta= "No se encontró ese nombre en la base de datos"
End If


La función DCount no devuelve nulos, devuelve siempre un valor numérico (aunque este sea el cero)
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