Todoaccess.com Access, desarrollo a medida, programas, software, ERP, aplicaciones, soporte, Contabilidad, Gestion Comercial, Análisis financiero, Caja, Facturas, consultas on line, articulos, tablas, formularios, informes, macros, VBA, enlaces, libros, revistas, formacion
FAQ - Preguntas Frecuentes de Access

FAQ's (Preguntas Frecuentes)

Inicio (FAQ's)

Tablas

Formularios

Consultas

Macros

Informes

Modulos

FAQ

Pregunta:


Hola, hice una explicación mas o menos detallada sobre mi consulta en Word y te anexé la BD que estoy realizando, para mayor comodidad tuya. Por lo que coloque la información en el correo todoaccess@todoaccess.com

No espero que me hagas la aplicación, solo que me digas en forma adecuada como hacerlo, y el código necesario para ello.

Gracias

-LEWIS-



Resumen:


Automatismo para crear consultas en formularios e informes


Respuesta:


Estimado Lewis:

Hemos estudiado el alcance de la solución para dar la mejor funcionalidad al planteamiento del formulario [frmpaneldeconsultas2], y creemos que la mejor solución, a nuestro juicio, es:

1- Crear una tabla que alimente este formulario como origen de datos. Esta tabla debe contener como campos los valores de todos los criterios de selección que se van a utilizar para crear de forma automática el string de la consulta que se mostrará en otro formulario, en un informe, o en el interface que se decida para ofrecer la ergonomía que el usuario final necesita. Esta tabla, debe contener también un Id único que puede ser un campo auto numérico, de forma que se creen tantas consultas como el usuario desee, e incluso un campo de descripción, para nombrarlas de alguna forma.
2- Crear el automatismo para montar el string de la consulta. Este automatismo se puede crear de dos formas: a) incluyéndolo en un campo dentro de la propia tabla, la indicada anteriormente (opción más aconsejable) y b) crearlo cada vez que se pulsa el botón para ir al formulario [Consulta], el cual se trataría en el propio formulario; o crearlo cada vez que se pulsa el botón para ir al informe [Imprimir], tratándose en el propio informe.

Para diseñar la solución, después de crear la tabla con todos los valores, hay que comenzar a trabajar en el formulario, esta tarea será la más compleja, ya que deberás controlar los eventos del formulario y sus campos.

De forma predeterminada cuando se abra el formulario se cargará el primer registro disponible, si no hay ninguno, habrá que crearlo, por lo que se hace necesario crear un sistema de botones, o aprovechar la barra de desplazamiento de MS Access.

Para trabajar con el código vba, lo primero que debemos hacer en el formulario, es abrir en modo diseño, abrir las propiedades, seleccionar eventos, y colocar el cursor en el inicio del modulo, allí declararemos las primeras propiedades:

‘*****
Option Compare Database
Option Explicit
‘******

Una vez declaradas estas variables, ya podemos trabajar con el modulo VBA.

Cuando hayamos terminado de seleccionar todas las opciones del formulario y pulsemos el botón [consulta] o [Imprimir], habrá que montar la string, por lo que hay que trabajar con estos eventos.

‘*****
Private Sub Form_Boton_Click()
‘Declaramos la variable del string
Dim sql as string
‘ Creamos el string
sql = “SELECT * FROM [Nombre de la tabla origen de datos]”
sql = sql & “ WHERE [Nombre de la tabla origen de datos] .[Nombre campo 1] = “ & [Variable 1]
sql = sql & “ AND [Nombre de la tabla origen de datos] .[Nombre campo 2] = “ & [Variable 2]
….
sql = sql & “ AND [Nombre de la tabla origen de datos] .[Nombre campo n] = “ & [Variable n]


‘ Actualizamos el campo del formulario (campo con propiedades de visible = No) donde se ubicará el string de la consulta
[Nombre Campo String] = sql

End Sub
‘*****

Posteriormente esta consulta puede ser utilizada para mostrarla en otro formulario, o en un informe. Para ello solo hay que abrir a la tabla que hemos creado y cargar el campo que contiene el string como si de una consulta normal se tratara.

Ejemplo para abrir un formulario, tratando el evento al abrir:

‘*****
Private Sub Form_Open(Cancel As Integer)
‘Abrimos un espacio para la base de datos
Dim DB As Database
Set DB = CurrentDB()
‘Creamos un recordset (registros virtuales)
Dim T_REC As Recordset
‘Creamos una consulta para seleccionar el string que queremos usar
Dim sql As String
sql = “SELECT * FROM [Nombre de la tabla origen de datos]”
sql = sql & “ WHERE [Nombre de la tabla origen de datos] .[Identificador Unico] = “ & [Identificador que deseamos abrir]
‘Declaramos la consulta
Set T_REC = DB.Openrecordset(sql, dbopensnapshot, dbseechanges, dboptimistic)
‘Pasamos el valor de la consulta al origen de datos del formulario
Me.RecordSource = T_REC! [Nombre Campo String]
‘Cerramos los objetos abiertos
T_REC.CLOSE
SET T_REC=Nothing
DB.Close
Set DB=Nothing
End Sub
‘*****

Para abrir un informe, haríamos exactamente lo mismo. Y de esta forma asignamos un origen de datos automático.

Esperamos que esta solución te ayude.

Ten en cuenta que el trabajo que hay que realizar es tedioso, ya que lo que deseas es crear un automatismo realmente profesional.

También debes considerar las dificultades con las que te vas a encontrar, hasta que lo hagas operativo. Ten paciencia y cuanto antes empieces, antes acabarás.

Saludos.

Todoaccess.com
Ángel Pérez


Si Esta FAQ no cumple con sus expectativas puede:


» Haga de todoAccess su Página Inicio

» Añada todoAccess a sus Favoritos

» Recomiende esta página

» Ayúdenos a mejorar

© Ángel Pérez Díaz, 1993-2010 - Todos los derechos reservados. - Condiciones de Uso - Declaración de Privacidad - Contacto

Dudas y sugerencias sobre este sitio: todoAccess@todoAccess.com - Web diseñada para una resolución optima de 1.280 x 1.0244

Microsoft y el logotipo de Office son marcas o marcas registradas de Microsoft Corporation en Estados Unidos y otros países

Aceptamos Tarjetas Visa y Master Card Aceptamos pagos de PayPal