ACCESS 2010 - Varios resultados con 1 parámetro

Buenas. Quería pedir su colaboración con mi siguiente problema.

Tengo 1 cuadro, donde quiero buscar 1 DNI y que me busque la información de 5 BD diferentes, cada uno tiene un cuadro de lista de donde buscar la información (Lista3, Lista129, Lista130, Lista131 y Lista132)

Usando el código de un access que hice en su momento con ayuda de gente de acá, puse lo siguiente, pero no solo no me encuentra nada, si no que encima me tira un error de "INTRODUZCA EL VALOR DEL PARÁMETRO" con el parámetro "BOTON"

Private Sub Busqueda_Click()
If Not IsNull(Me.Buscar) Then
Select Case Me.Aux
Case Is = "1"
Select Case Me.Aux2
Case Is = "DNI"
Me.Lista3.RowSource =
Me.Lista129.RowSource =
Me.Lista130.RowSource =
Me.Lista131.RowSource =
Me.Lista132.RowSource =

1 Respuesta

Respuesta
1

Como te decía en la otra respuesta y suponiendo que el cuadro donde escribes el DNI(aunque personalmente no lo haría así) se llama Buscar y las tablas se llaman respectivamente, Boton, Tobillera, etc, tendrías bien puesto el código. Suponiendo que el DNI ers numérico

En el botón Busqueda el código es

lista3.rowsource="select * from boton where dni = " & me.buscar & ""

lista129.rowsource="select * from Tobillera where DNI = " & me.buscar & ""

Etc

Julián, muchas gracias por las respuestas en ambos post. 

Cada tabla tiene un nombre en particular (Lista3 = BaseSemaforo; Lista129 = BaseDetenidos, etc), , y le puse de código para el Botón "Buscar" lo que adjunto acá abajo, pero me arroja como resultado "CAMPO DE TABLA NO ENCONTRADO". En el siguiente mensaje adjunto la siguiente parte del código, al hacer click en "Busqueda de Casos"(Lista0) luego se me debería habilitar "DNI" (lista1)

Private Sub Buscar_AfterUpdate()
  If Not IsNull(Me.Buscar) Then
        Select Case Me.Aux
            Case Is = "1"
                Select Case Me.Aux2
                    Case Is = "DNI"
                        Lista3.RowSource = "select DNI from BaseSemaforo where DNI = " & Me.Buscar & ""
                        Lista129.RowSource = "select DNI from BaseDetenidos where DNI = " & Me.Buscar & ""
                        Lista130.RowSource = "select DNI from BaseConsignas where DNI = " & Me.Buscar & ""
                        Lista131.RowSource = "select DNI from BaseDerivaciones where DNI = " & Me.Buscar & ""
                        Lista132.RowSource = "select DNI from BaseBotTobi where DNI = " & Me.Buscar & ""
                    Case Else
                        MsgBox "CAMPO DE TABLA NO ENCONTRADO"
                End Select
private sub lista0_click()
me.lista1.visible = true
select case me.lista0
    case is = "busqueda de casos"
        me.aux = "1"
        me.aux2 = null
        me.lista1.rowsource = "dni"
        me.lista3.columncount = 9
        me.lista3.columnwidths = "2.314cm;2cm;2cm;1.803cm;2.307cm;2.307cm;2.512cm;2.508cm;3cm"
        me.lista3.rowsource = "select fecha, suceso, dni, boton, tobillera, consigna, medidas, llamados, color from basesemaforo"
        me.lista129.columncount = 9
        me.lista129.columnwidths = "2.505cm;2.505cm;6cm;2.3cm;3.503cm;3.501cm;3.501cm;3.501cm;3cm"
        me.lista129.rowsource = "select fecha, suceso, detenido, dni, tipificacion, actuaciones1, actuaciones2, actuaciones3, origen from basedetenidos"
        me.lista130.columncount = 7
        me.lista130.columnwidths = "2.501cm;2cm;7cm;2cm;3cm;3.501cm;4cm"
        me.lista130.rowsource = "select fecha, suceso, damnificada, dni, tipo, plazo, origen from baseconsignas"
        me.lista131.columncount = 5
        me.lista131.columnwidths = "3 cm;3 cm;3 cm;3 cm; 5 cm"
        me.lista131.rowsource = "select id_vic  tima, suceso, llamadas_previas, dni, victima from basederivaciones"
        me.lista132.columncount = 6
        me.lista132.columnwidths = "3cm;2cm;9cm;2cm;2cm;3cm;3cm"
        me.lista132.rowsource = "select fecha, suceso, persona, dni, boton, tobillera from basebottobi"
     case else
        msgbox "tabla no encontrada"
end select
end sub

No voy a entrar en detalles del ancho de las columnas, pero la instrucción la tienes bien. Mira, si tengo un formulario, donde tengo dos cuadros de lista pero sería lo mismo para 5( es que no me gusta trabajar), el cuadro de texto Buscar, el botón. El primer cuadro de lista es lista 7 y el segundo es lista 11, y le voy a decir que me busque en las tabla Clientes y Pedidos

Como no tengo campos con DNI uso IdCliente pero es lo mismo. Si escribo, por ejemplo 1

Cuando aprieto el botón

El código del botón es

Private Sub Busqueda_Click()
Lista7.RowSource = "select * from clientes where idcliente=" & Me.Buscar & ""
Lista11.RowSource = "select * from pedidos where idcliente=" & Me.Buscar & ""
End Sub

Bien es cierto que me cambia el orden de las columnas del cuadro de lista( lo he puesto así, porque no sé como tienes construidas las tablas), pero si quieres guardar el formato del principio has hecho, pero que muy bien, en poner lo de

Select fecha, suceso, ....

Para cada uno

Lo único que se me ocurre es que el campo DNI sea texto, por lo que tendrás que ponerlo como

..........wher Idcliente='" & me.buscar & "'"

Sos un increible genio! Muchisimas gracias

Julián, una ultima consulta espero no abusar de tu gentileza.

Quisiera usar el "like" para que me haga una búsqueda parcial, entiendo que según tu ejemplo sería 

"select * from pedidos where idcliente like " & Me.Buscar & ""

Es así? Cambiar el = por like?

Puedes hacerlo. Normalmente, si es un campo numérico no se usa. El like se suele usar con campos texto. Por ejemplo, vamos a suponer que el campo DNI es texto y no quieres tener que escribir su valor completo en el cuadro de texto Buscar. Simplemente poner una cadena. Podrías usar

Lista7.RowSource = "select * from clientes where DNI like ""*""&buscar&""*"""

Así, si escribieras, por ejemplo, 123 en el cuadro de lista te aparecerían todos aquellos registros en que en el campo DNI haya la cadena 123, por ejemplo

22.123.456

48481237

Etc

Me salió a la perfección con tu explicación, gracias.

¿Te puedo hacer otra consulta? Se libre de no contestarme más, pero son cosas que me están surgiendo a partir de errores y no las puedo solucionar.

Quiero agregar un segundo parámetro de búsqueda. El primero era "DNI" y ahora quiero agregar PERSONA (para que busque por el APELLIDO o NOMBRE).

Debería agregar en el Aux. 2 un nuevo parámetro en el RowSource, ¿pero en el código como lo agrego?

     Case Is = "2"
                Select Case Me.Aux2
                    Case Is = "PERSONA"
Select Case Me.Lista0
    Case Is = "Busqueda de Casos"
        Me.Aux = "2"
        Me.Aux2 = Null
        Me.Lista1.RowSource = "PERSONA"

En criterios puedes poner hasta 99 condiciones AND o OR. Por ejemplo

docmd.openform"clientes",,,"Dni='" & me.dni & "' and nombrecliente='" & me.cuadroTextoA & "' and Pais=""Alemania"" or pais=""España"" and puestotrabajo like ""*""&[escriba una cadena del puesto]&""*"""

En este caso particular, cuando pulsaras el botón, aparte de ejecutar las demás condiciones, te pediría que escribieras una cadena del puesto. La escribes y se abriría el formulario( o informe) con sólo los registros que cumplan esos criterios.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas