Código ASP:
Ver original
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% codmuestra = request.querystring("codmuestra") Dim conex_STRING99 conex_STRING99 = "DSN=Informes;uid=xxxx;pwd=xxx;" Set informe = Server.CreateObject("ADODB.Recordset") informe.ActiveConnection = conex_STRING99 informe.Source = "Select * from muestras where codigo=" & codmuestra informe.CursorType = 1 informe.CursorLocation = 2 informe.LockType = 3 informe.Open() idiomas=informe("idiomas") if instr(idiomas,",")>0 then 'hay varios idiomas, cogemos el último idi=split(idiomas,",") idioma=idi(ubound(idi)) else 'solo hay un idioma idioma=idiomas end if Set archivos = Server.CreateObject("ADODB.Recordset") archivos.ActiveConnection = conex_STRING99 archivos.Source = "Select * from archivos_informes where id_perfil=" & informe("perfil") & " order by orden asc" archivos.CursorType = 1 archivos.CursorLocation = 2 archivos.LockType = 3 archivos.Open() %> <html> <head></head> <body> <%while not archivos.eof if idioma="DE" then inclusion="./" & archivos("archivo") & "_aleman.asp" else inclusion="./" & archivos("archivo") & ".asp" end if response.write inclusion%> <!--#include file=inclusion --> <%archivos.movenext wend%>
Pero siempre daba error diciendo que no encontraba el archivo "inclusion". Después de buscar un poco he encontrado esto:
Cita:
Es decir, según esto no se puede incluir un asp desde una variable, porque intenta hacer la inclusión antes de ejecutar el código. Y tampoco se puede usar la función que proponen, porque incluiría el código a pelo y ya está. Podría haber un problema si queremos incluir un archivo cuyo nombre debemos extraer de una variable ASP. Imaginaros que tenemos que incluir un archivo que tenemos su nombre en una variable. Así:
<%
archivoInclude = "miarchivo.html"
%>
<!--#include virtual=archivoInclude-->
Como el código ASP no se ejecuta hasta después de haber incluido el archivo, a la hora de incluirlo no se ha resuelto el nombre que se desea incluir. Dicho de otro modo, ASP no sabe qué es lo que vale la variable archivoInclude cuando va a incluirlo, por lo que no realiza el include tal como desearíamos.
Para parametrizar bien una página web y que su actualización sea fácil más tarde o más temprano lo anterior será un inconveniente. Así que podemos arreglar el problema del siguiente modo, creando una función que realice el include del archivo. Veamos cómo sería esa función:
<%
function incluye(archivo)
archivo= request.serverVariables("APPL_PHYSICAL_PATH") & archivo
set confile = createObject("scripting.filesystemobject")
set fich = confile.openTextFile(archivo)
while not fich.atEndOfStream
lineactual = fich.readLine
response.write(lineactual)
wend
end function
%>
Varias cosillas habría que comentar sobre esta función. Recibe el nombre del archivo que deseamos abrir. Para construir la ruta completa de este archivo tendremos que utilizar el objeto request para extraer la variable del servidor que contiene la ruta de disco duro donde se encuentra el domino. Una vez que hemos construido el nombre de archivo con su ruta creamos el archivo en las 2 siguientes líneas. Finalmente hacemos un bucle que va extrayendo del archivo el texto correspondiente e imprimiendolo en la página.
Solo destacamos un punto en contra de esta forma de incluir los archivos. Se trata de que no podremos incluir más que código HTML, nunca código ASP pues no se ejecutaría y quedaría impreso en la página junto con el código HTML. Es una limitación significativa pero en los casos en los que solo necesitemos incluir texto puede servir muy bien.
<%
archivoInclude = "miarchivo.html"
%>
<!--#include virtual=archivoInclude-->
Como el código ASP no se ejecuta hasta después de haber incluido el archivo, a la hora de incluirlo no se ha resuelto el nombre que se desea incluir. Dicho de otro modo, ASP no sabe qué es lo que vale la variable archivoInclude cuando va a incluirlo, por lo que no realiza el include tal como desearíamos.
Para parametrizar bien una página web y que su actualización sea fácil más tarde o más temprano lo anterior será un inconveniente. Así que podemos arreglar el problema del siguiente modo, creando una función que realice el include del archivo. Veamos cómo sería esa función:
<%
function incluye(archivo)
archivo= request.serverVariables("APPL_PHYSICAL_PATH") & archivo
set confile = createObject("scripting.filesystemobject")
set fich = confile.openTextFile(archivo)
while not fich.atEndOfStream
lineactual = fich.readLine
response.write(lineactual)
wend
end function
%>
Varias cosillas habría que comentar sobre esta función. Recibe el nombre del archivo que deseamos abrir. Para construir la ruta completa de este archivo tendremos que utilizar el objeto request para extraer la variable del servidor que contiene la ruta de disco duro donde se encuentra el domino. Una vez que hemos construido el nombre de archivo con su ruta creamos el archivo en las 2 siguientes líneas. Finalmente hacemos un bucle que va extrayendo del archivo el texto correspondiente e imprimiendolo en la página.
Solo destacamos un punto en contra de esta forma de incluir los archivos. Se trata de que no podremos incluir más que código HTML, nunca código ASP pues no se ejecutaría y quedaría impreso en la página junto con el código HTML. Es una limitación significativa pero en los casos en los que solo necesitemos incluir texto puede servir muy bien.
¿A alguien se le ocurre como hacer esto?
Muchas gracias por adelantado, salu2
