Al realizar consulta no muestra valor consultado en inputbox

Tengo la siguiente instrucción para consultar matriculas

Dim stLinkCriteria As String, strMatricula

‘Preguntamos por la matricula

StrMatricula = InputBox("Introduzca número matricula a consultar", "Consultas vehículos año 2007")

If Nz(strMatricula, "") <> "" Then

'aquí tenemos el dato y como lo vamos a utilizar varias veces, creamos la condición

   stLinkCriteria = "MATRICULA Like '*" & strMatricula & "*'  Or MATRICULA1 Like  '*" & strMatricula & "*' Or MATRICULA2 Like  '*" & strMatricula & "*' Or MATRICULA3 Like  '*" & strMatricula & "*'"

'y la aplicamos para verificar que hay registros validos

   If DCount("MATRICULA", "Año2007", stLinkCriteria) <> 0 Then

'si hay datos que cumplan la condición, entonces abrimos el formulario con las mismas condiciones

        DoCmd.OpenForm "ConsultaHistoricos", , , stLinkCriteria, , , 1

        Else

'aquí llega si el DCount no da un resultado valido

        MsgBox "La matricula no esta registrada", vbInformation, "Aviso"

        End If

     Else

'aqui llega si no se introduce un dato para matricula

    MsgBox "No ha introducido un dato válido", vbInformation, "Aviso"

        End If

Me podíais indicar donde pudiera estar el error, ya que al realizar la consulta me muestra el primer registro de la tabla y no el que selecciono en el inputBox, os comentare también que en el formulario que se abre tengo puesto:

Private Sub Form_Load()

If Me.OpenArgs = 1 Then

Me.RecordSource = "Año2007"

End If

1 respuesta

Respuesta
2

Yo creo que el error está en que al cambiarle el recordsource pierdes el filtro.

Prueba a hacerlo así:

DoCmd. OpenForm "ConsultaHistoricos",,,,,, stLinkCriteria

y en el form load:

If Not IsNull(Me.OpenArgs)  Then

Me.RecordSource = "Año2007"

Me.Filter=Me.OpenArgs

Me.FilterOn=True

End If

Tambien deberías comprobar que con ese criterio te devuelve los resultados que esperas.

Hola y gracias por responder, me ha sido de gran ayuda tu respuesta, me ha filtrado por el criterio que me has indicado, pero me he encontrado con un inconveniente, la he querido aplicadar de la siguiente manera y no me funciona, me podrías orientar en como debería de poner la instrucción, para que me filtrara según el año.

Private Sub Form_Load()

If Not IsNull(Me.OpenArgs) Then

Me.RecordSource = "Año2007"

Me.RecordSource = "Año2008"

Me.RecordSource = "Año2009"

Me.RecordSource = "Año2010"

Me.RecordSource = "Año2011"

Me.RecordSource = "Año2012"

Me.RecordSource = "Año2013"

Me.RecordSource = "Año2014"

Me.RecordSource = "Año2015"

Me.RecordSource = "Año2016"

Me.RecordSource = "Año2017"

Me.Filter = Me.OpenArgs

Me.FilterOn = True

End If

Un saludo,Gracias.

Ese código no tiene ningún sentido porque el recordsource del formulario es único, y con todas esas líneas lo único que haces es cambiarlo con cada una y dejarlo al final en la tabla "Año2017", con lo que es imposible que te encuentre el valor que buscas de la tabla "Año2007"

Podrías hacerlo así:

DoCmd. OpenForm "ConsultaHistoricos",,,,,, "Año2007/" & stLinkCriteria

Es decir, cada vez que quieras buscar le pasas el nombre de la tabla en la que buscar, seguido de la / y la cadena de criterios.

Luego En el load haces:

If Not IsNull(Me.OpenArgs) Then

Dim args() as string

Args=split(me.openargs,"/")

me.RecordSource = args(0)

Me.Filter=args(1)

Me.FilterOn=True

End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas