Necesito ayuda adaptar código de un ejemplo de Sveinbjorn access para mi Base datos

Buenos días os comento en que consiste, se trata de un formulario llamado FBuscador para en mi caso buscar los socios de mi base de datos en el cual hay un txt llamado txtBuscar y un cuadro de lista llamado lstPersonas relacionada con la tabla TSocios y los nombres de estos, y tiene el siguiente código en el evento al cambiar del txt, para según vas escribiendo e el txt te va reduciendo la lista y acercándose a lo que buscamos:

Private Sub txtBuscar_Change()
Me.lstPersonas.RowSource = "SELECT TSocios.[Codigo Socio], TSocios.Nombre FROM TSocios" _
& " WHERE TSocios.Nombre " _
& "LIKE '*" & Me.txtBuscar.Text & "*' ORDER BY Nombre"
Me.lstPersonas.Requery
End Sub

Esto lo tengo adaptado ya el problema lo tengo en el botón que se da para seleccionar el registro que tiene ya que llama a un procedimiento:


Private Sub cmdVer_Click()
'Declaramos las variables
Dim ctlList As Control
Dim Opcion As Variant
Dim miSeleccion As String
'Iniciamos la estructura del filtro
miSeleccion = "[Codigo Socio] IN ("
Set ctlList = Me.lstPersonas
'Cogemos los valores seleccionados en el cuadro de lista, y los añadimos al filtro
For Each Opcion In ctlList.ItemsSelected
miSeleccion = miSeleccion & ctlList.ItemData(Opcion) & ","
Next Opcion
'Si la longitud del filtro es 9, es que no seleccionamos ninguna opcion
If Len(miSeleccion) = 9 Then
MsgBox "No has seleccionado ningún socio", vbInformation, "AVISO"
Exit Sub
End If
'Quitamos la última coma(,) del filtro
miSeleccion = Left(miSeleccion, Len(miSeleccion) - 1) & ")"
'Abrimos el mensaje en Modo COnsulta y cerramos el Buscador
Call AbreFormAgenda(3, miSeleccion)
DoCmd.Close acForm, Me.Name
End Sub

y el procediemiento este otro:

Public Sub AbreFormSocios(Modo As Byte, Optional Filtro As String)
DoCmd.OpenForm "FSocios", acDesign, , , , acHidden
If Modo = 1 Then
Forms("FAgenda").cmdAñadir.Visible = True
Else
Forms("FAgenda").cmdAñadir.Visible = False
End If
DoCmd.Close acForm, "FAgenda", acSaveYes
Select Case Modo
Case 1
DoCmd.OpenForm "FAgenda", , , , acFormAdd
Case 2
DoCmd.OpenForm "FAgenda"
Case 3
DoCmd.OpenForm "FAgenda", , , Filtro, acFormReadOnly
End Select
End Sub

El cual te abre el formulario de diversas formas y yo solo quiero que simplemente me lo abreiera por el socio seleccionado.

Espero que me haya explicado bien un saludo y gracias por anticipado

1 Respuesta

Respuesta
2

En el código, en vez de la llamada al procedimiento, tienes que poner,:

DoCmd. OpenForm "NombreForm",,, miFiltro

Para que te abra el formulario filtrado. Si quieres que sólo se abra para consultar, le añades el acFormReadOnly

¡Gracias! Gracias ya está realizado y funciona perfecto pero tuve que cambiar y poner DoCmd.OpenForm "FSocios",,, miSeleccion

Ya que si ponía miFiltro simplemente me abría el formulario por el primer registro y no por el que era ahora si.

Muchas gracias como siempre

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas