Un nuevo tipo de objetos
Cómo son, cómo se comportan y cómo se pueden manipular. |
Acceso a bases de datos Access El objetivo de esta Clase ASP es hacer posible y fácil el acceso a bases de datos Access desde Internet, o en una intranet que utilice el protocolo TCP/IP y tenga instalado el servidor IIS (Internet Information Server) de Microsoft. Para ello basta con incluir el archivo de la clase (dbgrid.asp) en una página .asp, crear una instancia (un objeto de la clase dbGrid) y establecer sus propiedades. Debe existir, al menos, una base de datos Access. El objeto dbGrid debe saber su ubicación, bien porque le suministramos su ruta física, o bien porque lo dirigimos hacia una conexión DSN que habremos creado préviamente. Para poder identificar registros, cada tabla debe contener un índice sin repeticiones. Lo más práctico es establecer un primer campo autonumérico y configurarlo como clave principal. Los nombres de los campos pueden contener únicamente letras y números, sin espacios. |
Objetos dbGrid Un objeto dbGrid está formado por unas propiedades o características que lo definen (tabla, registros, botones, ... ) y unos métodos que ejecutan acciones (mostrar rejilla, editar, borrar, ordenar, ...) Estos dos tipos de elementos se pueden usar de muchas formas aunque, para facilitar las cosas, se ha incluido un subproceso Activar que activa el objeto y proporciona todas las herramientas para navegar que haya decidido incluir quien ha programado la página. Lo más simple es, por tanto, diseñar una buena página, incluir un objeto, establecer las propiedades y dejar que el método Activar se encargue de su gestión. Sin embargo, en ocasiones puede resultar interesante o necesario acceder directamente a los métodos de la clase para conseguir un comportamiento distinto, o bien ampliar sus posibilidades. En general, los métodos ejecutan un trabajo y devuelven el resultado en forma de mensajes o código HTML que se envia al navegador. Para que los usuarios puedan comunicarse con el objeto existen una serie de enlaces y botones. Cuando se pulsan establecen unos valores en campos (ocultos o visibles) de un formulario, llamado f1. Por ejemplo, cuando se pulsa el botón "Editar registro", se establece el valor "edit" para el campo oculto "rtn", y el valor-clave del registro actual en el camp "id". A continuación, se envia el promulario f1 a la própia página. Esta recibe los nuevos valores del formulario, El método Activar se encarga de dirigir el flujo, en este caso, hacia el método "Editar", pasándole como parámetro el valor recibido en el campo "id". En las próximas páginas se explican brevemente todos los métodos, propiedades y valores de retorno que maneja la clase dbGrid. |
Métodos de interficie.
Funciones y subprocesos que facilitan la comunicación con los objetos. |
Public Function Archivos(CarpetaInicio) Devuelve una matriz (Array) con los archivos de bases de datos (.mdb) contenidos en la carpeta especificada y en todas sus subcarpetas. No funciona si se usa DSN. arrArchivos = oDb.Archivos(nombreCarpeta)
|
Public Function Tablas() Devuelve una matriz (Array) con las tablas contenidas en el archivo especificado mediante la propiedad "Base" o en "NomDSN", arrTablas = oDb.Tablas
|
Public Function Registros() Devuelve el objeto RecordSet (conjunto de registros) de la consulta actual. oRsRegistros = oDb.Registros
|
Public Function MkHtml() Devuelve una cadena con el código HTML de la rejilla de datos y sus controles asociados. cadHtmlRejilla = oDb.MkHtml
|
Public Function Editar(Tipo) Devuelve una cadena con el código HTML del formulario para añadir o editar los datos de un registro. "Tipo" debe ser "add" (añadir) o "edit" (editar). cadHtmlEditar = oDb.Editar("add")
|
Public Function Salvar(Tipo) Devuelve un mensaje de texto que confirma la inclusión o modificación de un registro en la tabla correspondiente. "Tipo" debe ser "add" (añadir) o "edit" (editar). cadSalvar = oDb.Salvar("edit")
|
Public Function Borrar(Identificador) Devuelve un mensaje de texto que confirma la eliminación del registro cuya clave primaria coincide con el parámetro recibido (Identificador). cadBorrar = oDb.Borrar(valorClave)
|
Public Sub Activar() Subproceso que genera y gestiona un formulario que envia los datos de sus campos visibles y ocultos a la página que lo incluye. Analiza el resultado recogido de los demás métodos y lo envía al navegador. De este modo, el formulario vuelve a recibir los datos que él mismo se ha enviado y hace funcionar el objeto sin necesidad de programación externa. oDb.Activar
|
Otras funciones y procesos.
Métodos internos de la clase. Se pueden usar desde el exterior
en casos muy específicos. |
Public Function MkCampSel() Devuelve el código HTML de la página para seleccionar las columnas que muestra la rejilla. cadHtmlCols = oDb.MkCampSel
|
Public Function MkTbl() Devuelve el código HTML del control que permite elegir una tabla. cadHtmlTbl = oDb.MkTbl
|
Public Function MkRes() Devuelve el código HTML del control para seleccionar el número de registros por página. cadHtmlRes = oDb.MkRes
|
Public Function MkBusca() Devuelve el código HTML del control y los botones para el buscador. cadHtmlBusca = oDb.MkBusca
|
Public Sub AbreMDB() Crea la conexión para abrir la Base de Datos. oDb.AbreMDB
|
Public Sub CierraMDB() Cierra la conexión a la Base de Datos. oDb.CierraMDB
|
Public Sub Campos() Crea una matriz de tres dimensiones con los nombres, tipos y longitudes de los campos, y la almacena en la variable "aCampos". oDb.Campos
|
Public Sub MkSql(cSql) Crea la expresión de búsqueda a partir de los datos obtenidos del control del buscador y la almacena en la propiedar "GrUsaSQL". oDb.MkSql(cadenaBuscador)
|
Public Function HayClave() Devuelve verdadero o falso según exista o no una clave primaria de índice. Si la clave existe, establece el valor de la propiedad "TipoClave". logHayClave = oDb.HayClave
|
Public Function MkCampo(Campo,Tipo) Función usada por el método "Editar" que devuelve el código HTML para incluir el campo especificado en el formulario, con su valor (tipo "edit") o en blanco( Tipo "add"). cadHtmlCampo = oDb.MkCampo(nombreCampo, "edit")
|
Public Function TipoCampo(Campo) Devuelve una cadena HTML con el tipo de un campo, su precisión (numéricos) y longitud. cadHtmlTipo = oDb.TipoCampo(nombreCampo)
|
Private Function Boton(nombre,campo,valor) Devuelve el código HTML para crear un botón de formulario. cadHtmlBoton = oDb.Boton(nombreBoton, campoFormulario, nuevoValor)
|
Private Function BtnTxt(nombre,campo,valor) Devuelve el código HTML para crear un enlace de texto. cadHtmlBtnTxt = oDb.Boton(nombreEnlace, campoFormulario, nuevoValor)
|
Private Function BtnImg(nombre,campo,valor,id,imagen) Devuelve el código HTML para crear botones de imagen. El nombre recibido se usa como texto alternativo (alt) y se modifica el valor del campo Id. cadHtmlBtnImg = oDb.Boton(txtAlt, campoForm, Valor, valCampoClave, nombreImg)
|
Private Function Volver() Devuelve el código HTML del botón de regreso cuando se edita, añade o borra un registro. Si se usa Internet Explorer, se ejecuta un temporizador de unos 2 segundos que hace el mismo efecto sin necesidad de pulsar el botón. cadVolver = oDb.Volver
|
Public Sub LimpiaError() Elimina el último mensaje de error. oDb.LimpiaError
|
Private Sub MkError() Añade información sobre el último error, si lo hay, a la propiedad "ErrMsg". oDb.MkError
|
Propiedades.
Valores de los objetos que se pueden asignar y consultar. |
Public Property Carpeta()
Carpeta actual, si no se usa DSN.Asignar: oDb.Carpeta = Server.MapPath( "/data" ) Consultar: cadCarpeta = oDb.Carpeta
|
Public Property Base()
Base de Datos actual, si no se usa DSN.Asignar: oDb.Base = "base.mdb" Consultar: cadBase = oDb.Base
|
Public Property UsaDSN()
Lógico: indica si se usa DSN.Asignar: oDb.UsaDSN = true Consultar: logUsaDSN = oDb.UsaDSN
|
Public Property NomDSN()
Nombre de la conexión DSN.Asignar: oDb.NomDSN = "mombreDSN" Consultar: cadNomDSN = oDb.NomDSN
|
Public Property Tabla()
Tabla de datos actual. Si GrTbl es "true", se inicia con esta Tabla, pero se permite seleccionar otras. Asignar: oDb.Tabla = "tabla" Consultar: cadTabla = oDb.Tabla
|
Public Property GrTbl()
Lógico. Indica si se incluye el control para seleccionar tabla.Asignar: oDb.GrTbl = true Consultar: logTbl = oDb.GrTbl
|
Public Property Clave()
Nombre del campo clave (índice).Asignar: oDb.Clave = "campoClave" Consultar: cadClave = oDb.Clave
|
Public Property TipoClave()
Típo de la clave primaria.Asignar: oDb.TipoClave = TipoClave Consultar: cadTipoClave = oDb.TipoClave
|
Public Property GrAdd()
Lógico. Indica si se incluye el botón "Añadir".Asignar: oDb.GrAdd = true Consultar: logAdd = oDb.GrAdd
|
Public Property GrDel()
Lógico. Indica si se incluye el botón "Borrar".Asignar: oDb.GrDel = true Consultar: logDel = oDb.GrDel
|
Public Property GrEdit()
Lógico. Indica si se incluye el botón "Editar".Asignar: oDb.GrEdit = true Consultar: logEdit = oDb.GrEdit
|
Public Property GrCampSel()
Lista de campos visibles, separados por comas. Establecer una lista de columnas con GrCampSel sólo tiene sentido si también se ha fijado una Tabla concreta y no se incluye el botón para seleccionar tablas, GrTbl. Se produciría un error ya que es poco probable que otras tablas incluyan los mismos campos. Tampoco es recomendable si, a la vez, se incluye el botón para seleccionar columnas estableciendo GrCampos = true. En este caso, el componente se inicia con los campos de la lista, se permite seleccionar otras columnas, pero no funciona el botón "Todas". Asignar: oDb.GrCampSel = "Campo1, Campo2, ..." Consultar: cadCamposSel = oDb.GrCampSel
|
Public Property GrCampos()
Lógico. Indica si se incluye el botón "Columnas ...".Asignar: oDb.GrCampos = true Consultar: logCampos = oDb.GrCampos
|
Public Property GrBusca()
Lógico. Indica si se incluye el control del buscador.Asignar: oDb.GrBusca = true Consultar: logBusca = oDb.GrBusca
|
Public Property GrWidth()
Numérico. Anchura del componente. Por defecto, 612.Asignar: oDb.GrWidth = 720 Consultar: numWidth = oDb.GrWidth
|
Public Property GrNumRes()
Número de resultados por página. Por defecto, 15. Si GrRes es "true", se inicia com este valor, pero se pueden seleccionar otros. Si el valor asignado a GrNumRes no está en la lista, se incluirá para que esté disponible. Asignar: oDb.GrNumRes = numeroResultados Consultar: intRes = oDb.GrNumRes
|
Public Property GrRes()
Lógico. Indica si se podrá elegir número de resultados.Asignar: oDb.GrRes = true Consultar: logRes = oDb.GrRes
|
Public Property GrCorte()
Númérico. Caracteres en cada columna. Por defecto, 50. Truco: Un número decimal hace que la altura de las celdas se ajuste para mostrar el máximo número de campos a la vez, cortando las líneas, y evitando, si se puede, las barras de desplazamiento. En caso contrario, cada registro ocupa una línea. Asignar: oDb.GrCorte = 40 Consultar: numCorte = oDb.GrCorte
|
Public Property GrQSParams()
Parámetros adicionales que se pasan a la página. Si las variables que aquí se especifican sobreescriben campos del formulario f1 del método Activar, prevalecen las de GrQsParams. Por ejemplo, establecer oDb.GrQSParams = "pag=9999" harà que sólo se muestre la última página de un conjunto de datos. Los valores establecidos con GrQSParams no se aplican a la primera llamada que se hace a la página. Asignar: oDb.GrQSParams = "id1=valor1&id2=valor2&..." Consultar: cadQSParams = oDb.GrQSParams
|
Public Property GrUsaSQL()
Cadena SQL de la consulta actual. Truco: Se puede establecer un orden predeterminado incluyendo la sentencia ORDER BY como parte de la cadena SQL: oDb.GrUsaSQL = "true ORDER BY Fecha DESC". En este ejemplo, la rejilla mostraria todos los datos (true) ordenados por fecha en orden descendente, es decir, primero los más recientes. Asignar: oDb.GrUsaSQL = "cadenaSQL" Consultar: cadSQL = oDb.GrUsaSQL
|
Public Property GrEstilo()
Nombre del estilo css que se pasa al objeto.Asignar: oDb.GrEstilo = "nombreEstilo" Consultar: cadEstilo = oDb.GrEstilo
|
Public Property GrOrden()
Lógico. Indica si se incluyen botones para ordenar columnas.Asignar: oDb.GrOrden = true Consultar: logOrden = oDb.GrOrden
|
Public Property GrTipoCol()
Lógico, interno. Indica si se muestran los tipos de campos.Asignar: oDb.GrTipoCol = true Consultar: logTipoCol = oDb.GrTipoCol
|
Public Property VerTipos()
Lógico. Indica si se incluye el botón "Ver Tipos de Campos".Asignar: oDb.VerTipos = true Consultar: logVerTipos = oDb.VerTipos
|
Public Property Colors()
Matriz (Array) con los ocho colores para la rejilla, en este orden:
1.- Fondo tabla,
2.- Letra cabecera,
3.- Fondo cabecera,
4.- Letra rejilla,
5.- Fondo rejilla,
6.- Fonfo orden ascendente,
7.- Fondo orden descendente,
8.- Fondo cabecera Clave.Asignar: oDb.Colors = Array( "6699CC", "000000", "FFFFFF", ... ) Consultar: arrColors = oDb.Colors
|
Public Property ErrMsg()
Último mensaje de error.Asignar: oDb.ErrMsg = "mensajeDeError" Consultar: cadMensajeError = oDb.ErrMsg
|
Public Property Credits()
Nombre y e-mail del autor. Sólo lectura.Consultar: cadCredits = oDb.Credits
|
Valores de retorno.
Además de los valores devueltos por los métodos, algunas acciones
modifican campos (ocultos o visibles) del formulario f1 creado por el método
Activar. A continuación se muestran los nombres de los campos
afectados junto con los valores que se establecen ( campo1 = valor1; campo2 = valor2, ... ) |
Botones y enlaces de la rejilla
Los distintos controles establecen estos valores:Botón Añadir: rtn = "add" Botón Columnas ...: rtn = "camp" Botón Orden natural: ord = ""; id = -1 Botón Orden ascendente: ord = nombre_campo + "ASC"; id = -1 Botón Orden descendente: ord = nombre_campo + "DESC"; id = -1 Botón Mostrar/ocultar tipos: tc = inverso del actual; id = -1 Botón Editar registro: rtn = "edit"; id = valor_campo_calve Botón Borrar registro: rtn = "del"; id = valor_campo_calve Botón Primera página: pag = 1; id = -1 Botón Página anterior: pag = actual-1; id = -1 Botón Página siguiente: pag = actual+1; id = -1 Botón Última página: pag = ultima_pagina; id = -1 Control Seleccionar tabla: ord = ""; cSql = ""; cFld = ""; pag = 1 Buscador, botón Todos: cSql = "" |
Botones del formulario de edición
Los distintos controles establecen estos valores:Botón Volver: rtn = "tbl" Botón Guardar cambios (Añadir): rtn = "eau" Botón Guardar cambios (Editar): rtn = "eu" |
Valores devueltos por métodos
Algunas funciones también establecen valores:Método Salvar: rtn = "tbl" Método Borrar: rtn = "tbl" Método MkCampSel: rtn = "tbl" |
Acceso desde el exterior El método Activar volverá a cargar la rejilla de datos si recibe el valor "ext" en el campo "rtn". De esta forma se ofrece la posibilidad de manipular el estado de los objetos desde el exterior sin utilizar valores que se establecen internamente. |