Errores en asp

Resulta que después de disenar una página web con ultradet y ver que funciona a la perfección en nuestra servidor en local, al subirla al servidor de internet nos aparecen los siguientes errores:
1.EN UNA PÁGINA APARECE EL FORMULARIO PERO AL RELLENARLO Y ENVIAR LOS DATOS NOS DA UN ERROR EN LA LINEA 88 (Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified ).
2.EN OTRA PÁGINA CON OTRO FORMULARIO NI SIQUIERA APARECE EL FORMULARIO Y NOS DA UN ERROR EN LA LINEA 102 (Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified )
Lo más extraordinario es que después de llamar al soporte del servidor nos indican que este problema es por sus medidas de seguridad y que cambiemos el código de dichas lineas, ya parece fácil pero después intentarlo sigue igual, ¿se puede solucionar, que lineas seria necesario sustituir y por que código?
Un saludo y espero que funcione algún día

3 respuestas

Respuesta
1
Bien, ese mensaje de error es porque el servidor ASP no encuentra la manera de conectarse con la base de datos, ya sea porque no encuentra el DSN o porque no encuentra la ruta de la base de datos (son las 2 formas de conectarse a la BD, con DSN o DSN-less). PERO, si ya revisaste todo y resulta que debería estar trabajando, entonces el problema se debe a que tu proveedor NO PERMITE accesar a directorios padre (aquello de "../").
Dreamweaver Ultradev genera un archivo de conexión (ejemplo Conexión.asp) el cual se incluye en todas las páginas que van a acceder a la base de datos, probablemente tienes una instrucción similar a esta:
<!--#include file="../Connections/Coneccion.asp" -->
Si observas, esta instrucción lleva el "../", lo cual está prohibido con muchos proveedores.
Si haces una prueba, verás que las páginas ASP que no accesan datos abren perfectamente.
Para ver si el error es generado por la sentencia #include, prueba lo siguiente:
1. Haz una página en dreamweaver que lea datos de tu base de datos, o usa una de las que ya tienes.
2. Luego esa página ponla en el directorio raíz de tu web (no dentro de un folder, debe estar fuera de todos los folders).
3. Luego edítala para modificar la línea del include de la siguiente forma:
<!--#include file="Connections/Coneccion.asp" -->
Al estar en la raíz, la página ASP buscará directamente dentro del folder connections la cadena de conexión a la BD, y te darás cuenta que la página ahora sí funciona, pero ¿por qué? Porque no está buscando en directorios padre, busca dentro de un folder que se puede acceder sin problema desde el directorio raíz.
Lo malo es que tendrías que corregir cada include de TODAS tus páginas que accedan a la base de datos y sacarlas TODAS al directorio raíz, lo cual es un problema grave.
Quizá puedas hacer algún truco para referirte a tu archivo de conexión usando Server. MapPath (consulta sobre ese tema por favor) para poder acceder a él usando una ruta absoluta en vez de una ruta relativa.
SUGERENCIA: Debido a que Dreamweaver Ultradev o MX es una excelente herramienta para administrar tus sitios Web, y como es casi imposible modificar TODAS tus páginas sólo porque el proveedor no te permite explorar directorios padre (lo cual es absurdo diría yo), mi recomendación sería que CAMBIES DE PROVEEDOR, es en serio, un proveedor que no te brinda el soporte que necesitas no sirve como tal, observa que le sugerí lo mismo a otra persona en otra de mis respuestas:
http://www.todoexpertos.com/herramientas/leermsgpublico.asp?idproceso=200311
¿Por qué? Porque es necesario mi amigo!, ¿Qué prefieres? ¿Darle gusto a tu proveedor, o darle gusto a tus usuarios? Yo me quedo con la segunda opción :-)
Lo que debes hacer ANTES de contratar con un proveedor de host, es solicitarle que te explique bien si vas a poder incluir una sentencia como la de #include en tus páginas o hay alguna restricción.
Hay unos proveedores gringos muy buenos, deberías de revisar sus planes de servicio (te puedo recomendar www.halfpricehosting.com), te aseguro que ellos NO TE SALDRÁN CON RESTRICCIONES DE ESTE TIPO :-)
Respuesta
1
Lo primero, decirte que es bastante difícil saber donde hay un error si no me mandas el código fuente.
Tampoco hablas de si conectas con una base de datos, que parece que si.
De todas formas, te mando el código de dos páginas ASP de ejemplo de manejo de formularios y bases de datos, y espero que te sirva de ayuda.
Aún así, creo que lo que te falla es la DSN de la base de datos.
Fichero ej1.asp:
<html>
<head>
<title>Pagina para insertar registros</title>
</head>
<body>
<form method=get action=ej2.asp>
Marca: <input type="text" name="marca"><br>
Modelo: <input type="text" name="modelo"><br>
Descripcion: <input type="text" name="descripcion"><br>
Precio: <input type="text" name="precio"><br>
Foto: <input type="text" name="foto"><br>
<input type="submit" value="Insertar">
</form>
</body>
</html>
Fichero 2.ASP:
<html>
<head>
<title>Base de datos</title>
</head>
<body>
<%
dim conexion,tabla
dim borrado, id
set conexion=server.createObject("ADODB.Connection")
set tabla=server.createObject("ADODB.RecordSet")
set tablaBorrado=server.createObject("ADODB.RecordSet")
set tablaModificar=server.createObject("ADODB.RecordSet")
conexion.open "DSN=puesto1"
if (request.queryString ("id")<>"") then
id=request.queryString("id")
tablaBorrado.open "SELECT * FROM coches WHERE id="&id,conexion,3,&H0002
tablaBorrado.delete
tablaBorrado.close
end if
if (request.queryString ("idModificar")<>"") then
id=request.queryString("idModificar")
tablaModificar.open "SELECT * FROM coches WHERE id="&id,conexion,3,&H0002
if (tablaModificar.eof=false) then
tablaModificar("marca")=request.queryString("marca")
tablaModificar("modelo")=request.queryString("modelo")
tablaModificar("descripcion")=request.queryString("descripcion")
tablaModificar("precio")=request.queryString("precio")
tablaModificar("foto")=request.queryString("foto")
tablaModificar.update
end if
tablaModificar.close
end if
tabla.open "SELECT * FROM coches",conexion,3,&H0002
if (request.queryString ("marca")<>"") then
tabla.addNew
tabla("marca")=request.queryString("marca")
tabla("modelo")=request.queryString("modelo")
tabla("descripcion")=request.queryString("descripcion")
tabla("precio")=request.queryString("precio")
tabla("foto")=request.queryString("foto")
tabla.update
end if
%><table border=2>
<tr>
<td>Id</td>
<td>Marca</td>
<td>Modelo</td>
<td>Descripcion</td>
<td>Precio</td>
<td>Foto</td></tr><%
tabla.MoveFirst
do until (tabla.EOF)
%> <tr>
<td><%=tabla("id")%></td>
<td><%=tabla("marca")%></td>
<td><%=tabla("modelo")%></td>
<td><%=tabla("descripcion")%></td>
<td><%=tabla("precio")%></td>
<td><img src="images/<%=tabla("foto")%>" height=100 width=100></td>
</tr> <%
tabla.MoveNext
loop
%>
</table>
<form method=get action="ej11.asp">
<input type="text" name="id">
<input type="submit" value="Borrar">
</form>
<hr>
<form method=get action="ej11.asp">
Id: <input type="text" name="idModificar"><br>
Marca: <input type="text" name="marca"><br>
Modelo: <input type="text" name="modelo"><br>
Descripcion: <input type="text" name="descripcion"><br>
Precio: <input type="text" name="precio"><br>
Foto: <input type="text" name="foto"><br>
<input type="submit" value="Modificar">
</form>
<%
tabla.close
conexion.close
%></table>
</body>
</html>
Respuesta
1
Amigazo estoy muy complacido en poder ayudarte.
Lo que te esta fallando es la linea de código ASP donde apuntas al DNS "Data Source Name" que en tu servidor seguramente lo creaste a partir del panel de control -> ODBC.
Resulta que tu script .ASP estando en tu server encuentra este DNS Data Source Name que es un camino de acceso a tu base de datos y es por eso que te funciona ok.
Pero si tu deseas subir este script a un alojamiento cambia todo.
1)Tienes que averiguar si tu alojamiento soporta BASES DE DATOS independiente de que bd sea.
3)Fíjate en el panel de control que te ofrece tu alojamiento para administrar tu sitio, es probable que desde ahí te deje crear un DSN con el nombre igualito que en tu servidor local.
Te doy un Ejemplo en una linea:
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "DSN=mydns;UID=mario;PWD=perez;"
Aquí mi DNS es "mydns" y si lo buscas en el panel de control -> odbc debería estar
En mi servidor local.
Haz la prueba y busca el tuyo en el panel de control ->odbc de tu server local.
¿Aquí el problema es que Dicho DNS "NO ESTA CREADO" en el server del alojamiento que contrataste ok? Entonces deberías crearlo si tu panel de control de administración web te lo permite. O bien tendrías que adaptarte a algún DNS que tu alojamiento te ofrezca por defecto.
Espero que esta info te solucione tus dudas amigo y cualquier cosa no dudes en consultarme.
Éxitos
Gracias por tu ayuda estoy hasta la coronilla de asp, pero sigue sin funcionar.tal como tu me has comentado he cambiado el código de la página en esas lineas, pero me aparece el error en una de las lineas te mando el código del problema para ver si me puedes ayudar.
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "DSN=CONTRAPERA;"
MM_editCmd.ActiveConnection = MM_editConnection
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editRedirectUrl)
End If
End If
EN EL SERVIDOR HE CREADO UNA DNS CON ESE MISMO NOMBRE PERO SI EN LOCAL ME APARECE EL FALLO Se requiere un objeto: 'MM_editCmd' PUES LÓGICAMENTE TAMPOCO FUNCIONARA.
Un saludo y garcías
Evidentemente tu código esta imcompleto. Mejor cuéntame que quieres hacer y te paso una ayuda.
Éxitos
En principio quiero hacer un formulario que cuando se rellenen todos los campos pasen a otra página, en principio todo funciona en local pero no en el servidor.
Un saludo.
[email protected]
Amigo te doy un consejo desecha los scripts que tienes y crealos nuevos de manera que tengas todo el control de los mismos.
Fíjate este es el ejemplo que necesitas puedes copiar y pegar.(Por supuesto que lo único que difiere aquí seria tu dsn)
http://www.webestilo.com/asp/asp07d.phtml
y este es un manual excelente de asp
http://www.webestilo.com/asp/
Presta particular atención a una linea de código al final del script de inserción ubicado en la página que te di
Response.Redirect("ejem07d.asp")
Esto lo que hace es luego de llenar el form y que inserta los datos, redireccionarte a la página ejem07d.asp
Esto es lo que necesitas en tu caso particular.
Si sigues con dudas no dudes en preguntarme que yo sigo aquí para ayudarte.
Éxitos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas