¿Cómo solucionar Error 3061 se esperaba 1 en access tengo un código y quisiera saber la solución?

Una pregunta yo tengo este código y me marca el mismo error es para un punto de venta al usar el nombre del producto como código de barras para la venta
Dim RS As DAO.Recordset
Dim SQL As String

If IsNull(Me.txtCodigoArt.Value) Then
MsgBox "No ha escaneado ningun Codigo todavia!"
Exit Sub
Else
codBarraProd = Me.txtCodigoArt.Value
End If
SQL = "SELECT * FROM PRODUCTOS WHERE DESC_PRODUCTOS = '" & codBarraProd & "'"
Set RS = " & CurrentDb.OpenRecordset(SQL) & "
If RS.BOF And RS.EOF Then
MsgBox "Verifique codigo de barras, Producto no Existe", vbOKOnly, "No existe Codigo"
Me.txtCodigoArt.Value = ""
Me.txtCodigoArt.SetFocus
Exit Sub

2 Respuestas

Respuesta
2

Ese error te indica que "algo" pasa con el criterio de la SQL. Desde mi punto de vista, pueden suceder dos cosas:

1º/ Que la variable codBarraProd no tenga un valor, porque en la asignación previa no lo coge.

2º/ Que el campo DESC_PRODUCTOS sea numérico, en cuyo caso a la SQL le sobran las comillas simples que encierran a la variable, es decir "... WHERE DESC_PRODUCTOS = " & codBarraProd 

Ahora bien, si lo que quieres es comprobar si existe o no el producto, lo puedes hacer más fácil usando DCount() o DLookup():

If IsNull(Me.txtCodigoArt) Then
MsgBox "No ha escaneado ningun Codigo todavia!"
Else
If DCount("*","PRODUCTOS","DESC_PRODUCTOS = '" & Me.txtCodigoArt & "'")=0 Then

MsgBox "Verifique codigo de barras, Producto no Existe", vbOKOnly, "No existe Codigo"

End If
End If

De nuveo, si DESC_PRODUCTO es número, la sintaxis sería: "DESC_PRODUCTOS = " & Me.txtCodigoArt

Me sirvió al corregir eso solo que ahora me salio otro error en esta línea

Set RS = " & CurrentDb.OpenRecordset(SQL) & "

Para "setear" un recordset, simplemente pon:

Set RS = CurrentDb.OpenRecordset(SQL) 

Las " y los & donde tú los has puesto, no tienen ningún sentido.

esto me sigue apareciendo

¿Y ahora por qué pones un paréntesis después del = en la parte del WHERE, que luego no cierras?

Ya lo cerré y solucione con lo que me comentaste del where pero me sigue saliendo un error 2465

¿El campo se llama realmente DESC_PRODUCTOS o es, como pones más adelante DESC_PRODUCTO? Si pones un nombre de campo que no existe en la tabla, es lógico que no te funcione...

Y de todas formas, yo quitaría esos dos paréntesis del WHERE

¿Me podrías decir a que se refiere con error 3464?

No me sé de memoria todos los códigos de error, y sin más información, como la descripción del error, o donde te sale, imposible decirte nada...

¿Tienes alguna forma de contacto directa ya que es más difícil estar por el foro?

Lo siento, no respondo consultas por privado, pues a parte de alguna mala experiencia, no beneficia en nada a la comunidad de usuarios de access.

Puedes contactarme aquí o en el foro nksvaccessolutions.com/Foro, pero siempre de manera pública.

Respuesta

JesúsCon respecto al error 3464 en tiempo de ejecución. "No coinciden los tipos."Supongo que el control CodBarraProd es un campo tipo texto, por lo cual debe ir entre comillas, tal como lo pusiste en la instrucción DLookUp que se encuentra debajo de la instrucción resaltada: .
SQL = "SELECT * FROM PRODUCTOS  WHERE DESC_RODUCTOS = '" & CodBarraProd  & "'"    .
En resumen, reemplaza los parentesis por comillas simples en la sentencia SQLSuerte !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas