Foros del Web » Programando para Internet » ASP Clásico »

Server.Execute

Estas en el tema de Server.Execute en el foro de ASP Clásico en Foros del Web. Quería hacer <!-- include file="<%=rs("combos")%>"--> Pero lei que no se podían poner includes dinamicos en paginas asp.... Así que opté por utilizar Server.Execute(rs("combos")) donde en ...
  #1 (permalink)  
Antiguo 29/01/2003, 10:28
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Server.Execute

Quería hacer <!-- include file="<%=rs("combos")%>"--> Pero lei que no se podían poner includes dinamicos en paginas asp.... Así que opté por utilizar Server.Execute(rs("combos")) donde en el campo combos de mi base de datos tengo el nombre del fichero .asp que quiero insertar en mi asp.

Tengo presente que server.execute solo funciona en iis 5, asi que me asegure que esa era la version de mi servidor web para evitar posibles problemas.

Pero aun asi sigue sin funcionarme.

Uno de los errores que me da despues de probar 1001 formas de poner el nombre del fichero como parametro de server.execute es que el tipo de la variable rs("combos") no es un tipo valido.

Garantizo que en mi bd ese campo es de cadena. Tb aseguro que existe el fichero porque si pongo directamente el nombre del fichero en vez de leerlo de una variable funciona correctamente. También he comprobado que la ruta esta correctamente en la bd... Incluso provocaba que se eliminaran posibles espacios en blanco antes y despues del nombre del fichero....

Es como si server.execute tampoco pudiera utilizarse dinamicamente. aunque en todos los sitios leo que es la alternativa a los includes dinamicos.

Digo todo esto para ir descartando posibles errores mios a la hora de usarlo.

Tambien he usado ese script que ronda por internet:

<%
Sub LeerArchivo(nombreArchivo)
Dim fso, ts
Dim nombFichero

nombFichero = Server.MapPath (".") & "\" & nombreArchivo

Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(nombFichero,1,false)
Response.Write ts.ReadAll
ts.Close
End Sub
%>

pero tampoco me funciona.. me dice que no lo encuentra o algo asi... Si imprimo por pantalla la variable nombFichero la ruta es correcta.... He probado con barra \ y / sin conseguir nada... Incluso he metido mi pagina en c:\inetpub\wwwroot\para no tener problemas con server.mappath

Por favor.. ¿alguna prueba mas que me quede por hacer?

Un beso
  #2 (permalink)  
Antiguo 29/01/2003, 16:18
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 22 años, 6 meses
Puntos: 0
Hola,

no se si te servira de mucho, porque supongo que dará igual el resultado pero yo lo utilizo de esta manera y me va de maravilla.


archivo = TRIM(rs("archivo"))

Server.Execute (archivo)


Un Saludo
  #3 (permalink)  
Antiguo 30/01/2003, 01:38
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Muchas gracias por el intento almaluz, pero nada.. ya probé con eso.... Me dice lo de que el tipo de dato no es correcto.

Entonces, opto por hacer algo asi:

fichero = rs("combos") & ""
Server.Execute(fichero)

Al concatenarle la cadena vacia es como si lo convirtiera a cadena... incluso me deja de dar ese error de tipo de datos y luego me dice que no lo encuentra el fichero. Entonces procedo a que me imprima por pantalla lo que contiene fichero y está todo correcto. El nombre es correcto, y está en la misma carpeta que el asp donde pongo la sentencia server.execute.

Sigo sin resolverlo.

Un detalle que no conté antes.

En realidad lo que tengo es un asp con un <!--include file="archivo.asp"--> y en archivo.asp es donde tengo el server.execute a otro archivo.asp

Es como si tuviera dos includes "recursivos", no se si me entendeis. El caso, que pense que este podia ser el error pero probe a no usar el include y pegar directamente el codigo de archivo.asp en el primero de ellos para quitar esta "recursividad".... Pero fallo de todas formas.
  #4 (permalink)  
Antiguo 30/01/2003, 01:49
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Pongo exactamente lo que me ha devuelto tu codigo, almaluz:

Mi codigo:

<%
archivo = Trim(rs("combosr"))
Server.Execute(archivo)
%>

El error que me devuelve es:

No coinciden los tipos: 'Execute'
/searchclicks/altaurlsenbuscas.asp, line 201

La linea 201 es justo la del Server.Execute

Un beso
  #5 (permalink)  
Antiguo 30/01/2003, 15:50
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 22 años, 6 meses
Puntos: 0
Valla, no te puedo ayudar mucho.

¿Es necesario que pongas el include?,
prueba a poner en vez del include el Server.Execute directamente y haber que pasa,
yo creo que el problema lo tienes en que el include es lo primero que se ejecuta, y quizá el server execute dentro del include te de error por eso mismo.

Ya nos contaras

Saludos.
  #6 (permalink)  
Antiguo 30/01/2003, 15:55
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 22 años, 6 meses
Puntos: 0
uhmm

Creo que no lei bien tu anterior mensaje y decias que ya habias probado esto.

Bueno , te sugiero que hagas todas las pruebas sin el include y cuando te funcione pruebes a ponerlo dentro.

Yo estube dandole vueltas un par de días hasta que consegui que funcionara, y lo dejé tal y como te dije.

A proposito y por curiosidad

¿Porque lo metes dentro del include?
  #7 (permalink)  
Antiguo 31/01/2003, 01:44
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Sí, hice las pruebas sin llamarlo con el include.

Lo meto en un include por dos cosas... Es una forma de estructurar la pagina mas comoda para mi porque es una pagina con bastantes "zonas" y segundo porque es un codigo que reutilizo en varias paginas.

Muchas gracias..... Si consigo que me funcione ya lo publicare por aqui.

Un beso
  #8 (permalink)  
Antiguo 31/01/2003, 09:26
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
almaluz, lo que me dijistes la principio y que yo ya habia probado sí funciona.... el fallo estaba en que en mi base de datos uno de los registros tenian en el campo del nombre del archivo la cadena vacia, entonces al llegar a ese registro fallaba y no ejecutaba ná de ná....

Una vez que le he puesto que me testee que el nombre del archivo sea distinto a null o cadena vacia me funciona a la perfección..

Que tonta de mi!!!! Parece que llevo dos dias nada mas programando.... Así que todo resuelto. Muchas gracias por tu interés.

Un beso, cuidate! :cantar:
  #9 (permalink)  
Antiguo 31/01/2003, 16:33
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 22 años, 6 meses
Puntos: 0
A ti Helbira
  #10 (permalink)  
Antiguo 13/03/2003, 05:30
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
Alguien me puede decir si funciona un server.execute de este tipo??
server.execute (pruebas.asp?u='T')

no he conseguido que me funcione....
  #11 (permalink)  
Antiguo 13/03/2003, 05:37
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Supongo que lo habras probado poniendo las comillas dobles:

server.execute ("pruebas.asp?u='T'")

En todo caso, si no te funcionara, pon aqui el error que te da.. .Yo peleé mucho con eso y quizás al ver el error te pueda decir porque no te funciona de una manera rápida.

Suerte!
  #12 (permalink)  
Antiguo 13/03/2003, 05:46
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
Me dice:

Objeto Server error 'ASP 0231 : 80004005'

Error en Server.Execute

/pruebas/cuerpo.asp, line 25

Se usó un formulario de dirección URL no válido o una dirección URL absoluta completa. Utilice direcciones URL relativas.


Y como lo he puesto es:

server.execute("/forum/forum.asp?FORUM_ID=12&CAT_ID=3&Forum_Title=Fruityl oops")


Gracias por tu rápida respuesta
  #13 (permalink)  
Antiguo 13/03/2003, 05:53
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Ahora te contesto a lo del error pero un error claro es que si pasas variables por la url, las comillas simples te sobran... no me di cuenta antes.

Te quedaría así:

server.execute ("pruebas.asp?u=T")

Lo que he hecho ha sido quitar las comillas simples de T
  #14 (permalink)  
Antiguo 13/03/2003, 05:55
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
Helbira, fíjate que lo que he puesto no lleva comillas simples.

No tienes algún ejemplo q me puedas poner aquí?

Merci !!!
  #15 (permalink)  
Antiguo 13/03/2003, 06:00
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
1. Asegúrate que el asp que llamas está en la misma carpeta que el asp que ejecuta el server.execute

Si no lo esta tienes uqe añadir url relativa al nombre del archivo. Igual que en los enlaces html

2. Supongo que usas server.execute() en vez de <!--include file=""--> porque quieres hacer un include dinámico... En ese caso haz las pruebas sin la leer la url que le pasas de alguna variable sino poniendo directamente la cadena del nombre del archivo que quieres abrir.

Primero haz la prueba poniendo el nombre del archivo sin las variables que le pasas a partir del ? y luego con ellas. Para descartar cosas.

Prueba esto y cuenta que ocurrio en cada caso
  #16 (permalink)  
Antiguo 13/03/2003, 06:14
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
En esta página te explica tb otra forma de hacerlo paso a paso por si te sirve de algo:

Archivos de inclusión dinámica

  #17 (permalink)  
Antiguo 13/03/2003, 06:18
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
No están en la misma carpeta, la dirección que indico ya es la correcta:

server.execute("/forum/forum.asp?FORUM_ID=12&CAT_ID=3&Forum_Title=Fruityl oops")

pero da el error que antes comenté.

Si pongo en cambio:
server.execute("/forum/default.asp")

la visualización es correcta.

que quieres decir con url relativa, ya lo son así no??
------------------
Efectivamente es para realizar includes dinámicos, pero ahora para probar ya estoy poniendo las direcciones a pelo tal como las indico aquí.
-------------------
  #18 (permalink)  
Antiguo 13/03/2003, 06:24
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
ok

Entonces tu pregunta fue concreta... si se pueden pasar variables a ese archivo...

Pues, pensándolo un poco yo creo que te funcionaría igual si haces algo así:


<%
FORUM_ID=12
CAT_ID=3
Forum_Title="Fruityloops"

server.execute("/forum/forum.asp")
%>

y en el archivo forum.asp, en vez de leer FORUM_ID, CAT_ID y Forum_Title como request.querystring("blabla") lo lees como variables normales, ya que creo que el server.execute se comporta como el include.. insertándote el código asp de forum.asp donde coloques el server.execute.

No sé si me expliqué pero por probar que no quede

Seguiré buscando algo al respecto.. es algo que habrá necesitado más gente.

Un beso y suerte
  #19 (permalink)  
Antiguo 13/03/2003, 06:42
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Pues no!! He probado y eso último no funciona.

Lo siento
  #20 (permalink)  
Antiguo 13/03/2003, 06:47
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
Efectivamente en la pag receptora cogía variables con querystring.

He probado informando las vars tal como me indicas y quitando en la pag receptora los querystring, entendiendo q las vars ya estárán informadas, pero parece que no es así.
Si guardo las vars en vars de sesión entonces sí funciona pero supongo que la idea no es ésta, aunque podría servir.....

que opinas? ....tendria que utilizar muchas vars de sesión y modificar todas las pags receptoras.....
  #21 (permalink)  
Antiguo 13/03/2003, 06:51
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
En realidad sólo necesitarias 3 variables de sesión... pero sí es verdad que tendrías que modificar todas las páginas receptoras.

Eso ya lo tienes que estudiar tú si te merece la pena el esfuerzo.

El caso es que no encuen tro nada al respecto... Todo lo que habla de server.Execute no plantean este caso concreto preo tampoco se dice que no funciona con llamadas a páginas de ese formato. Pero me suena que se trató en algún mensaje de este foro cuando yo tuve problemas con el server.execute, pero no era mi caso y no presté mucha atención.

He visto que te has recorrido los mensajes que tratan el tema en el foro... por eso no he buscado por aquí. Tú dirás.

Un beso
  #22 (permalink)  
Antiguo 13/03/2003, 07:00
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
La verdad es q llevo buscando desde hace tiempo si el server.execute permite hacer esto o no y no he encontrado nada al respecto en ningún sitio y ahora lo necesito de forma urgente !!!

Esta solución de las vars session ya la tenía en mente y es cierto como dices que tampoco harían falta tantas, pero no lo veo práctico.

Todo esto está motivado por renovar un portal, el cual es asp sin frames, se carga toda la pag siempre y va variando el #include de la parte central con el contenido correspondiente. Es una asp "madre" que agrupa los diferentes módulos (includes) del portal.

Como funcionan los portales de este tipo?? pues aparte del problema q estamos tratando no puedo incluir una url absoluta dentro del portal, como p.ej. un buscador externo. Abría alguna manera???
  #23 (permalink)  
Antiguo 13/03/2003, 07:14
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Has mencionado lo de los frames y se me ocurrió una idea así de pronto... La escribo como medianamente pueda... pero tengo prisa para pararme a explicarla mas detallada.

El caso es que el ejemplo que me hice para comprobar mi idea de llamar a las variables en vez de con querystring, con <%=variable%> lo he modificado para que la pagina llamada desde el server.execute lea ese querystring pero de la pagina madre....

A ver si lo explico mejor... tu dices que la pagina madre la cargas por completo cada vez que cambias de página.... pues en esas llamadas pasale tus tres variables a la madre en vez de a la del server.execute.. Las lee perfectamente...

Te dejo mi ejemplo para que lo compruebes:

--------------- pagina madre: llamadora.asp ------------------
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Hola <% Server.Execute("llamada.asp")%>
</body>
</html>
------------------------------------------------------------------------

El otro archivo que necesitas:

------------ pagina llamada: llamada.asp ----------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%=request.QueryString("nombre")%>
</body>
</html>
------------------------------------------------------------------------

En el navegador tienes que hacer la llamada de la siguiente forma:

http://servidor/llamadora.asp?nombre=DVEGA



Funciona!!, lo he comprobado..

Pruebalo.. e intenta aplicarlo a tu portal.. comprobarás que ya no necesitas variables de sesión ni modificar cada página receptora.... Peeeero necesitaras cambiar los enlaces HTML de tu portal que hacen referencia a la pagina madre que necesiten esas variables que quieres pasar por URL.

Cuentame como te va, ok? Vuelvo en un par de horas.

Suerte
  #24 (permalink)  
Antiguo 13/03/2003, 09:00
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
Lo que comentas efectivamente funciona pero mi sistema no es exactamente el que muestras, mi pag "madre" no es la que llama, la tuya que llama es un #include para la mía madre.

He estado haciendo pruebas pero no he dado con la solución genial q sería la del inicio, indicarlo dentro del parametro del server.execute

dios !!!
  #25 (permalink)  
Antiguo 13/03/2003, 09:26
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 7 meses
Puntos: 5
Entonces, te agradecería que volvieras a explicar en que consiste tu sistema, pues más o menos sigo entendiendo lo mismo cada vez lo leo.

P.D.: Me das tu messenger para hablarlo más directamente y no con tanto mensajito?
  #26 (permalink)  
Antiguo 13/03/2003, 09:32
 
Fecha de Ingreso: marzo-2003
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
busca por el messager: [email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:24.