Access - Buscar un registro en la tabla

 
Vista:

Buscar un registro en la tabla

Publicado por JC1 (2 intervenciones) el 11/03/2002 19:34:58
Hola, muy buenas de nuevo.
Tengo el siguiente problema:
Necesito localizar un registro en una tabla para modificr uno de los campos de dicho registro, uso el siguiente código:

Concepto = "Factura " & campoactivo.Value

(Aqui estoy en un registro que me saca el numero de factura a buscar en la otra tabla)

Set rstcaja = database.OpenRecordset("Caja")
rstcaja.FindFirst "concepto = '" & concepto & "'"

Se sobreeentiende que database = currentDB
y Caja es la tabla a abrir y buscar el campo "Concepto"
por ejemplo: Concepto = Factura 1000, al meons eso es lo que necesito buscar.

(aqui me da error, me dice "operacion no valida para este tipo de objeto)
He probado a cambiar la sintaxis por si era el problema, pero no veo forma

Gracias por la ayuda.
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
Imágen de perfil de Alejandro

Buscar un registro en la tabla

Publicado por Alejandro (4142 intervenciones) el 20/04/2023 22:41:08
Hola.

El error que estás recibiendo puede deberse a que estás intentando usar el método 'FindFirst' en un objeto Recordset que no está abierto o que está vacío. Antes de usar el método 'FindFirst', asegúrate de que el objeto Recordset 'rstcaja' está correctamente abierto y que contiene datos.

Aquí te dejo un ejemplo de cómo podrías corregir el código para buscar un registro en la tabla y modificar uno de sus campos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Dim db As DAO.Database
Dim rstCaja As DAO.Recordset
Dim concepto As String
 
Set db = CurrentDb()
 
' Obtener el valor del concepto a buscar
concepto = "Factura " & campoactivo.Value
 
' Abrir el recordset de la tabla 'Caja'
Set rstCaja = db.OpenRecordset("Caja", dbOpenDynaset)
 
' Buscar el registro con el concepto especificado
If Not rstCaja.BOF And Not rstCaja.EOF Then
    rstCaja.FindFirst "Concepto = '" & concepto & "'"
 
    If Not rstCaja.NoMatch Then
        ' El registro fue encontrado, modificar el campo deseado
        rstCaja.Edit
        rstCaja("CampoAmodificar") = "Nuevo valor"
        rstCaja.Update
    Else
        ' El registro no fue encontrado
        MsgBox "El registro no se encontró en la tabla 'Caja'."
    End If
Else
    ' No hay registros en la tabla 'Caja'
    MsgBox "La tabla 'Caja' está vacía."
End If
 
' Cerrar el recordset y la base de datos
rstCaja.Close
Set rstCaja = Nothing
Set db = Nothing

En este ejemplo, primero se define el objeto Database 'db' y se establece una variable 'concepto' con el valor a buscar. Luego, se abre un objeto Recordset 'rstCaja' en modo de lectura-escritura ('dbOpenDynaset') de la tabla "Caja".

Después, se verifica si el objeto Recordset 'rstCaja' tiene algún registro y se usa el método 'FindFirst' para buscar el registro que tenga el concepto especificado. Si el registro se encuentra, se edita el campo deseado y se actualiza el registro mediante los métodos 'Edit', 'Update'. Si el registro no se encuentra, se muestra un mensaje de error.

Finalmente, se cierra el objeto Recordset y se establecen a 'Nothing' las variables 'rstCaja' y 'db'.

Espero que este ejemplo te ayude a solucionar tu problema.
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