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

Tema cerradoBuscar con ADO

 Responder Responder
Autor
Mensaje
miki Ver desplegable
Nuevo
Nuevo


Unido: 29/Marzo/2019
Localización: sabadell
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Tema: Buscar con ADO
    Enviado: 02/Mayo/2019 a las 16:53
Buenas tarde,

No me salgo con algo tan sencillo......

Tengo un formulario con 4 campos de texto, y un boton (el de busqueda). Quiero que cuando encuentre un registro de una base de datos, los demas campos tambien se actualicen a la busqueda realidada. De momento solo me pone si lo encuentra, si no lo encuentra y si el campo esta vacio, pero no me actualiza el resto de campos.
Agradeceria me ayudarais. A continuacion pongo el codigo, Aqui solo he puesto un campo de la base de datos para actualizar. 
Dim conexion As New Connection

Set conexion = CurrentProject.Connection

Dim consulta As String

consulta = "SELECT * FROM Manis"
Dim rs As New Recordset

rs.Open consulta, conexion


If IsNull(Me.Texto6.Value) Then

MsgBox "El camp no pot estar vuit", vbOKOnly, "AVISO"
Me.Texto6.SetFocus
Else

rs.MoveFirst
rs.Find ("NumeroDgas='" & Texto6.Value & "'")
MsgBox "Registro encontrado", vbInformation + vbOKOnly, "Abonados"

Texto9.Value = Poblacion
Texto6.SetFocus

If rs.EOF Then

MsgBox "Registro NO encontrado", vbInformation + vbOKOnly, "Abonados"

End If

End If

End Sub


Editado por miki - 03/Mayo/2019 a las 15:58
miki
Arriba
Marciana Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 20/Septiembre/2004
Localización: Argentina
Estado: Sin conexión
Puntos: 257
Enlace directo a este mensaje Enviado: 02/Mayo/2019 a las 20:01
Prueba esto:
Reemplaza rs.Find ("NumeroDgas='" & Texto6.Value & "'")

por lo siguiente:
Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.Find ("NumeroDgas='" & Texto6.Value & "'")
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Cordialmente, Marciana
Arriba
miki Ver desplegable
Nuevo
Nuevo


Unido: 29/Marzo/2019
Localización: sabadell
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 03/Mayo/2019 a las 15:56
Muchas gracias por la respuesta,

Me pone que el objeto no admite  esta prpiedad o metodo y me hace referencia a esta linea:

    rs.Find ("NumeroDgas='" & Texto6.Value & "'")

La verdad es que pensaba que esto seria mucho mas sencillo.

miki
Arriba
Marciana Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 20/Septiembre/2004
Localización: Argentina
Estado: Sin conexión
Puntos: 257
Enlace directo a este mensaje Enviado: 03/Mayo/2019 a las 16:08
Debería ser algo así:
rs.FindFirst "[NumeroDgas] = '" & Texto6.Value & "'"
Cordialmente, Marciana
Arriba
miki Ver desplegable
Nuevo
Nuevo


Unido: 29/Marzo/2019
Localización: sabadell
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 03/Mayo/2019 a las 16:26
Hola de nuevo y perdona que os moleste,

Ahora me funciona, osea me lo encuentra pero el campo poblacion no se me actualiza.
Le he puesto que el campo de texto9 sea igual al campo poblacion de la base de datos,
Pero seguro que esta mal porque no hace nada...
rs.Find "[NumeroDgas] = '" & Texto6.Value & "'" 
MsgBox "Registro encontrado", vbInformation + vbOKOnly, "Abonados"

Texto9.Value = Me.Poblacion

miki
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11924
Enlace directo a este mensaje Enviado: 03/Mayo/2019 a las 18:03
En ese código que has puesto no sabes si lo ha encontrado o no. Analizemos:
rs.Find ..... --> busca el registro
MsgBox --> ¡Encontrado!

Nota: tu utilizas ADO, yo DAO. Para mi gusto es bastante más fácil de utilizar.

El código seria algo así (escrito al vuelo):


Dim rst  As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("SELECT * FROM MANIS",,dbReadOnly)
rst.FindFirst "[NumeroDgas] = '" & Me!Texto6 & "'"
If rst.NoMatch Then
  ' Registro no encontrado
Else
  ' Registro encontrado
  Me!UnControl = rst!UnCampo
  Me!OtroControl = rst!OtroCampo
End If
rst.close
Set rst = Nothing

Un saludo



Editado por xavi - 03/Mayo/2019 a las 18:03
Xavi, un minyó de Terrassa

Mi web
Arriba
miki Ver desplegable
Nuevo
Nuevo


Unido: 29/Marzo/2019
Localización: sabadell
Estado: Sin conexión
Puntos: 21
Enlace directo a este mensaje Enviado: 03/Mayo/2019 a las 18:15
Muchiiisimas gracias,

Solucionado¡¡¡¡¡

Xavi lo que haré es mirarme lo que has dicho tu, programar en DAO en lugar de ADO.

La verdad es que voy bastante perdido y voy aprendiendo a base de palos jjjj.

Suerte que esta este foro.


miki
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable