Como crear filtros

Estoy haciendo un programa en access, y quisiera saber como crear un filtro. Te explico:
Tengo una tabla creada llamada "orden" y un formulario ya diseñado con todos los campos. Lo que quiero son 2 cosas:
La primera que cuando se abra el formulario "orden" me abra el ultimo registro que hay y que ademas esté bloqueado. Y luego mediante un botón de nuevo registro que he creado se abra un nuevo registro (no se si me explico).
Y por ultimo lo que quiero es que al pulsar en un botón que he creado que se llama "vista previa" y abra el informe para luego ser impreso, que solo me muestre en el informe el registro que tenia activado.
¿Cómo se hace eso?
Por favor explícamelo de la forma más fácil para que lo entienda, ya que es la primera vez que voy a hacer un filtro

1 respuesta

Respuesta
1
Si no te sale te mandare un ejemplo por e-mail.
Me escribes a
[email protected]
(Pon ref."como crear filtros" para que yo sepa quien eres)
Nota
DoCmd.OpenReport "Creador de Ordenes de Trabajo para Digital", acViewPreview, , "WHERE Id=" & Texto350.Text
Va en una sola linea!(¿Aquí
en el foro sale en 2) ok?
'Primero pon solo esto:
Private Sub Comando2_Click()
DoCmd.OpenReport "Creador de Ordenes de Trabajo para Digital", acViewPreview
End Sub
'y si ha funcionado ahora pones esto:
Private Sub Comando2_Click()
DoCmd.OpenReport "Creador de Ordenes de Trabajo para Digital", acViewPreview, , "WHERE Id=" & Texto350.Text
End Sub
'cuentame si funciona.
La primera que cuando se abra el formulario "orden" me abra el ultimo registro que hay y que ademas esté bloqueado. Y luego mediante un botón de nuevo registro que he creado se abra un nuevo registro (no se si me explico).
OK.
Private Sub Form_Load()
DoCmd.GoToRecord , , acLast
'SistemaSoloLectura1
Me.RecordsetType = Snapshot
'SistemaSoloLectura2
Me.AllowDeletions = False
Me.AllowEdits = False
Me.AllowAdditions = False
End Sub
Private Sub Comando1_Click()
Me.AllowDeletions = True
Me.AllowEdits = True
Me.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
End Sub
Ahora tengo que cerrar después te mando el filter.
Ok. Espero a que me pases el filtro.
¿Ahora bien donde pongo el código que tu me has dado en el "evento al abrir"?.
Si es así no me funciona.
UN saludo
Y muchas gracias
... Continua...
Y por ultimo lo que quiero es que al pulsar en un botón que he creado que se llama "vista previa"
y abra el informe para luego ser impreso, que solo me muestre en el informe el registro que tenia activado.
¿Cómo se hace eso?
Private Sub Comando2_Click()
'Supongamos que el origen de datos del informe
'tiene un campo clave numerico que que identifica
'un registro entre la tabla y que de ejemplo ahora
'le llamaré "Id" y que queremos que escoja el valor "3"
DoCmd.OpenReport "AquiNombredelInforme", acViewPreview, , "Id=3"
'y del mismo modo podemos usar...
'DoCmd.OpenReport "AquiNombredelInforme", acViewPreview, , "Id=" & Text1.Text
'siendo por ejemplo Text1 un control cuadro de texto del formulario.
End Sub
Un filter o filtro para un formulario o un informe es una condición que limita la búsqueda de unos registros
de entre todos los que contiene el formulario o informe. Se usa...
Me. Filter (texto para definirlo)
Me. FilterOn (orden de activar)
(Vease tambien DoCmd. ApplyFilter)
El comando Filter ademas tiene los eventos de activo o inactivo.
La otra forma de aplicar un filtro es usar en Diseño de formulario>datos>filtro y activarlo o no
mediante Me. FilterOn independientemente de las anteriores formas de definirlo.
El código de "form load" corresponde en castellano al evento "Al cargar"
El codigo Comando1 y Comando2_click es el evento click.
Hola de nuevo... perdoname soy algo torpe.
Haber la pregunta de que muestre el ultimo registro y que se queden bloqueados y tal... perfecto funciona.
Lo que no me termina de funcionar es el botón de comando.
He copiado el texto que me has dado el del "comando2" en el botón de comando que he creado y lo he llamado "comando2"
Pues bien al darle a vista de formulario y hacer clic en ese botón, ¿me dice que introduzca el valor del parámetro Id?
¿Qué estoy haciendo mal?
El campo del cuadro de texto autonumérico, le he llamado text1
Un saludo y muchas gracias por tu paciencia
Tranquilo, no hay problema
Vamos a ver
'DoCmd.OpenReport "AquiNombredelInforme", acViewPreview, , "Id=" & Text1.Text
'siendo por ejemplo Text1 un control cuadro de texto del formulario.
"Id=" & Text1.Text
"Id"... seria el nombre del campo del informe
Text1.Text... seria el nombre del control 'cuadro de texto' en el formulario
añadiéndole seguidamente la propiedad text (el texto que contiene)
Para que "Id" tenga sentido es necesario que el informe que llamamos ahora
"AquiNombredelInforme" contenga un campo que se llame "Id".
Cuando se ejecute el botón "Comando2" se intentara abrir el informe
"AquiNombredelInforme" ,en vista previa, y con la condicion resultante
de la expresion "Id=" & Text1.Text.
Ojo! Puede haber un pequeño fallo ... que por si acaso deberás probar:
Prueba también con la expresión añadiendo where y los espacios en blanco
al lado de"=":
'DoCmd.OpenReport "AquiNombredelInforme", acViewPreview, , "WHERE Id = " & Text1.Text
A ver si ahora te funciona y no te preocupes por tener que preguntar las veces que haga falta.
En estos temas siempre hay dificultades... yo llevo mucho tiempo con cosas de estas
y ya no me sorprende nada, ja ja !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas