Access - Dbusq me devuelve error

   
Vista:

Dbusq me devuelve error

Publicado por Mario (3 intervenciones) el 26/06/2016 21:49:03
Hola.

He construido un formulario que quiero que me devuelva la información de una celda con por el dato de otra. Me explico, soy ganadero y he hecho una base de datos de los animales donde en la tabla animales aparece el número de animal, el DIB (documento identificación bovina), fecha nacimiento, madre (que coincide siempre con uno de los registros de esta base de datos), etc. El caso que he hecho un formulario llamado nacimientos donde quiero que me aparezca la información del animal anteriormente descrita y he creado un cuadro de texto donde a través del generación de expresiones y con la formula (DBúsq) quiero que me aparezca el DIB de la madre, ya que en la tabla solo pongo el Nº de identificación de la madre. Esta es la fórmula que he puesto y que me devuelve el error "#¿Nombre?"
=Dbúsq([CIB];[Animales];[Madre]=[NºRegistro])
Espero que me haya explicado bien.
Un saludo y gracias. Mario.
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

Dbusq me devuelve error

Publicado por Enrique Heliodoro (1663 intervenciones) el 26/06/2016 23:55:02
Las funciones de dominio (según indica la ayuda de Access) requiere que los tres parámetros de la función sean expresiones de texto (no se cumple con la sintaxis expuesta).

La correcta (para ajustarse al alas normas) seria algo como:

=Dbúsq("[CIB]";"[Animales]";"[Madre]=[NºRegistro]")

Pero como dudo mucho que un DIB sea igual a 'NºRegistro' y dando por supuesto que ese dato es numérico, lo adecuado seria algo similar a:

=Dbúsq("[CIB]";"[Animales]";"[Madre]=" & [NºRegistro])
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

Dbusq me devuelve error

Publicado por Mario (3 intervenciones) el 28/06/2016 01:40:14
Hola Enrique Heliodoro
Gracias por tu dedicación de tu tiempo en resolver mi duda. Te adjunto un ejemplo de la base de datos ya que no consigo que me salga la solución. Tanto el "Nº de Registro" como "Madre" les tengo puestos como texto pero aún así no consigo que me devuelva el CIB de la madre. He conseguido que me aparezca el CIB del primer registro de la tabla en todos los registros. He probado cambiando los registros a número y tampoco he conseguido nada.

un saludo y gracias.
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

Dbusq me devuelve error

Publicado por Enrique Heliodoro (1663 intervenciones) el 28/06/2016 11:27:33
En el ejemplo que has enviado, no te has molestado en verificar lo indispensable, el nombre de las tablas y el de los campos (supongo que será una de las copias experimentales), pero en cualquier caso, motivo suficiente para que de error tras error.

Dado que el campo utilizado como referente parece ser numérico, como tal te aconsejo definirlo en la tabla (es mas fácil de tratar que los de texto porque no necesita marcadores).

Normalmente en las condiciones, se acostumbra a generar la condición partiendo del campo de la tabla y comparándolo con el externo, en la que has creado comparas de forma inversa el externo contra la tabla.

Aclaro este punto:
.- AAAA ==> campo en la tabla
.- BBBB ==> campo en el formulario

Lo que has creado: BBBB = AAAA

Lo que suele esperar Access: AAAA = BBBB

Parece lo mismo y esencialmente lo es, pero uno es fijo (el del formulario) y el otro no (el de la tabla) por lo que le cuesta menos aplicar la lógica si están cada uno en la posición esperada.

Hay un ligero matiz que analizar, lo que se espera de ese proceso.

En principio ese dato (el que devuelva la función de dominio) NO se guardara en la tabla, pues al ser su origen un calculo, será considerado a todas luces un campo independiente (un clásico 'campo calculado'), para guardar ese dato en la tabla (innecesario porque siempre se podrá calcular en base a los que ya están en la tabla), se tendría que utilizar una macro (con la acción 'establecer valor') o bien una asignación directa (con VBA) en el evento después de actualizar del campo de referencia (MADRE en el formulario).

Hay mas métodos para lo mismo, por ejemplo (un clásico):
Se genera un origen de datos para el combo 'Madre' con dos columnas la actual y (oculta si as se desea) el CIB asociado, bastaría que se hiciera referencia a esta segunda columna en lugar de utilizar la función de dominio (DLookup/Dbúsq)
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