Access - ERROR 2471 - La expresión que ha especificado como parametro de consulta produjo el error "EF"

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

ERROR 2471 - La expresión que ha especificado como parametro de consulta produjo el error "EF"

Publicado por William (2 intervenciones) el 22/10/2020 17:22:29
Buen día,

Soy nuevo en esto de acces, agradezco su ayuda para poder solucionar este impase. Estoy realizando un código en el cual por medio de un inputbox solicito al usuario que digite el código del documento que desea eliminar. Luego deseo que acces valide que el código que el ingreso, exista en la base de datos, por lo que realizo una función dcount, para saber si existe un registro con ese código o no, y que si existe pregunte al usuario si lo quiere eliminar o no. Pero cuando ejecuto el código me genera el error: Se ha producido el error '2471' en tiempo de ejecución: La expresión que ha especificado como parámetro de la consulta produjo el error 'EF'

Este es el código que estoy utilizando para realizar lo que expuse anteriormente.

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdEliminar_Click()
 
Dim CDP As String
Dim pregunta As Byte
 
CDP = inputbox("Digite el consecutivo del CDP que desea eliminar", , "EF-AÑO-XXXX")
If DCount("*", "TB8_Datos CDP", CDP) > 0 Then
pregunta = MsgBox("Se va a eliminar el documento " & CDP & ". ¿Desea continuar?", vbYesNo)
Else
MsgBox "El consecutivo ingresado, no se encuentra registrado en la base de datos."
 
End If

De antemano agradezco su colaboración, para saber que he hecho mal.
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

ERROR 2471 - La expresión que ha especificado como parametro de consulta produjo el error 'EF'

Publicado por Anonimo (3319 intervenciones) el 22/10/2020 17:47:28
Normalmente cuando se detiene con un error marca la línea en que se produce y esa pista es util.

Podrias publicar que dato devuelve en 'CDP' (que es una variable de texto) y valorar si es el adecuado para utilizar como filtro o condición en la función DCount (que espera una igualdad, no un numero o dato alfanumérico)
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: 5
Ha aumentado su posición en 19 puestos en Access (en relación al último mes)
Gráfica de Access

ERROR 2471 - La expresión que ha especificado como parametro de consulta produjo el error "EF"

Publicado por William (2 intervenciones) el 22/10/2020 19:38:53
Buenas tardes, gracias por responder. Cuando ejecuto el código, este se detiene en la siguiente línea:

1
If DCount("*", "TB8_Datos CDP", [CDP]) > 0 Then

Con respecto al comentario de que la función espera una igualdad, no un número o dato alfanumerico, tengo entendido que la formula dcount, es lo correspondiente a la formula en excel CONTAR.SI. Por experiencia se que esta formula, toma el valor que se pretende contar, sin importar si es texto o número y cuenta el número de veces que este aparece en una matriz determinada. Es más, he realizado el ejercicio en otros formularios, pero como formula en campos calculados y funciona perfectamente, sin embargo, cuando lo hago en código vba, me genera el error.

Agradezco sus comentarios.
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

ERROR 2471 - La expresión que ha especificado como parametro de consulta produjo el error "EF"

Publicado por Anonimo (3319 intervenciones) el 23/10/2020 00:58:02
Daré por supuesto que en esa variable se recibirá un dato tal como:
EF-AÑO-2020

Quizás solo el numero final:
2020

Así que la expresión que evaluara el motor de Access se parecera a esto:

DCount("*", "TB8_Datos CDP", "EF-AÑO-2020")

Y sinceramente yo (en la misma situación que Access) me rascaría el colodrillo y me preguntaría ¿esto para que sirve y por donde lo tomo?

Lo 'normal' de esa función de dominio es que se le imponga un filtro o condición como tercer parámetro.
En esa condición o igualdad a cumplir se le ha de dejar bien claro 'en que campo de esa tabla/consulta/dominio' se ha de localizar el dato

La expresión correcta (suponiendo un campo con ese dato o la posibilidad de tenerlo) se llamase UN_CODIGO se escribirá así:

DCount("*", "TB8_Datos CDP", "UN_CODIGO = 'EF-AÑO-2020'")

Y si se utiliza la variable obtenida con el InputBox

DCount("*", "TB8_Datos CDP", "UN_CODIGO = '" & CDP & "'")

En fin, creo que en otros entornos se utilizan mas parámetros y uno de ellos será 'donde' y otro 'que' que juntos y de la mano implican una condicion o igualdad

UN_CODIGO <<<<==== Donde se busca
CPD <<<<==== lo que se trata de localizar

Y no se debe de perder de vista que Access y Excel son primos -no hermanos- (lo que los convierte en parecidos pero no iguales)
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