Buscar con cuadro de lista un registro

Necesito que busque un egistro depende del el valor de cuadro de lista pero me da error

On Error Resume Next
' Buscar el registro que coincida con el control.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[lista] = " & Str(Me![ListaElije].ItemData(0))
Me.Bookmark = rs.Bookmark

En click lo puse

Alguien me ayuda a saber donde esta el error

Respuesta
3

Pregunto. ¿No es más sencillo poner, por ejemplo, si tengo el formulario Clientes

Si elijo Argentina

Y en el evento Después de actualizar del cuadro de lista Elegir(que sólo tiene una columna)

Private Sub Elegir_AfterUpdate()
DoCmd.SearchForRecord acForm, "clientes", acFirst, "[pais] = " & "'" & Screen.ActiveControl & "'"
End Sub

De todas formas, si hubiera varios registros que cumplen la condición, quizá sería más cómodo poner

me.recordsource="select * from clientes where pais like '" & me.elegir & "'"

Es decir, que el origen de registros del formulario sean aquellos de la tabla Clientes en que país sea igual al que has elegido en el cuadro de lista Elegir.

2 respuestas más de otros expertos

Respuesta
3

En tu código faltan comillas en la línea del FindFirst:

On Error Resume Next
' Buscar el registro que coincida con el control.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[lista] = '" & Str(Me![ListaElije].ItemData(0)) & "'"
Me.Bookmark = rs.Bookmark

Aunque me suena un poco raro como haces referencia al valor seleccionado del cuadro de lista... porque así siempre te buscará el primer elemento del mismo y no el que selecciones.

Yo lo pondría así:

On Error Resume Next
' Buscar el registro que coincida con el control.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[lista] = '" & Me.[ListaElije] & "'"
Me.Bookmark = rs.Bookmark

Muchísimas Gracias Sveinbjorn El Rojo era una comilla, soy muy malo en eso y siempre es el mismo error practicamete, con esto lo solucione completamente

' Buscar el registro que coincida con el control.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[lista] = '" & Me.ListaElije.Column(1) & "'"
Me.Bookmark = rs.Bookmark

Espero le sirva a alguien también

Respuesta
1

No soy un experto en esta materia, pero con ayuda de un experto logré diseñar un formulario con un Listbox que se filtraban los Clientes, y al darle dobleclick a un Cliente abro el formulario cliente (frmCliente) seleccionado según su IdCliente. Esto es similar a lo que tú buscas hacer, "que busque un registro depende del el valor de cuadro de lista".

Te dejo mi código, y adaptalo a tu necesidad.

Private Sub LBoxResultados_DblClick(Cancel As Integer)
Dim StDocName As String, StLinkCriteria As String
On Error GoTo Err_LBoxResultados_DblClick_Click
StDocName = "frmCliente"
StLinkCriteria = "[IdCliente]=" & Me![IdCliente]
DoCmd.OpenForm StDocName, , , StLinkCriteria
'Establezco que No se pueda Añadir, pero si Editar  en Formulario Clientes
Set Frm = Forms!frmCliente.Form
Frm.AllowAdditions = False
Frm.AllowEdits = True
'Bloqueo el Botón de Añadir Registro
Frm.NuevoCliente.Enabled = False
Set Frm = Nothing
DoCmd.Close acForm, Me.Name
Exit_LBoxResultados_DblClick_Click:
Exit Sub
Err_LBoxResultados_DblClick_Click:
MsgBox Err.Description
Resume Exit_LBoxResultados_DblClick_Click
End Sub   'LBoxResultados_DblClick(Cancel As Integer)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas