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

FAQ's del foro de ASP

Estas en el tema de FAQ's del foro de ASP en el foro de ASP Clásico en Foros del Web. Decidí colocar esta clase porque es lejos, la mejor función que he encontrado para subir archivos. Es robusta y flexible mientras el resto de lo ...

  #121 (permalink)  
Antiguo 26/09/2005, 14:46
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Otro más para subir archivos

Decidí colocar esta clase porque es lejos, la mejor función que he encontrado para subir archivos.

Es robusta y flexible mientras el resto de lo que encuentro son scripts que medio funcionan.

http://www.aspemporium.com/codelib.aspx?pid=139&cid=4
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #122 (permalink)  
Antiguo 07/11/2005, 17:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 8 meses
Puntos: 535
Para "solucionar"* el Error 500, error interno del servidor:

1- En su Internet Explorer, vaya al menú "Herramientas -> Opciones de internet -> Opciones avanzadas" y desmarque "Mostrar mensajes descriptivos de los errores http". Luego intente acceder nuevamente a su página.

2- Mejor deje de usar esa cosa llamada Internet Explorer y beneficiese usando Firefox.

*En realidad no se soluciona nada, sino que se hace posible enterarnos sobre el ERROR REAL
__________________
...___...

Última edición por AlZuwaga; 23/12/2005 a las 09:59
  #123 (permalink)  
Antiguo 03/12/2005, 11:32
 
Fecha de Ingreso: noviembre-2005
Mensajes: 15
Antigüedad: 19 años
Puntos: 0
Solucion A Este Error

SOLUCION REAL PARA ERRORES:


Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.


Microsoft
JET Database Engine (0x80004005). Error Desconocido.


Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x6cc Thread 0x78c DBC 0x144cfc4 Jet'.


Deben darles permiso, contro total a la carpta donde tiene su sitio ejemplo c:\inetpub\wwwroot\misitio, al usuario: IUSR_Nombre_Equipo, puede ser a la carpeta como a la base de datos. generalmente todos hacen esto y siguen con el problema como a mi pero busque por ahi la solcuion y es que tambien deben darle los mismos permisos, control total a la carpeta TEMP de su equipo (esto yo no lo sabia lo hize y solucione todos mis problemas) y tambien al usuario IUSR_Nombre_Equipo si no llegase a estar lo agregan..


Saludos....a mi me paso esto, lleve dias sin resolverlo y lo hize.

Saludos desde chile
AlejandRO
  #124 (permalink)  
Antiguo 08/12/2005, 11:26
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años
Puntos: 27
De acuerdo sonar musica continua (tipo radio) en asp

no se si lo borraran o lo moveran, pero esto yo me andube dando como loco y no encontre en ningun lugar como hacerlo.

Problema: tenia que montar musica navideña par la musica, pero de una forma continua, para que la gente de mi intranet pudiera tener acceso a ella, existian un par de cosas que resolver, por ejemplo, no poner los audios en buena calidad y evitar distociones y sobre todo trafico innecesario en la intranet.

solucion:
Descargue una aplicacion hecha en PHP que alguien puso el codigo para asp y es del que voy a hablar en adelante.

Descargar de: http://www.radioblogclub.com/
es una pequeña animación flas que reproduce canciones en formato *.rbs

en la misma aplicación viene el convertidor de MP3 a RBS (facilisimo de usar), el cual baja audios de 5 megas en 900kb y con calidad buena de audio.

lo copie en mi sitio web, y solo tuve que agregar en tipos MIME las extensiones rbs
Directorio /radio.blog/

para esto te vas al IIS
propiedades del sitio
encabezados HTTP
tipos de archivo
nuevo
estension asociada: .rbs
MIME: application/octet-stream

listo

luego en el raiz de /radio.blog/
copie el siguiente asp

default.asp
Cita:
<html>
<head>
<title>RADIO.BLOG</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0" width="220" height="300">
<param name="src" value="radioblog.swf?autoplay=<% = request("autoplay") %>">
<param name="quality" value="high">
<embed src="radioblog.swf?autoplay=<% = request("autoplay") %>" type="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" width="220" height="300">
</object><br>


</body>
</html>

copie los audios preparados en
/radio.blog/sound

y dentro de el el siguiente asp

playlist.asp

Cita:
<%

CONST FILE_EXT = ".rbs"

dim path
dim oXml, oNodeTrk
dim oFso, oFld, oFile

path = server.mappath(".")

set oFso = server.createObject("Scripting.FileSystemObject")
set oFld = oFso.getFolder(path)


set oXml = server.createobject("MSXML2.DOMDocument")
oXML.async=false

set oXML.documentElement = oXML.createElement("tracks")

for each oFile in oFld.files

if right(oFile.name, 4) = FILE_EXT then

set oNodeTrk = oXml.createElement("track")
oXML.documentElement.appendChild oNodeTrk

oNodeTrk.setAttribute "trackMod", dateDiff("s", cdate("1970-01-01"), oFile.DateLastModified)
oNodeTrk.setAttribute "title", left(oFile.name, len(oFile.name)-4)
oNodeTrk.setAttribute "path", oFld.name &"/"& oFile.name

set oNodeTrk = nothing

end if

next

'response.contentType = "text/xml"

response.write "<?xml version=""1.0"" encoding=""UTF-8""?>"
response.write oXml.xml

set oXml = nothing
set oFso = nothing

%>
listo solo necesitas probarlo
para auto play tendias que poner en tu navegador

default.asp?autoplay=1

archivos necesarios
config.xml - cambia la apariencia de colores del reproductor
radioblog.swf - reproductor de audios
rbcore.swf -

los dos asp anteriores

suerte
si quieren probarlo
entren a :

http://juanra.cybercentro.com.sv/nav...asp?autoplay=1

jijiji esperando les sirva y que el enlace no lo haya removido para proximos años

saludos

editado:
ojo la musica en rbs no deve de llevar caracteres extraños
ni eñes ni tildes, ni otro caracter, porque eso hace errores en el barrido de el asp playlist
__________________
JuanRa Pérez
San Salvador, El Salvador
  #125 (permalink)  
Antiguo 02/03/2006, 10:03
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 19 años
Puntos: 1
Paginar resultados

¿Cómo muestro mis resultados por páginas? Lo que se llama "paginación de resultados"...

He akí una manera de paginar tus resultados para dar un toque "pofesional" a tu web:

Este código debe ir en una página que se llame "Paginar.asp":
Código:
<HTML>
<BODY>
<%
Dim mostrar 'cantidad de registros a mostrar por página
Dim cant_paginas 'cantidad de páginas que recibimos
Dim pagina_actual 'La página que mostramos
Dim registro_mostrado 'Contador utilizado para mostrar las páginas
Dim I 'Variable Loop
dim strsql 'Consulta sql

mostrar = 20 ' Pueden modificar este número para cambiar la cantidad de registros por página

' IF para saber que página mostrar
if request("page")="" then
pagina_actual = 1
Else
pagina_actual = CInt(Request.QueryString("page"))
End If
'Conexión con la BD
dim conex,reg,sql,usuario 
set conex=server.CreateObject("ADODB.Connection")
set reg=server.CreateObject("ADODB.Recordset")
conex.ConnectionString="provider=microsoft.jet.oledb.4.0; data source=" & server.MapPath("Nombre_de_tu_base.mdb")
conex.Open 
sql="select * from tabla where Nombre_campo_tabla=" & nom_variable & ""
reg.Open sql,conex,3,2
' Creamos el RecordSet y definimos la cantidad de registros a mostrar
reg.PageSize = mostrar
reg.CacheSize = mostrar
'contamos las páginas que se formaron con la variable mostrar.
cant_paginas = reg.PageCount
' Si el pedido de página cae fuera del rango,
' lo modificamos para que caiga dentro
If pagina_actual > cant_paginas Then pagina_actual = cant_paginas
If pagina_actual < 1 Then pagina_actual = 1

' Si la cantidad de páginas da 0 es que no hay registros... por eso este IF
If cant_paginas = 0 Then%>
	<%Response.Write("NO HAY REGISTROS")%>
<%Else
' Nos movemos a la página elegida
reg.AbsolutePage = pagina_actual
' Mostramos el dato de que página estamos...
%>
<FONT face=Arial><FONT>
<FONT SIZE="+1">Página <B><%= pagina_actual %></B> de <B><%= cant_paginas %></B></FONT>
<%
' Espacios
Response.Write "<BR><BR>" & vbCrLf
'iniciamos la tabla donde mostraremos todo
Response.Write "<TABLE BORDER=""1"" width=""300"" bordercolor=""black"">" & vbCrLf%>
<tr bgcolor=red>
				<th colspan=20><FONT face=Arial size=2><STRONG><FONT color=ivory> TITULO TABLA</STRONG></FONT></FONT></th>
			</tr><br>
<%' Mostramos los titulos de las columnas... (pueden sacar ese FOR para eliminar eso)
Response.Write vbTab & "<TR>" & vbCrLf
For I = 0 To reg.Fields.Count - 1
Response.Write vbTab & vbTab & "<TD><B><FONT face=Arial size=2 color=mediumblue>"
Response.Write reg.Fields(I).Name
Response.Write "<B></TD></FONT>" & vbCrLf
Next 'I
Response.Write vbTab & "</TR>" & vbCrLf

' Hacemos el bucle mostrando los datos del registro
registro_mostrado = 0
Do While registro_mostrado < mostrar And Not reg.EOF
Response.Write vbTab & "<TR>" & vbCrLf
For I = 0 To reg.Fields.Count - 1
Response.Write vbTab & vbTab & "<TD>"
Response.Write reg.Fields(I)
Response.Write "</TD>" & vbCrLf
Next 'I
Response.Write vbTab & "</TR>" & vbCrLf

' Sumamos 1 a los mostrados
registro_mostrado = registro_mostrado + 1
' Nos movemos al próximo registro...
reg.MoveNext
Loop

'listo...
Response.Write "</TABLE>" & vbCrLf
End If

' Cerramos y limpiamos...
reg.Close
Set reg = Nothing
conex.Close
Set conex = Nothing

' Ahora mostramos los enlaces a las otras páginas con el resto de los registros...
If pagina_actual > 1 Then
%>
</FONT></FONT>
<A href="./paginar.asp?eje=30&amp;page=<%= pagina_actual - 1 %>" ><FONT 
face=Arial>[&lt;&lt; Anterior]</FONT> </a>
<%
End If

' mostramos la paginacion por numeros de página
For I = 1 To cant_paginas
If I = pagina_actual Then
%>
<%= I %>
<%
Else
%>
<FONT face=Arial> </FONT>
<A href="./paginar.asp?eje=30&amp;page=<%= I %>" ><%= I %></a>
<%
End If
Next 'I

If pagina_actual < cant_paginas Then
%>
<A href="./paginar.asp?eje=30&amp;page=<%= pagina_actual + 1 %>" ><FONT 
face=Arial>[Próximo &gt;&gt;]</FONT ></a>
<%
End If
'Fin...
%>
%>
<form action="Paginar.asp" method="post" name="form332" id="form332">
	<input type="hidden" name="page" value="<%=pagina_actual%>">
	<p><input type="submit" value="VOLVER" name="cmd_volver"></p>
</form>
<%
</BODY>
</HTML>

Última edición por gorka_arai; 20/04/2006 a las 00:56
  #126 (permalink)  
Antiguo 07/03/2006, 15:24
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 5 meses
Puntos: 0
3 Select Dependientes con datos de una Bd que funciona Ok

Código:
Página Index.asp:


<form name="frm1" method="post" action="guardar.asp">

<select name="lstProc" class="caja" onChange="location.href='Index.asp?IdProcedimiento=' + 
					frm1.lstProc.options[frm1.lstProc.selectedIndex].value">  
				<option value="0">Seleccione Tipo Proc.</option>  														
<%					Sql = "SELECT codTipoProc, tipoProc FROM TblTipoProcedimientoExpress"
					Rst.Open Sql, Con   														
                
					Procedimiento = Request.QueryString("IdProcedimiento")
										
					Do While Not Rst.EOF
						codTipoProc = Trim(Rst("CodTipoProc"))
						TipoProc = Trim(Rst("TipoProc"))
						
						If Procedimiento <> "" Then
							If (CInt(Procedimiento) = CInt(codTipoProc)) Then %>
								<option value="<%=codTipoProc%>" selected><%=TipoProc%></option>
<%							Else %>
								<option value="<%=codTipoProc%>"><%=TipoProc%></option>
<%							End If%>								
<%						Else %>						
							<option value="<%=codTipoProc%>"><%=TipoProc%></option>
<%						End If									
						
						Rst.Movenext
					Loop
					
					Rst.Close %>
            </select>			
			</td>
			<td>						
			<select name="lstPlataforma" onChange="location.href='Index.asp?IdPlataforma=' +   
				frm1.lstPlataforma.options[frm1.lstPlataforma.selectedIndex].value + '&IdProcedimiento='+ frm1.lstProc.options[frm1.lstProc.selectedIndex].value">  
				<option value="0">Seleccione Plataforma</option>
<%				If Request.QueryString("IdProcedimiento") <> "" Then %>					
					
<%					idProced = CInt(Request.QueryString("IdProcedimiento"))
					idPlataforma = CInt(Request.QueryString("IdPlataforma"))
					
					 Sql = "SELECT codTipoPlataforma, NombrePlataforma FROM TblSistemaProcExpressPlataforma WHERE codTipoProc = "&idProced&";"					 
					 Rst.Open Sql, Con
					
					 Do While Not Rst.EOF
					 
						codTipoPlataforma = Trim(Rst("codTipoPlataforma"))
						NombrePlataforma = Trim(Rst("NombrePlataforma")) 
						
						If idPlataforma <> "" Then
							If (CInt(idPlataforma) = CInt(codTipoPlataforma)) Then %>
								<option value="<%=codTipoPlataforma%>" selected><%=NombrePlataforma%></option>
<%							Else %>
								<option value="<%=codTipoPlataforma%>"><%=NombrePlataforma%></option>
<%							End If%>								
<%						Else %>						
							<option value="<%=codTipoPlataforma%>"><%=NombrePlataforma%></option>
<%						End If	%>																			
<%						Rst.Movenext
					 Loop
					 Rst.Close					
				End If %>				
            </select>			
			</td>
		</tr>		
          <tr>
            <td>Momento</td>
            <td>			

			<select name="lstMomento">  
				<option value="0">Seleccione momento</option>
<%				If Request.QueryString("IdPlataforma") <> "" Then %>					
					
<%					idPlataforma = CInt(Request.QueryString("IdPlataforma"))
					
					
					 Sql = "SELECT CodigoMomento, NombreMomento FROM TblSistemaProcExpressMomento WHERE codTipoPlataforma = "&idPlataforma&";"					 
					 Rst.Open Sql, Con
					
					 Do While Not Rst.EOF
					 
						codigoMomento = Trim(Rst("CodigoMomento"))
						NombreMomento = Trim(Rst("NombreMomento")) %>	
						
						<option value="<%=codigoMomento%>"><%=NombreMomento%></option>
						
<%						Rst.Movenext
					 Loop
					 Rst.Close					
				End If %>				
            </select>

</form>
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #127 (permalink)  
Antiguo 24/03/2006, 12:22
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 10 meses
Puntos: 16
Contar Registros En Mysql

No se si ya este pero no lo encontre, para poder contar los registros en ACCESS pues usamos algo asi:

Código:
SQL="Select * From TABLA"
RS.Open SQL, oConn,1,1

cuantos=RS.RecordCount
En MySQL esto no funciona, siempre dara como resultado -1, pero si agregamos esta linea:
RS.CursorLocation = 3

antes del RS.Open...

WALAA
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
  #128 (permalink)  
Antiguo 04/09/2006, 18:15
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años
Puntos: 27
html y sql injection - no insertar

hay varias funciones en las faq para limpiar cadenas y evitar html y sql injection... una mas que encontre fuera del foro y que creo que les servira (si ya esta publicada aqui no la vi)


funcion
Cita:
<%
Function Caracteres_Ilegales(stringEntrada)

Dim stringCaracteresMalos, iCounter

Caracteres_Ilegales = False

stringCaracteresMalos = array("http://", "<h1>", "url", "link=", "[h1]", "[a]", "[href]")

For iCounter = 0 to uBound(stringCaracteresMalos)

If Instr(stringEntrada,stringCaracteresMalos(iCounter ))>0 Then
Caracteres_Ilegales = True
End If
Next
End function
%>
uso
Cita:
If Caracteres_Ilegales(comentario) = True OR Caracteres_Ilegales(email) = True Then
response.redirect("enegado_publicacion.asp")
End If
fuente
http://www.thescripts.com/forum/thread513587.html

espero le sirva a alguien como a mi...
en mi caso en lugar de response.redirect puse
publciar = "pendiente"

asi mando un mail al administrador del sitio con ese post para un libro de visitas que requeire de su aprobacion o eliminacion si fuese publicidad.

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #129 (permalink)  
Antiguo 11/10/2006, 09:17
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 20 años, 2 meses
Puntos: 0
Saludos, les dejo este vinculo que describe la forma de subir imagenes al servidor y al mismo tiempo agregarlas (path de la imagen) a una db MySQL.

http://www.forosdelweb.com/f15/subir-imagenes-servidor-baja-todo-codigo-completo-coemntado-431929/

Espero sea de ayuda para aquellos compañeros que deseen tener una idea mas amplia de como hacerlo, y para los que ya saben y deseen aporta mas soluciones e ideas con gusto recibire sus comentarios.
__________________
México no es México sin su gente, y la democracia no es de algunas personas, es de todos. Hagamos valer nuestros derechos.
  #130 (permalink)  
Antiguo 27/12/2006, 13:01
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
25 Tips para mejorrar el rendimiento de las páginas ASP

El contenido de este link es muy interesante

http://www.microsoft.com/technet/pro...ips.mspx#EOMAC
  #131 (permalink)  
Antiguo 12/04/2007, 02:26
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Las FAQ's del foro de ASP

También se pueden seleccionar directamente rangos indicando las cela superior izquierda e inferior derecha:

"Select * From A4:IV65536"
  #132 (permalink)  
Antiguo 11/05/2007, 18:15
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Re: FAQ's del foro de ASP

Compañeros, ultimamente hemos tenido muchas preguntas sobre CDOSYS, asi que encontre este enlace que espero les sea de mucha ayuda.

Utilizar SMTP para los mensajes salientes

explica:
  1. Funcionamiento
  2. Configuracion para Windows 2000
  3. Comprobar el servicio
  4. Ejemplos de Prueba
Suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #133 (permalink)  
Antiguo 08/11/2007, 21:11
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: FAQ's del foro de ASP

No se si sera un gran aporte.....pero comparto con todos ustedes un BUSCADOR MULTIPLE con distintos criterios de busqueda:

Cita:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<FORM ACTION='Validar.asp' METHOD='GET' id=form1 name=form1>
</HEAD>
<body bgcolor="#FFCC66" background="2.jpg" text="BLACK" link="BLACK" vlink="BLACK" alink="BLACK">
<%


dim dbConn

'aca recibo los campos que voy a realizar la busqueda
'si quieren agregar mas.....simplemente los agregan aca y despues en las variables

csr = Request.form("csr")
distribuidor = Request.form("distribuidor")
estado = Request.form("estado")

On Error Resume next

'declaro las variables a utilizar incluyendo la se_encuentra
Dim Rs, Cnn, SQL, se_encuentra
set Cnn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
Cnn.Open Session("cnx")

'ejecuto la consulta
strSQL="SELECT * FROM tblcliente"
se_encuentra = False
if csr <> "" then
strSQL=strSQL & " WHERE csr LIKE '%"&csr&"%'"
se_encuentra=True
end if


'la variable se_encuentra se inicializa en falso y se cambia a verdadero si el campo trae un valor ingresado

if distribuidor <> "" then
if se_encuentra then
strSQL=strSQL & " AND distribuidor LIKE '%"&distribuidor&"%'"
else
strSQL=strSQL & " WHERE distribuidor LIKE '%"&distribuidor&"%'"
se_encuentra=True
end if
end if

if estado <> "" then
if se_encuentra then
strSQL=strSQL & " AND estado LIKE '%"&estado&"%'"
else
strSQL=strSQL & " WHERE estado LIKE '%"&estado&"%'"
se_encuentra=True
end if
end if
'abrimos la tabla para llamar los registros
set rs = Cnn.Execute(strSQL)

cnn.Execute(strSQL)

if rs.EOF then
Response.Write("No existe el campo ingresado, verifique los datos")
else %>
'si encuentra los datos, mostramos los resultados
<CENTER>
<TABLE WIDTH=2000 BORDER=1 align="center" CELLSPACING="0">
<tr> <td width=80 bordercolor="#F0F0F0"bgcolor="ORANGE"><center><b>C sr</b></center>
<td width=100 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Local</b></center>
<td width=99 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Guia De Despacho</b></center>
<td width=134 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Distribuidor</b></center>
<td width=102 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Fecha Ingreso</b></center>
<td width=160 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Artefacto</b></center>
<td width=100 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Serie</b></center>
<td width=80 bordercolor="#FFFFFF" bgcolor="ORANGE"><center><b>Estado</b></center>
</tr> </table> </CENTER>

<%do while not rs.EOF%>

<center>
<TABLE BORDER=1 CELLSPACING="0" WIDTH=2000>
<tr>
<%Response.Write "<td WIDTH=80 align='center' >"&rs("csr")&"<td WIDTH=100 align='center'>"&rs("loc")&"<td WIDTH=99 align='center'>"&rs("guia_d")&"<td WIDTH=134 align='center'>"&rs("distribuidor")&"<td WIDTH=102 align='center'>"&rs("fecha_in")&"<td WIDTH=160 align='center' >"&rs("artefacto")&"<td WIDTH=100 align='center' >"&rs("serie")&"<td WIDTH=80 align='center' >"&rs("estado")%>
<br> </tr>
<%rs.Movenext%>
</table></center>
<%loop

end if


rs.Close

set rs = nothing

Cnn.Close

set oCnn = nothing

%>
<br> <br> <font face="Verdana">
<h3> <center> <a href="../menu.asp">Volver</a> </center> </h3>
</font>
</body>
</html>
espero que les sirva
  #134 (permalink)  
Antiguo 03/02/2008, 11:39
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Re: FAQ's del foro de ASP

Version ilustrada

Pregunta: Como otorgo permisos de escritura??? Cual es el procedimiento??

Primero que nada, debemos entrar a las opciones de carpeta dentro del menu Herramientas, para activar nuestra pestaña de seguridad


el siguiente paso sera desmarcar donde dice "Utilizar uso compartido simple de archivos"

eso de recomendado como que no.....



una ves realizado este segundo paso, damos aceptar, y regresamos a la carpeta que nos interesa



ya una ves que demos click sobre las propiedades de la carpeta, aparecera ahora si nuestra pestaña de seguridad, donde estableceremos a que usuario y que privilegios tendran dentro de esta carpeta.... las ilustraciones a continuacion estaran numeradas para realizar el procedimiento sencillo..













una ves establecidos los privilegios que tendra cada uno de nuestros usuarios en esa carpeta especifica, podran o no, escribir o leer el contenido

nota aclaratoria:..a pesar que esta actividad es para que nuestras paginas ASP funcionen correctamente, tambien dentro del uso normal de nuestro sistema, podran mantener en privado o sin acceso a ella, a otros usuarios

tambien deben recordar que cualquier administrador podra quitar esos atributos



__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra

Última edición por Shiryu_Libra; 26/04/2009 a las 23:59 Razón: cambio de URL en imagenes
  #135 (permalink)  
Antiguo 21/04/2008, 11:04
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años
Puntos: 27
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Error de disco o de red.

Bueno, dejo esto aquí porque me ha dado líos encontrar la respuesta y quizás a alguien le sirva mas adelante.

error es:
Cita:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][Controlador ODBC Microsoft Access] Error de disco o de red.

/demos/07102/include/ConectorBaseDatos.asp, línea 5

El escenario es:
+ Windows Vista
+ IIS 7
+ ASP 3.0
+ Conexión a base de datos access funcionando perfectamente en otra pc.

Solución:

Buscar en la siguiente ruta
C:\Windows\System32\inetsrv\config

archivo llamado:
ApplicationHost.Config

Cambiar las siguientes lineas
Cita:
<applicationPoolDefaults>
<processModel identityType="NetworkService" />
</applicationPoolDefaults>
por

Cita:
<applicationPoolDefaults>
<processModel identityType="NetworkService" loadUserProfile="false" />
</applicationPoolDefaults>
ni idea de porque pero ya funciona

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #136 (permalink)  
Antiguo 30/05/2008, 13:41
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Respuesta: FAQ's del foro de ASP

Version Ilustrada

Pregunta: Como puedo mostrar errores descriptivos desde la consola de IIS7 en Windows Vista (referencias de imagenes desde un Vista Ultimate)

Los tipicos 3 pasos de rigor (solo para usuarios que apenas incursionan en esto), que debemos hacer

Otro atajo, es dar Click derecho sobre EQUIPO, Administrar

NOTA: si ya sabes llegar, omite estos 3 pasos, y brinca directamente al paso 4
Paso1



Paso 2
buscaremos dentro del PANEL DE CONTROL

HERRAMIENTAS ADMINISTRATIVAS



Paso 3

Seleccionaremos "Administrador de INTERNET INFORMATION SERVICES (IIS)"



Paso 4
Desplegaremos hasta seleccionar "Default Web Site", o en su caso respectivo el sitio web que deseen



Paso 5

Daremos doble click sobre "Paginas de Errores"



Paso 6

En el panel derecho se encontrara una leyenda que dice
"MODIFICAR CONFIGURACION DE CARACTERISTICA..."



Paso 7

por default, tiene activada "Errores detallados para solicitudes locales y paginas de errores personalizados para solicitudes remotas"

sean cautelozos en este sentido




NOTA: significa que si ejecutamos en el entorno 127.0.0.1 o si estamos haciendo pruebas dentro del mismo pc, nos mostrara completamente el error, dando el numero de linea.. etc

pero si lo hacemos utilizando un segundo equipo dentro de nuestra red, no dara ningun detalle

sean concientes que si esto es para una web interna, no habra tanto problema, pero si activan esta caracteristica para un web de consulta externa(internet), podria ser un riesgo de seguridad

ya que estariamos dando armas para romper el codigo
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra

Última edición por Shiryu_Libra; 07/07/2010 a las 16:58
  #137 (permalink)  
Antiguo 12/11/2008, 08:03
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Obtener la id del registro recien creado

Aquí lo tenemos para Sql Server y Acess
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #138 (permalink)  
Antiguo 13/11/2008, 13:07
 
Fecha de Ingreso: agosto-2008
Mensajes: 9
Antigüedad: 16 años, 2 meses
Puntos: 0
Exclamación FAQ's del foro de ASP

http://cheeso.members.winisp.net/IIRF.aspx

Que conste que ni conozco a los creadores y que esto no es Spam de ningún tipo.

Hace algún tiempo ya escribi sobre otra aplicación similar:
http://www.forosdelweb.com/f91/duda-sobre-urls-amigables-615181/
Que conseguía que urls de este estilo
http://misitio.com/catologo.asp?seccion=seccion1&busqueda=palabra_a_b uscar&otravariabe=pedocacapis
Se parecieran a esta:
http://misitio.com/catologo.asp/seccion=1/catalogo=catalogo2/otravariabe=pedocacapis/


Pero utilizando el IIRPF y configurándolo se puede gastar como si del module Rewrite del apache se tratara.
Y en lugar de gastar un .htacces es editando el IsapiRewrite4.ini

El metodo de instalacion es sencillo:

Servicios de Internet Information Server -> Servicios Web -> Propiedades ->
Filtros ISAPI -> Agregar -> Examinar .. > Elegir el IsapiRewrite4.dll

En el mismo directorio de IsapiRewrite4.dll colocar el IsapiRewrite4.dll
Ejemplo:

Url imagen en grande:http://img220.imageshack.us/my.php?image=iisqw8.jpg


Aqui teneis un ejemplo de configuracion (Archivo IsapiRewrite4.ini):
Código PHP:
# IsapiRewrite4.ini

RewriteEngine On

RewriteCond 
%{HTTP_URL}             (/|.htm|.asp|.html|/[^.]*)$   
RewriteCond %{REQUEST_FILENAME}     !-f
RewriteCond 
%{REQUEST_FILENAME}     !-d

RewriteRule 
/catalogo/(.*)  /catalogo/index.asp?$[L]
RewriteRule /agenda/(.*)  /agenda/index.asp?$[L
Con esta configuracion se pueden lograr urls del estilo de:

http://misitio.com/catologo/lavadora-siemens-WM12S740EE.htm
http://misitio.com/catologo/lavadora/siemens/WM12S740EE/
http://misitio.com/agemda/2008/11/14/
http://misitio.com/agemda/2008-11-14.htm
http://misitio.com/agemda/2008-noviembre-14.htm


Y así cuantos ejemplos queráis .


Cuando os lo descarguéis el IIRPF veréis que hay muchos archivos de configuración de ejemplo.


Ya no hay excusas para no tener URL's Amigables

Saludos!
  #139 (permalink)  
Antiguo 02/12/2008, 12:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 82
Antigüedad: 16 años, 3 meses
Puntos: 4
De acuerdo FAQ's del foro de ASP

Saludos!
Hoy ando por aquí listo para una aportación . . .

Seguramente alguna vez has necesitado una diferencia de horas, minutos ó simples segundos, lo malo es que si lo hicieramos de la forma tradicional nos saldría algo mas ó menos así:

1 hora 0 minutos 4933 segundos

Lo cuál no es el resultado esperado no es verdad?

Con el siguiente código pueden por fin hacer su pequeño contador hehehe . . . espero les sirva . . .

Código:
fini = "FECHA INICIAL"
fact = Now()
   segundosonline = DateDiff("s", fini, fact)
   minutosonline = Int(segundosonline/60)
   horasonline = Int(minutosonline/60)
   minutosmod = minutosonline Mod 60
   segundosmod = segundosonline Mod 60 Mod 60 Mod 60 
   If(minutosmod<10) Then minutosmod ="0"&minutosmod End If 
   If(segundosmod<10) Then segundosmod ="0"&segundosmod End If 

   If segundosonline < 60 Then
      tiempo = segundosonline&" segundos"
   ElseIf  segundosonline > 60 And segundosonline < 3600 Then
      tiempo = minutosmod&":"&segundosmod&" minutos"
   Else      
      tiempo = horasonline&":"&minutosmod&":"&segundosmod&" horas"
   End If 
Lo cuál nos daría algo como:

1:24:03 horas

Fácil y rápido . . .

Hasta la proxima ! ! !
  #140 (permalink)  
Antiguo 29/12/2008, 15:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: FAQ's del foro de ASP

Valorar el trabajo de un usuario (haciendo algunos cambios podemos valorar un solo tema, video, etc..)

+ Campos de la tabla con los que trabajamos
- Usuario --> Texto / Nombre del usuario cuyo articulo ha sido puntuado
- Reconocimiento --> Numerico / Cantidad de puntos que tiene el usuario que intenta puntuar el articulo
- Kien_Reconoce --> Texto / Nombre de los usuarios que han puntuado el articulo


mostrartemas.asp

Código HTML:
<a id="<%=autonumerico_del_articulo%>" onclick="return false" href="./mostrartemas.asp">Reconocimiento</a>
<script type="text/javascript">
  Evento(document.getElementById('<%=autonumerico_del_articulo%>'),'click',function() {
      PuntarArticulo('<%=autor_articulo%>', '<%=nombre_usuario_da_puntos%>');
})    
</script> 
reconocimiento.asp

Código asp:
Ver original
  1. Dim usuapuntuar, usukpuntua, PuntosaOtorgar, reconocedores, kienson, i, otroReconocedor
  2. usuapuntuar = Request.QueryString("akien")
  3. usukpuntua = Request.QueryString("dkien")
  4.  
  5. SQL="Select Usuario, Reconocimiento FROM tabla WHERE Usuario = '"&usukpuntua&"'" ' Sacamos la puntuación que tiene el usuario que quiere puntar el articulo
  6.  
  7. cant_reconocimiento = CInt(rs1.Fields("Reconocimiento"))
  8.  
  9. ' ============= Puntos que puede otorgar el usuario que intenta puntuar el articulo, deacuerdo con su reconociemiento hasta el momento =============
  10. if cant_reconocimiento =< 9 Then
  11. PuntosaOtorgar = 1
  12. elseif cant_reconocimiento >= 10 and cant_reconocimiento =< 19 Then
  13. PuntosaOtorgar = 2
  14. elseif cant_reconocimiento >= 20 and cant_reconocimiento =< 29 Then
  15. PuntosaOtorgar = 3
  16. elseif cant_reconocimiento >= 30 and cant_reconocimiento =< 39 Then
  17. PuntosaOtorgar = 4
  18. elseif cant_reconocimiento >= 40 and cant_reconocimiento =< 49 Then
  19. PuntosaOtorgar = 5
  20. else
  21. PuntosaOtorgar = 6
  22. end if
  23. ' ===============================================
  24.  
  25. SQL="Select Usuario, Kien_Reconoce FROM tabla WHERE Usuario = '"&usuapuntuar&"'" ' Kienes le han otorgado puntos a este usuario
  26.  
  27. reconocedores = rs2.Fields("Kien_Reconoce")
  28.  
  29. if reconocedores <> "" Then ' Si no es el primer usuario en puntuar el tema
  30. kienson = Split(reconocedores, ",")
  31. For i = 0 To UBound(kienson)
  32. If kienson(i) = usukpuntua AND i =< 2 Then ' No hay 3 nuevos reconocedores entre la última vez que este usuario puntuó el articulo y ahora
  33. Response.Write usukpuntua & escape(", desde la última vez que reconociestes el esfuerzo de ") & usuapuntuar & escape(", nadie más se lo ha reconcido. Así que tendrás que esperar hasta que otro usuario lo haga.")
  34. Response.End ()
  35. Exit For
  36. End If
  37. Next
  38. otroReconocedor =  usukpuntua & "," & reconocedores
  39. else
  40. otroReconocedor =  usukpuntua
  41. end if
  42.  
  43. SQL="UPDATE tabla SET Reconocimiento = Reconocimiento + "&PuntosaOtorgar&" , Kien_Reconoce = '"&otroReconocedor&"'  WHERE Usuario = '"&usuapuntuar&"';"
  44. Response.Write usukpuntua & escape(", seguro que ") & usuapuntuar & escape(" te agradece el reconocimento que le acabas de dar por su esfuerzo.")
  45. Response.End ()
  46. %>


reconocimiento.js

Código javascript:
Ver original
  1. function creaAjax(){
  2.     var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
  3.     var ajax = false;
  4.     for(var i=0 ; !ajax && i<ajaxs.length ; i++){
  5.         try{
  6.             ajax = new ActiveXObject(ajaxs[i]);   // Internet Explorer
  7.         }
  8.         catch(e) {
  9.             ajax = false;
  10.         }
  11.     }
  12.     if(!ajax && typeof XMLHttpRequest!='undefined') {
  13.         ajax = new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  14.     }
  15.     return ajax;
  16. }
  17.  
  18. function PuntarArticulo(ak, dk){
  19. var ajax=creaAjax();
  20. ajax.open ('GET', 'reconocimiento.asp?akien='+ak+'&dkien='+dk, true);
  21. ajax.onreadystatechange = function() {
  22.  
  23.     if (ajax==null){
  24.         alert ("Tu navegador web no soporta AJAX!");
  25.         return;
  26.     }
  27.  
  28.          if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
  29.                                      
  30.          }
  31.          else if (ajax.readyState==4){
  32.                    if(ajax.status==200){
  33.                                             alert (unescape(ajax.responseText));
  34.                 return;
  35.                    }
  36.                    else if (ajax.status==404)
  37.                                              {
  38.                                             alert ("La dirección no existe");
  39.                 return;
  40.                                              }
  41.                                              else
  42.                                              {
  43.                                              alert ("Error: " + ajax.status);
  44.                 return;
  45.                                              }
  46.                                     }
  47.                   }
  48.          ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  49.          ajax.send(null);
  50.          return
  51. }
  52.  
  53.  
  54. function Evento(elemento,nomevento,funcion)
  55. {
  56.   if (elemento.attachEvent)
  57.   {
  58.       var f=function(){
  59.         funcion.call(elemento,window.event);
  60.     }
  61.     elemento.attachEvent('on'+nomevento,f);
  62.     return true;
  63.   }
  64.   else  
  65.     if (elemento.addEventListener)
  66.     {
  67.       elemento.addEventListener(nomevento,funcion,false);
  68.       return true;
  69.     }
  70.     else
  71.       return false;
  72. }
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 01/01/2009 a las 06:16
  #141 (permalink)  
Antiguo 27/10/2009, 14:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 82
Antigüedad: 16 años, 3 meses
Puntos: 4
Respuesta: FAQ's del foro de ASP

Obtener Fecha Límite [sólo días hábiles]

Pequeña función que sirve para cualquier objeto que tenga un máximo de días, claro . . . días hábiles . . .


Código ASP:
Ver original
  1. 'WeekDay arroja para Sábado: 7 y para Domingo: 1
  2.  
  3. Function DiasLab(Fec,Days)
  4.     For x = 1 To Days*2
  5.         MyDate = DateAdd("d",x,Fec)
  6.         If Not(WeekDay(MyDate) = 1 Or WeekDay(MyDate) = 7) Then
  7.             y = y + 1
  8.         End If
  9.         If Not(y = Days) Then
  10.             z = z + 1
  11.         Else
  12.             Exit For
  13.         End If
  14.     Next
  15.     DiasLab = DateAdd("d",z+1,Fec)
  16. End Function
  17.  
  18. Response.Write DiasLab("2009-10-27",8)

Sé que habrá algún método mas complejo por ahí, pero hasta ahorita no lo han compartido . . .

Nos seguimos leyendo . . .
  #142 (permalink)  
Antiguo 09/01/2010, 08:06
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: FAQ's del foro de ASP

He estado revisando y parece que este no está

Saber cuantos años, meses y días hay de diferecia entre dos fechas

Código ASP:
Ver original
  1. Dim fInicio,fFinal,AInicio,AFinal,bis,i,sumadiasBis,segundos,anyos,segundosRestante,meses,dias
  2. fInicio = "09/01/2010"
  3. fFinal = "18/02/2013"
  4. AInicio = 2010
  5. AFinal = 2013
  6. bis = 0
  7.  
  8. ' Comprobamos si hay algún año bisiesto. 86400 segundos es un días
  9. For i = AInicio To AFinal
  10. if i mod 4 = 0 then
  11. bis = bis + 86400
  12. else
  13. bis = bis + 0
  14. end if
  15. Next ' i
  16. sumadiasBis = bis
  17.  
  18. Response.Write "Fecha de Inicio " & fInicio & "<br />Fecha Final " & fFinal & "<br /><br />Restan<br />"
  19.  
  20. ' Calculamos los segundos entre las dos fechas
  21. segundos = DateDiff("s", fInicio, fFinal)
  22.  
  23. anyos = Fix((segundos-sumadiasBis)/31536000)
  24. Response.Write anyos & " a&ntilde;os<br />"
  25. segundosRestante = (segundos-sumadiasBis) mod (31536000)
  26.  
  27. meses = Fix(segundosRestante/2592000)
  28. Response.Write meses & " meses<br />"
  29. segundosRestante = segundosRestante mod 2592000 ' Suma un día mas por cada años bisiesto
  30. ' segundosRestante = (segundosRestante-sumadiasBis) mod 2592000 ' No suma un día mas por cada año bisiesto
  31.  
  32. dias = Fix(segundosRestante/86400)
  33. Response.Write dias & " d&iacute;as"
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #143 (permalink)  
Antiguo 25/01/2010, 11:35
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 17 años, 1 mes
Puntos: 3
Respuesta: FAQ's del foro de ASP

Eliminar el contenido total de una carpeta dentro del servidor

Código ASP:
Ver original
  1. set fso=server.CreateObject("Scripting.filesystemobject")
  2.   'si existen las carpetas se eliminan para despues volver a crearlas
  3.   if fso.folderexists(server.MapPath("graficas")) then
  4.     fso.deletefolder(server.MapPath("graficas"))
  5.     set nfolder=fso.createfolder(server.MapPath("graficas"))   
  6.   else
  7.     'caso contrario solo se crean las carpetas
  8.     set nfolder=fso.createfolder(server.MapPath("graficas"))
  9.   end if
  10.  
  11.   if fso.folderexists(server.MapPath("graficas2")) then
  12.     fso.deletefolder(server.MapPath("graficas2"))
  13.     set nfolder=fso.createfolder(server.MapPath("graficas2"))  
  14.   else
  15.     set nfolder=fso.createfolder(server.MapPath("graficas2"))
  16.   end if
  17.  
  18.   set fso=nothing
  19.   set nfolder=nothing
  #144 (permalink)  
Antiguo 18/02/2010, 07:05
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: FAQ's del foro de ASP

Resaltar las porciones de código que están entre etiquetas

Parecido a lo que hace este foro cuando usamos los highlight

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT"%>
  2. <% Option Explicit %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  7. <title></title>
  8. <style type="text/css">
  9. .contenedor {
  10. background: #EEEEEE;
  11. border:1px solid rgb(120,120,120);
  12. width:400px;
  13. overflow:auto;
  14. }
  15.  
  16. #lenguaje {
  17. background: orange;
  18. font: 12px verdana;
  19. color: #000000;
  20. padding-left: 4px;
  21. width:100px;
  22. height:18px;
  23. }
  24.  
  25. .contenido1, .contenido2 {
  26. font: 12px monospace;
  27. color: #000000;
  28. padding-top: 1px;
  29. padding-bottom: 1px;
  30. }
  31.  
  32. .contenido1 {
  33. background: #FFFFFF;
  34. }
  35.  
  36. .contenido2 {
  37. background: transparent;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <%
  43. Function EnvuelveCod(cadena)
  44. Dim Reg1, RempCorchete, Reg2, RempEtiquetas, Reg3, RempLengaje, arrlang, contador, arretiqueta
  45. Dim enumeraYcolorea_linea, n, encabezado, array_codigo, i, resto, estilo, RempSaltoLinea
  46.  
  47. ' Cambia caracteres especiales por sus entidades HTML
  48. cadena = Server.HTMLEncode(cadena)
  49. cadena = Replace(cadena, "<", "&lt;", 1, -1, 1)
  50. cadena = Replace(cadena, ">", "&gt;", 1, -1, 1)
  51. cadena = Replace(cadena, "{", "{", 1, -1, 1)
  52. cadena = Replace(cadena, "}", "}", 1, -1, 1)
  53. cadena = Replace(cadena, "$", "$", 1, -1, 1)
  54. cadena = Replace(cadena, "%", "%", 1, -1, 1)
  55. cadena = Replace(cadena, "(", "(", 1, -1, 1)
  56. cadena = Replace(cadena, ")", ")", 1, -1, 1)
  57. cadena = Replace(cadena, "\", "\", 1, -1, 1)
  58. cadena = Replace(cadena, "|", "|", 1, -1, 1)
  59. cadena = Replace(cadena, ":", ":", 1, -1, 1)
  60. cadena = Replace(cadena, "?", "?", 1, -1, 1)
  61. cadena = Replace(cadena, "¿", "&iquest;", 1, -1, 1)
  62. cadena = Replace(cadena, "!", "!", 1, -1, 1)
  63. cadena = Replace(cadena, "+", "+", 1, -1, 1)
  64. cadena = Replace(cadena, "*", "*", 1, -1, 1)
  65. cadena = Replace(cadena, ",", ",", 1, -1, 1)
  66. cadena = Replace(cadena, "-", "-", 1, -1, 1)
  67. cadena = Replace(cadena, "_", "_", 1, -1, 1)
  68. cadena = Replace(cadena, "=", "=", 1, -1, 1)
  69. cadena = Replace(cadena, "'", "'", 1, -1, 1)
  70. cadena = Replace(cadena, ".", ".", 1, -1, 1)
  71. cadena = Replace(cadena, "^", "^", 1, -1, 1)
  72. cadena = Replace(cadena,"¡","&iexcl;", 1, -1, 1)
  73. cadena = Replace(cadena,"ñ","&ntilde;", 1, -1, 1)
  74. cadena = Replace(cadena,"Ñ","&Ntilde;", 1, -1, 1)
  75. cadena = Replace(cadena,"á","&aacute;", 1, -1, 1)
  76. cadena = Replace(cadena,"Á","&Aacute;", 1, -1, 1)
  77. cadena = Replace(cadena,"é","&eacute;", 1, -1, 1)
  78. cadena = Replace(cadena,"É","&Eacute;", 1, -1, 1)
  79. cadena = Replace(cadena,"í","&iacute;", 1, -1, 1)
  80. cadena = Replace(cadena,"Í","&Iacute;", 1, -1, 1)
  81. cadena = Replace(cadena,"ó","&oacute;", 1, -1, 1)
  82. cadena = Replace(cadena,"Ó","&Oacute;", 1, -1, 1)
  83. cadena = Replace(cadena,"ú","&uacute;", 1, -1, 1)
  84. cadena = Replace(cadena,"Ú","&Uacute;", 1, -1, 1)
  85. cadena = Replace(cadena , "&quot;", """", 1, -1, 1)
  86.  
  87. ' Reemplaza los corchetes por entidades cuendo no equivalen a las etiquetas de código
  88. Set Reg1= New RegExp
  89. Reg1.IgnoreCase = True
  90. Reg1.Global = True
  91. Reg1.Pattern = "\[(?!(\/*)code)(.*)(\])"
  92. RempCorchete = Reg1.Replace(cadena, "[$2]")
  93.  
  94. ' Este reemplazo hay que hacerlo aquí, para que no afecte al cierre de las etiquetas
  95. cadena = Replace(RempCorchete, "/", "/", 1, -1, 1)
  96.  
  97. ' Reemplaza las etiquetas de código por el caracter "|". Se puede escoger cualquier otro caracter
  98. Set Reg2= New RegExp
  99. Reg2.IgnoreCase = True
  100. Reg2.Global = True
  101. Reg2.Pattern = "(\r?[^a-z0-9&]?\[.*?\]\r?[^a-z0-9&]?)"
  102. RempEtiquetas = Reg2.Replace(cadena, "|")
  103.  
  104. ' Reemplaza las etiquetas de códogo y todo el texto que no está envuelto en ellas.
  105. ' Solo mantenemos el lenguaje (atributo) de las etiquetas en caso que lo tengan y se le añade el caracter "|" .
  106. ' Se puede escoger cualquier otro caracter
  107. Set Reg3= New RegExp
  108. Reg3.IgnoreCase = True
  109. Reg3.Global = True
  110. Reg3.Pattern = "([^\[]*)(\[(?:[^""\]]+))([""]?)(\s*)(.*?)\4\3(\][^\[]*)(\[[^\[]+)"
  111. RempLengaje = Reg3.Replace(cadena, "$5|")
  112.  
  113. ' Separamos el lenguaje
  114. arrlang = Split(Trim(RempLengaje),"|")
  115.  
  116. contador = 0
  117.  
  118. ' Este reemplazo hay que hacerlo aquí
  119. RempEtiquetas = Replace(RempEtiquetas, """", "&quot;", 1, -1, 1)
  120.  
  121. ' Separamos el texto plano del código
  122. arretiqueta = Split(RempEtiquetas,"|")
  123.             enumeraYcolorea_linea = ""
  124.  
  125.     For n = 0 to UBound(arretiqueta)
  126.         ' Es texto plano
  127.         IF (Int(n) mod 2 = 0 ) then
  128.             enumeraYcolorea_linea = enumeraYcolorea_linea & arretiqueta(n)
  129.        
  130.         ' Es código
  131.         ELSE
  132.             ' En la etiqueta de código no se especifica lenguaje
  133.             If (arrlang(contador) = "" or arrlang(contador) = null) then
  134.             encabezado = ""
  135.              ' Se especifica lenguaje
  136.             Else
  137.             encabezado = "<div id=""lenguaje"">" & arrlang(contador) & "</div>"
  138.             End If
  139. contador = contador +1
  140.             enumeraYcolorea_linea = enumeraYcolorea_linea & "<pre><div class=""contenedor"">" & encabezado & "<ol type=""1"">"
  141.  
  142.             array_codigo = Split(arretiqueta(n), vbCrLf) ' Dividimos cada linea de código
  143.  
  144.         For i = 0 to UBound(array_codigo)
  145.             resto = (abs(i) mod 2)
  146.             select Case resto ' Coloreamos cada linea
  147.                     case 0: estilo = "contenido1"
  148.                    case 1: estilo = "contenido2"
  149.             end select
  150.             enumeraYcolorea_linea = enumeraYcolorea_linea & "<li class="""&estilo&""">" &  array_codigo(i) & "</li>"
  151.         Next 'i
  152.             enumeraYcolorea_linea = enumeraYcolorea_linea & "</ol></div></pre>"
  153.  
  154.         END IF
  155.     Next 'n
  156.  
  157. ' Reemplamos los saltos de linea
  158. RempSaltoLinea = Replace(enumeraYcolorea_linea, vbCrLf, "<br />" & vbCrLf, 1, -1, 1)
  159.  
  160. Set RempLengaje = Nothing
  161. Set RempEtiquetas = Nothing
  162. Set RempCorchete = Nothing
  163. EnvuelveCod = RempSaltoLinea
  164. End Function
  165.  
  166.  
  167. ' Función para subir a la bd el html generado
  168. Response.Write EnvuelveCod(Trim(Request.Form("txtarea")))
  169.  
  170. ' Recibe el html de la bd
  171. ' Response.Write Request.Form("txtarea")
  172. %>
  173. </body>
  174. </html>

Uso


Cita:
Código montado por [Adler]
[cod e="javascript"]funcion funcion() {
document.write ("hola");
}[/cod e]

Las etiquetas de código pueden contener el lenguaje usado o no

[cod e="php"]<?php
$arr = Array(1,2,3,"a");
echo $arr[0];
?>
[/cod e]

[cod e]<%
Dim bienvenida
bienvenida = "mundo"
response.write "hola" & bienvenida
%>
[/cod e]

También podemos hacer que no se ejecuten las entidades HTML

[cod e="php"]
<?php
$cadena = str_replace("<", "&lt;", $cadena);
$cadena = str_replace(">", "&gt;", $cadena);
$cadena = str_replace("{", "& #123;", $cadena);
$cadena = str_replace("}", "& #125;", $cadena);
$cadena = str_replace("$", "& #36;", $cadena);
$cadena = str_replace("%", "& #37;", $cadena);
$cadena = str_replace("(", "& #40;", $cadena);
$cadena = str_replace(")", "& #41;", $cadena);
$cadena = str_replace("\\", "& #92;", $cadena);
$cadena = str_replace("|", "& #124;", $cadena);
$cadena = str_replace(":", "& #58;", $cadena);
$cadena = str_replace("?", "& #63;", $cadena);
$cadena = str_replace("¿", "&iquest;", $cadena);
$cadena = str_replace("!", "& #33;", $cadena);
$cadena = str_replace("+", "& #43;", $cadena);
$cadena = str_replace("*", "& #42;", $cadena);
$cadena = str_replace(",", "& #44;", $cadena);
$cadena = str_replace("-", "& #45;", $cadena);
$cadena = str_replace("_", "& #95;", $cadena);
$cadena = str_replace("=", "& #61;", $cadena);
$cadena = str_replace("'", "& #39;", $cadena);
$cadena = str_replace(".", "& #46;", $cadena);
$cadena = str_replace("^", "& #94;", $cadena);
$cadena = str_replace("¡","&iexcl;", $cadena);
$cadena = str_replace("ñ","&ntilde;", $cadena);
$cadena = str_replace("Ñ","&Ntilde;", $cadena);
$cadena = str_replace("á","&aacute;", $cadena);
$cadena = str_replace("Á","&Aacute;", $cadena);
$cadena = str_replace("é","&eacute;", $cadena);
$cadena = str_replace("É","&Eacute;", $cadena);
$cadena = str_replace("í","&iacute;", $cadena);
$cadena = str_replace("Í","&Iacute;", $cadena);
$cadena = str_replace("ó","&oacute;", $cadena);
$cadena = str_replace("Ó","&Oacute;", $cadena);
$cadena = str_replace("ú","&uacute;", $cadena);
$cadena = str_replace("Ú","&Uacute;", $cadena);
?>
[/cod e]

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 06/03/2010 a las 06:32 Razón: Las etiquetas de code y algunas entidades html están separas para este foro no las ejecute

Etiquetas: asp, faq
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

SíEste tema le ha gustado a 28 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 12:54.