ASP - Consulta sobre ASP y conexión ADO

 
Vista:

Consulta sobre ASP y conexión ADO

Publicado por FreeSoftWarrior (1 intervención) el 24/12/2006 02:13:42
Buenas tardes:
Tengo Windows Xp Profesional SP2 y el IIS 5.1. Hace poco tuve problemas con las páginas ASP pues me mostraba el siguiente error:

Páginas Active Server error 'ASP 0115'
Error inesperado
/empresa/home.asp
Error capturable (C0000005) en un objeto externo. La secuencia de comandos no puede continuar.

Luego de mucho buscar en Google y el Knoledge Base de Microsoft, llegué a la conclusión de que algo había pasado con las librerias del MDAC y encontré la forma de re-instalarlo. La re-instalación (lo comento para quien le pueda interesar) pude hacerla ubicando el archivo mdac.inf en la carpeta windows/inf que es una carpeta oculta. Luego simplemente le digo instalar (botón derecho del mouse) y me pide el CD con el Xp SP2 y listo.

El problema desapareció. Sin embargo ahora aparece más o menos seguido este otro error:

Error de Microsoft VBScript en tiempo de ejecución (0x800A01FB)
Error de excepción: 'open'
/empresa/downloads/index.asp Linea 24

Aunque no es exclusivo del archivo asp indicado, todas las veces que aparece este error hace referencia a la apertura de una base de datos. Yo uso Access y MySQL (he instalado hace tiempo los controladores ODBC para MySQL).

Ahora bien, Microsoft indica que este bug fue resuelto con el MDAC 2.6 (http://support.microsoft.com/kb/262681) y cito:

.......
Causa
This problem occurs because the session variables in Internet Information Server (IIS) 5.0 are stored in the Global Interface Table (GIT), and this causes an access violation with an open recordset when it is stored in a session variable.
.........

......
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.
Este error se corrigió en versión 2.6 o posterior Componentes de Acceso datos de Microsoft.
......

Pero con el SP2 se instala el MDAC 2.8 y posteriormente hay una actualización para el mismo en el Windows Update.
La conclusión a la que estoy llegando es que luego de mucho tiempo de usar mis rutinas habituales de conexión de datos, algo esta "sobrecargando" al IIS. Y esta es mi consulta (disculpen la introducción pero lo consideré necesario para establecer el marco de la consulta).

Yo realizo los diseños ASP usando esta secuencia:

1. Creo un archivo INC llamado DB.INC que tiene el siguiente código:

<%
Dim Conexion,Tabla
Set Conexion=Server.CreateObject("adodb.connection")
Set Tabla1=Server.CreateObject("adodb.recordset")
Set Tabla2=Server.CreateObject("adodb.recordset")
Set Tabla3=Server.CreateObject("adodb.recordset")
Conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=H:\inetpub\base de datos\Data.mdb"
%>

2. Todos los diseños los hago con INCLUDE de algún tipo. El más común es <!-- #include file="header.asp" --> y el código de este archivo es el siguiente:

<%
starttime = Timer()
Session.lcid=7178
Response.Expires=0
Response.ExpiresAbsolute = Now()
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control","private"
Response.CacheControl = "no-cache"
Response.CacheControl = "Private"
Response.Buffer=True

varNombreDeLaEmpresa="Masters Designers EIRL"
%>

<link rel="SHORTCUT ICON" href="icono.ico">

<!-- <script>
function derecha(e)
{
if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2))
{alert('Mensaje de advertencia');return false;}
else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2))
{alert('Mensaje de advertencia')}
}
document.onmousedown=derecha
</script> -->

<!-- #include file="setup/adovbs.inc" -->
<!-- #include file="setup/db.inc" -->

Eventualmente agrego otros archivos INCLUDE que son comunes a todas las páginas ASP.

3. Luego al empezar a crear cada página, normalmente este es el tipo de rutina de conexión que realizo con ACCESS

<%
Temp="Select * From GoogleAdSense Where Tipo='B'"
Tabla1.Open Temp, Conexion, adOpenStatic, adCmdTable
While Not Tabla1.EOF
....... código a efectuarse.......
Tabla1.MoveNext
Wend
Tabla1.Close
%>

Algunas veces utilizo la conexión sin adOpenStatic ni adCmdTable y es únicamente cuando utilizo el RecordCount que aperturo una tabla con esas características.
Hace relativamente poco he empezado a probar con GetRows

<% Response.Write DBase("contenido","clase,intro","",2) %>

Previamente he cargado un archivo asp de esta forma <!-- #include file="funciones.asp" --> y que tiene rutinas de este tipo

Function DBase(tabla, criterio, orden, campo)
Temp="Select * From " & tabla

....... operaciones con los datos enviados......

Tabla1.Open Temp, Conexion
arrDBData = Tabla1.GetRows()
Tabla1.Close

iRecFirst = LBound(arrDBData, 2)
iRecLast = UBound(arrDBData, 2)
For J = iRecFirst To iRecLast
Response.Write(arrDBData(campo,J)&"<br>")
Next
End Function

Pero aún no he uniformizado este tipo de programación en todos los diseños que tengo

Para las conexiones con MySQL uso esta rutina básicamente

<%
Set ConMySQL=Server.CreateObject("adodb.connection")
ConMySQL.Open "DRIVER={MySQL ODBC 3.51 Driver};DATABASE=md_servicios; USER=usuario;PASSWORD=password;OPTION=3;"
Set rs=server.createobject("ADODB.Recordset")
rs.Open "Select * From gc_cardinfo",conMySQL,2,3,1
While Not rs.EOF
....... código a utilizarse......
rs.MoveNext
Wend
rs.Close
%>

Como el problema es reconocido como cierto conflicto entre el ISS y el Global Interface Table, presumo que en parte podría ser por la forma de programar que uso, y que con el paso del tiempo puede que haya "desorientado" al IIS o al Xp mismo.

Mi consulta es sobre la forma de programar que utilizo, que mejoras puedo realizar, que consideraciones puedo tener adicionalmente. Soy relativamente novato en esto de programación ASP y reconozco que aún no he profundizado mucho en la programación misma y que estoy bastante "desfasado" respecto a la aparición de ASP.NET, pero quiero enmendar errores y depurar hábitos para lograr mejores productos y resultados.

Agradezco desde ya todo tipo de comentarios constructivos y críticos sobre mi post. Un saludo cordial desde Lima, Perú. Les deseo sinceramente unas fiestas navideñas de lo más alegres y familiares.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder