Documentación de la clase dbGrid
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.

Más información: https://www.fotonostra.com/dbgrid