** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Problema con FindFirst
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Problema con FindFirst

 Responder Responder
Autor
Mensaje
Steinhaus Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 22/Junio/2023
Localización: Perú
Estado: Sin conexión
Puntos: 1
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Steinhaus Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Problema con FindFirst
    Enviado: 22/Junio/2023 a las 14:51
Tengo un pequeño proyecto en Access 2019 y deseo, dado el ingreso de un código (string) el FindFirst me encuentre el primero que coincida con el criterio dado para así rápidamente completar la descripción del producto.

Dim tablaProd As Recordset

Set tablaProd = CurrentDb.OpenRecordset("Productos")

With tablaProd
.FindFirst ("[Codigo] = " & CodiArticulo)
If .NoMatch Then
MsgBox ("Artículo no está cargado en STOCK")
PrecioArticulo.Enabled = False
CodiArticulo.SetFocus
Else
If IsNull(.Fields("PrecioBase")) Then
MsgBox ("No se ha registrado el precio base" & Chr(13) & "para este artículo.")
Exit Sub
End If
PrecioArticulo = .Fields("PrecioBase")
DescriArticulo = .Fields("Descripción")
PrecioArticulo.Enabled = True
PrecioArticulo.SetFocus
End If
End With


Sin embargo cuando ejecuto el sub me arroja error '3251' (Operación no válida para este tipo de objeto) y al depurar me marca la sentencia de FindFirst.

Este mismo código lo he utilizado anteriormente en proyectos Access 2003 sin problemas. ¿Qué puede estar mal en Access 2019?

Muchas gracias!
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5704
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Junio/2023 a las 15:47
A partir de access 2007, access es mucho mas rigorista en cuanto a sus reglas internas y todo debe estar muy bien definido, sin ninguna duda para él, por lo tanto cambia la línea del Set a:

Set tablaProd = CurrentDb.OpenRecordset("Select * From Productos")

O también puede ser así

Set tablaProd = CurrentDb.OpenRecordset("Productos", dbOpenDynaset)

Edito: Set tablaProd = CurrentDb.OpenRecordset("Productos") estas abriendo el conjunto de registros como una tabla y FindFirst no permite abrirlo como tabla solo como consulta o Dinaset.

Saludos.




Editado por emiliove - 22/Junio/2023 a las 15:59
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable