Si me permiten, quiero realizar una pequeña aportación sobre el uso de la función Dlookup, y es el resultado de mi "búsqueda" para solucionar problemas que tenía en mis procedimientos.
Son, como ya digo, unas notas que he ido recopilando en distintas webs, en distintos foros y también de mi experiencia personal. Doy las gracias a los grandes maestros que con sus respuestas y explicaciones hacen que nuestras dudas se resuelvan y nuestro conocimiento vaya creciendo.
Esta aportación va dirigida, especialmente, a todos aquellos que están en los inicios de VBA, y que espero les sirva de utilidad.
Ni que decir tiene, que estas notas, se podrían matizar e incluso ampliar, pero eso lo dejo a la libre elección de cada uno.
FUNCIÓN
DE DOMINIO :
Dlookup
Variable
= DLookup (“Campo”, “Tabla o Consulta”, “criterioBúsqueda”)
Variable
= DLookup (“Campo”,”Tabla”, “campoFiltro = numero”)
Variable
= DLookup (“Campo”,”Tabla”, “campoFiltro = ‘ texto ‘ “)
Variable
= DLookup (“Campo”,”Tabla”, “campoFiltro = # fecha # ”)
Para
valores numéricos: (sin comilla): Variable
= DLookup (“campo”, “Tabla”, “campoFiltro =
Número”)
Para
valores de texto: (con comillas simples): Variable
= DLookup (“campo”, “Tabla”, “campoFiltro = ‘ texto’ “)
Para
fechas: (con almohadilla #): Variable
= DLookup (“campo”, “Tabla”, “campoFiltro = #05-10-2022# “)
· Referencia
a controles de un formulario
Para
valores numéricos: Variable
= DLookup (“campo”, “Tabla”, “campoFiltro = “ & Me.control)
Para
valores de texto: Variable
= DLookup (“campo”, “Tabla”, “campoFiltro = ‘ “ & Me.control & “ ‘ )
Para
fechas: Variable
= DLookup (“campo”, “Tabla”, “campoFiltro = #” Me.controlF & “ # “)
Para números: Variable
= DLookup (“Campo”,”Tabla”, “campoFiltro = “ &
Forms!nombreForm!nombreControl)
Para
textos: Variable =
DLookup (“Campo”,”Tabla”, “campoFiltro = ‘ “ &
Forms!nombreForm!nombreControl & “ ‘
“)
Para
fechas: Variable =
DLookup (“Campo”,”Tabla”, “campoFiltro = #“ & Forms!nombreForm!nombreControl
& “ # “)
Expresiones
equivalentes:
Control de un formulario Campo de la
tabla Variables,
con refer.a campos/controles
Me.Control “nombreCampo” strCampo =
valorCampo, valorControl
Forms!nombreForm!Control [nombreCampo] intCampo = valorCampo,
valorControl
[Tabla].[nombreCampo] datCampo = valorCampo,
valorControl
Expresiones
para datos de fecha en los criterios:
- Como
fecha y con formato : “CampoFiltroFecha
= #” & Format(nombreCampoFecha, “dd/mm/yyyy”) & “#”
-
Convirtiendo a fecha con formato local. “CampoFiltroFecha
= #” & CDate(nombreCampoFecha) & “#”
-
Convirtiendo la fecha a un número: “Cdbl(CampoFiltroFecha) = “
& Cdbl(CDate(nombreCampoFecha)))
- Otra
sugerencia de fecha-número: “CampoFiltroFecha = “
& Clng(CDbl(nombreCampoFecha)))
- Combinaciones
de distintos tipos de datos en criterio :
- Dato numérico + dato fecha :
“CampoNum = “ & Me.controlNum & “ AND CampoFecha = # “ & Me.controlFecha & “ # “
- Dato texto + dato fecha:
“CampoNum = ‘ “ & Me.controlNum & “ ‘
AND CampoFecha = # “ &
Me.controlFecha & “ # “
- Dato numérico + dato texto + dato fecha :
“CampoFiltro1 = “ & Me.Control1 & “
AND CampoFiltro2 = ‘ “ & Me.Control2
& “ ‘ “ AND CampoFiltro3 = # “ &
Me.control3 & “ # “)
- Dato
texto + dato texto, con variables:
“Campo1
= ‘ “ & strVariableTexto1 & “ ‘ AND Campo2 = ‘ “ &
strVariableTexto2 & “ ‘ “
Uso de
Dlookup con criterios textuales, es decir, indicando directamente el valor de
coincidencia en la búsqueda:
Por
ejemplo,
- Para
valores numéricos:
“Campo = 2456 “
- Para
valores de texto: “Campo
= ‘Antonio Pérez ’ “
- Para
valares de fecha: “Campo
= #25/02/2022# “
Saludos a todos.
Adrian.