La Casa
El Virus
Queries y Formularios:
Aqui les traigo un pequeño programa el cual a mi parecer
le puede servir bastante, en mi trabajo hay mucha gente que no sabe hacer nada de nada
(con respecto a programas). Les cuento... Cree una aplicación con Access la cual
mantiene información de nuestros clientes, cuando empeze a crear la aplicación tuve que
tener reuniones con los usuarios para definir los requerimientos (hasta aqui nada fuera de
lo común). Los requerimientos, despues de muchas charlas, fueron definidos y empeze
a trabajar en la BD. La BD les proveeria: Formularios para entrar y ver
información, reportes de todo tipos y otras cosas más. Uno de los últimos
requerimientos era que yo deberia proveer información o reportes fuera de lo ordinario,
pues como anteriormente los usuarios no eran muy conocidos de computadoras, y como yo no
queria que me estuviesen llamando a todas horas pidiendome que les cree un nuevo query, el
cual les brindaria la info que desen empeze a crear una pequeña aplicación la cual
actuaria basicamente como un Mago o Wizard!! Aqui va el codigo y gráficos para tu
uso (Una cosa que me olvidava mis usuarios son gringos asi que las variables usadas en el
programa son en ingles, pero se que esto no sera ningun problema para ti pues lo
importante es el codigo).
El formulario
Ahora que ya sabes como es el resultado final comensemos a crear el corazón de este:
|
Primero definimos las declaraciones explicitas,
|
Option Compare Database 'Usamos
el orden de la base de datos para comparar strings
Option Explicit
Dim astrTables() As String * 50
'Aqui empezamos a declarar nuestro codigo SQL
Const STR_DISTINCT = "SELECT DISTINCTROW"
Const STR_SELECT = "SELECT"
Const STR_FROM = "FROM"
Const STR_WHERE = "WHERE"
Const STR_ORDERBY = "ORDER BY"
Const STR_OWNERSACCESS = "WITH OWNERACCESS OPTION;"
Const STR_NOOWNERSACCESS = ";"
Const LBL_BLUE = 8388608
Const LBL_GREY = 8421504
Const LBL_YELLOW = 65535
Const MB_OK = 0, MB_OKCANCEL = 1 ' Definimos los botones
Const MB_YESNO = 4
Const MB_ICONQUESTION = 32, IDYES = 6 ' Definimos los icons.
Const ERR_PROPERTY_NONEXISTENT = 3270
Const ERR_OBJECT_NONEXISTENT = 3265
Const KEY_CANCEL = &H3
Const KEY_BACK = &H8
Const KEY_TAB = &H9
Const KEY_RETURN = &HD
Const KEY_SHIFT = &H10
Const KEY_PRIOR = &H21
Const KEY_NEXT = &H22
Const KEY_HOME = &H24
Const KEY_LEFT = &H25
Const KEY_UP = &H26
Const KEY_RIGHT = &H27
Const KEY_DOWN = &H28
Dim strSQL As String 'seguimos declarando as definiciones de SQL
Dim strSQLSelect As String
Dim strSQLFrom As String
Dim strSQLWhere As String
Dim strSQLWhereField As String
Dim strSQLOrderBy As String
Dim strFieldSelect As String * 255
Dim strFieldOrderBy As String * 255
Dim strLastWhere As String * 255
Dim strLastCrit As String * 255
Dim strTableFrom As String * 255
Dim cintTables As Integer 'Número de Tablas en FROM
Dim cintFields As Integer 'Número de campos en SELECT
Dim cintOrderFields As Integer 'Número de campos ein ORDER BY
Dim cintWhere As Integer 'Número de reglas en WHERE
Dim intReturn As Integer 'General-purpose return value
Dim fintToolTip As Integer 'Bandera para los tips (tooltips)
Dim ctrlDistinctRow As Control 'chkDistinctRow checkbox
Dim ctrlOwnersAcc As Control 'chkOwnersAccess checkbox
Dim ctrlFields As Control
Dim ctrlSortFields As Control
Dim ctrlWhereFields As Control
Dim ctrlTableList As Control
Dim ctrlAggregate As Control
Dim ctrlgrpAndOr As Control
Dim ctrlLblAnd As Control
Dim ctrlLblOr As Control
Dim ctrlLblFld As Control
Dim ctrlLblSortFld As Control
Dim ctrlLblWhereFld As Control
Dim ctrlLblWhere As Control
Dim ctrlLblWhereCrit As Control
Dim ctrlLblAggregate As Control
Dim ctrlLblToolTip As Control
Dim ctrlLblTT As Control
Dim ctrlTxtSql As Control
Dim ctrlTxtWhereFld As Control
Dim ctrlTxtWhereCrit As Control
Dim ctrlCmdAddWhere As Control
Dim ctrlCmdCreateQuery As Control
Dim ctrlCmdDeleteQuery As Control
Dim frmName As String * 255
|
|
|
Luego cuando el formulario se abre...
|
Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
Dim dbCurrent As Database
Dim iaintTable As Integer, intTblCnt As Integer
Dim iaintCounter As Integer, intReturn As Integer
Set dbCurrent = CurrentDb()
iaintCounter = 0
intTblCnt = dbCurrent.TableDefs.Count - 1
ReDim astrTables(intTblCnt)
For iaintTable = 0 To intTblCnt
If Left(dbCurrent.TableDefs(iaintTable).name, 4) <> "MSys" Then
'No las tablas de sistema
If Left(dbCurrent.TableDefs(iaintTable).name, 2) <>
"LB" Then
astrTables(iaintCounter) =
dbCurrent.TableDefs(iaintTable).name
iaintCounter = iaintCounter + 1
End If
End If
Next
ReDim Preserve astrTables(iaintCounter)
''' Inicializamos las variables de SQL y los controles de los formularios
mtwInitilizeCtls 'llamamos funcion mtwinitilizectls
mtwInitilizeSQL 'llamamos funcion mtwinitilizesql
''' Toggle botones y labels (no se como se dice en lengua hispana :)
mtwToggleBtnMain cintTables
''' Toggle controles agregados
mtwToggleWhereAggregate False
''' Toggle controles de criterio
mtwToggleWhereCriteria False
''' Toggle cmdAddWhere boton
mtwToggleCmDWhere False
''' Toggle los AND/OR grupo de botones
mtwToggleAndOr cintWhere
End Sub
|
|
Te habras dado cuenta que cuando este formulario se habre no
solo ejecuta el codigo en open form pero tambien el siguiente:
|
Private Sub
mtwInitilizeCtls()
On Error Resume Next
''' Comentarios: Esta rutina inicia controles comunes de referencia
''' en este modulo
'''
''' Llamada por : Form_Open
'''
''' Argumentos: Ninguno
'''
''' Devuelve: Nada
'''
''' Palabras clave: Inicia Controles
'''
''' Date Developer Accion
''' -------------------------------------------------------------
''' 03/01/98 Skar man Creada
'''
frmName = Me.name
Set ctrlDistinctRow = Me!chkDistinctRow
Set ctrlOwnersAcc = Me!chkOwnersAccess
Set ctrlWhereFields = Me!cboWhereFields
Set ctrlFields = Me!cboFields
Set ctrlSortFields = Me!cboSortFields
Set ctrlTableList = Me!cboTblList
Set ctrlAggregate = Me!cboAggregate
Set ctrlLblWhereFld = Me!lblWhereFields
Set ctrlLblFld = Me!lblFields
Set ctrlLblSortFld = Me!lblSortFields
Set ctrlLblWhere = Me!lblWhere
Set ctrlLblWhereCrit = Me!lblWhereCriteria
Set ctrlLblAggregate = Me!lblAggregate
Set ctrlLblAnd = Me!lblAnd
Set ctrlLblOr = Me!lblOR
Set ctrlLblTT = Me!lblToolTip
Set ctrlTxtSql = Me!txtSQL
Set ctrlTxtWhereFld = Me!txtWhereField
Set ctrlTxtWhereCrit = Me!txtWhereCriteria
Set ctrlCmdAddWhere = Me!cmdAddWhere
Set ctrlCmdCreateQuery = Me!cmdCreateQuery
Set ctrlCmdDeleteQuery = Me!cmdDeleteQuery
Set ctrlgrpAndOr = Me!grpAndOr
Set ctrlLblToolTip = Me!zslblToolTip
End Sub
|
|
Private Sub
mtwInitilizeSQL()
On Error Resume Next
''' Comments: Esta rutina asigna valores e iniciaThis routine Assigns default values and
initilizes
''' variables al nivel de modulo.
'''
''' Called by: Form_Open
'''
''' Arguments: None
'''
''' Returns: None
'''
''' Keywords: Inicia Variables
'''
''' Date Developer Action
''' -------------------------------------------------------------
''' 03/01/98 Skarman Created
'''
strSQL = ""
strSQLSelect = ""
strSQLFrom = ""
strSQLWhere = ""
strSQLOrderBy = ""
strSQLWhereField = ""
strFieldSelect = ""
strFieldOrderBy = ""
strLastWhere = ""
strTableFrom = ""
cintTables = 0
cintFields = 0
cintWhere = 0
cintOrderFields = 0
intReturn = 0
ctrlTxtSql = ""
fintToolTip = True
End Sub
|
|
|
|
Saben una cosa en vez de escribir todo el codigo aca mejor
bajenlo querywizard ojo que todo esta en ingles . Si tienen
preguntas o dudas como funciona escribanme o visiten las cuevas. |
La Cueva, parte de la red de Cuevas, Inc., Para info en general escriban a
Skar