<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-25208438</id><updated>2012-01-12T15:45:32.664-06:00</updated><category term='asp funcion caracter ascii'/><category term='asp'/><category term='xml'/><category term='javascript'/><category term='dolar'/><category term='mysql'/><category term='campos'/><category term='ajax'/><category term='leer'/><category term='tipo'/><category term='flash ie internet explorer hack bloqueo borde'/><category term='subir'/><category term='agregar'/><category term='include'/><category term='modificar'/><category term='webservice'/><category term='eliminar'/><category term='side'/><category term='xelupload'/><category term='contenido'/><category term='.mx'/><category term='whois'/><category term='cambio'/><category term='.com'/><category term='archivo'/><category term='rss'/><category term='server'/><category term='dominios'/><title type='text'>Javier Mata - WEBMASTER</title><subtitle type='html'>www.creandowebs.com</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-25208438.post-9079636177600070094</id><published>2012-01-02T22:05:00.002-06:00</published><updated>2012-01-05T11:32:19.315-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='dolar'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='tipo'/><category scheme='http://www.blogger.com/atom/ns#' term='leer'/><category scheme='http://www.blogger.com/atom/ns#' term='cambio'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>Obtener valor del dolar con ASP (2 metodos)</title><content type='html'>Buscando en varios lugares y despues de usar la primera de las 2 soluciones que muestro a continuacion decidi a intentarlo usando un webservice como el del Banco de Mexico pero al parecer hay un error con su servicio, asi que usare los datos proporcionados via RSS por el DOF (Diario oficial de la Federacion).&lt;br /&gt;&lt;br /&gt;Como comente, usaremos 2 metodos para que puedan utilizar el que mejor les acomode, el primero sera usando informacion de HSBC y usando un lector de codigo tomado con XMLHTTP, el segundo es usando el metodo MSXML2.DOMDocument y recorriendo un RSS con el.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Primer metodo, usando como fuente HSBC de Mexico necesitaremos crear una funcion muy simple:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;Function tipo_cambio()&lt;br /&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp; on error resume next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Set xml = Server.CreateObject("Microsoft.XMLHTTP")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; xml.Open "GET", "http://www.hsbc.com.mx/1/2/es/personas/divisas", False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; xml.Send&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Cadena = CSTR(xml.responseText)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PosIni1 = InStr(Cadena,"Americano")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PosIni2 = InStr(PosIni1,Cadena,"$")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PosFin&amp;nbsp; = InStr(PosIni2, Cadena,"&amp;lt;")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; DolarCompra = MID(Cadena, PosIni2-2, PosFin-PosIni2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PosIni1 = PosFin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PosIni2 = InStr(PosIni1,Cadena,"$")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PosFin&amp;nbsp; = InStr(PosIni2, Cadena,"&amp;lt;")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; DolarVenta = MID(Cadena, PosIni2-2, PosFin-PosIni2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Set xml = Nothing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if instr(DolarCompra,chr(32)) then DolarCompra=replace(DolarCompra,chr(32),"")&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dolar_compra=CDbl(MID(DolarCompra,InStr(DolarCompra,"&amp;gt;")+1,LEN(DolarCompra)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dolar_venta=CDbl(MID(DolarVenta,InStr(DolarVenta,"&amp;gt;")+1,LEN(DolarVenta)))&lt;br /&gt;&lt;br /&gt;end function&lt;/blockquote&gt;Este metodo lee todo el codigo de la pagina indicada y busca un punto de inicio y otro de final para la lectura de la informacion, aqui sacamos el tipo de compra y de venta.&lt;br /&gt;&lt;br /&gt;Para obtener el valor simplemente lo llamamos asi: &lt;i&gt;&lt;b&gt;dolar=tipo_cambio()&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;En lo personal lo que hago es crear un archivo donde guardo todas las funciones y lo incluyo en el top de mis paginas y ya nada mas llamo a la funcion que necesito,&lt;br /&gt;&lt;br /&gt;El segundo metodo es usando RSS (Repito que intente usar un webservice pero no encontre uno "oficial")&lt;br /&gt;&lt;br /&gt;La funcion para este metodo es un poco mas larga pero haciendo algunos ajustes puede servirte para muchas mas cosas ;-)&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;Function LeeXml(responseText)&lt;br /&gt;&amp;nbsp;Dim xmlResponse&lt;br /&gt;&amp;nbsp;Dim xnodelist&lt;br /&gt;&amp;nbsp;Dim indicadores&lt;br /&gt;&amp;nbsp;Dim id, uf, usd, euro, utm, tcm, fecha&lt;br /&gt;&lt;br /&gt;&amp;nbsp;indicadores = ""&lt;br /&gt;&amp;nbsp;If Len(responseText) &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&amp;nbsp; Set xmlResponse = CreateObject("MSXML2.DOMDocument")&lt;br /&gt;&amp;nbsp; xmlResponse.async = false&lt;br /&gt;&amp;nbsp; xmlResponse.loadXml responseText&lt;br /&gt;&amp;nbsp; Set xnodelist = xmlResponse.documentElement.selectNodes("/rss/channel/item")&lt;br /&gt;&amp;nbsp; Dim objItem&lt;br /&gt;&lt;br /&gt;&amp;nbsp; For Each objItem In xnodelist&lt;br /&gt;&amp;nbsp;&amp;nbsp; titulo = objItem.selectSingleNode("title").Text&lt;br /&gt;&amp;nbsp;&amp;nbsp; descripcion = objItem.selectSingleNode("description").Text&lt;br /&gt;&amp;nbsp;&amp;nbsp; pubDate = objItem.selectSingleNode("pubDate").Text&lt;br /&gt;&amp;nbsp;&amp;nbsp; if titulo="DOLAR" then dolar=descripcion&lt;br /&gt;&amp;nbsp; Next&lt;br /&gt;&lt;br /&gt;&amp;nbsp; indicadores = dolar&lt;br /&gt;&amp;nbsp;End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp;LeeXml = indicadores&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Function InvocarWebService (strSoap, strSOAPAction, strURL, ByRef xmlResponse)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim xmlhttp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim blnSuccess&lt;br /&gt;&lt;br /&gt;&amp;nbsp; Set xmlhttp = server.CreateObject("WinHttp.WinHttpRequest.5.1")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlhttp.Open "POST", strURL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlhttp.setRequestHeader "Man", "POST " &amp;amp; strURL &amp;amp; " HTTP/1.1"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlhttp.setRequestHeader "SOAPAction", strSOAPAction&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call xmlhttp.send(strSoap)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If xmlhttp.Status = 200 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blnSuccess = True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blnSuccess = False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&lt;br /&gt;&amp;nbsp; xmlResponse = xmlhttp.ResponseText&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InvocarWebService = blnSuccess&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set xmlhttp = Nothing&lt;br /&gt;End Function&lt;/blockquote&gt;A este metodo falta agregarle en el archivo donde llamaras la funcion algo asi:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&amp;lt;%strFecha = Request.Form("fecha")&lt;br /&gt;strSoap = "&amp;lt;?xml version='1.0' encoding='utf-8'?&amp;gt;"&amp;amp; _&lt;br /&gt;"&amp;lt;soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'&amp;gt;"&amp;amp; _&lt;br /&gt;"&amp;lt;/soap:Envelope&amp;gt;"&lt;br /&gt;strSOAPAction = "Indicadores/Indicadores"&lt;br /&gt;%&amp;gt;&lt;/blockquote&gt;&amp;nbsp;Y lo llamas asi:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&amp;lt;%&lt;br /&gt;Dim xmlResponse&lt;br /&gt;If InvocarWebService (strSoap, strSOAPAction, "http://www.dof.gob.mx/indicadores.xml", xmlResponse) Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Response.Write(LeeXml(xmlResponse))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dolar=formatcurrency(LeeXml(xmlResponse),2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.write dolar&lt;br /&gt;Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write "*** Ha ocurrido un Error ***"&lt;br /&gt;End If&lt;br /&gt;Set xmlResponse = Nothing&lt;br /&gt;%&amp;gt;&lt;/blockquote&gt;&amp;nbsp;En este caso, tomo el valor resultante en la variable dolar, le doy formato con 2 decimales y luego lo imprimo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-9079636177600070094?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/9079636177600070094/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=9079636177600070094' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/9079636177600070094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/9079636177600070094'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2012/01/obtener-valor-del-dolar-2-metodos.html' title='Obtener valor del dolar con ASP (2 metodos)'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-2082983814974554151</id><published>2011-07-27T13:07:00.001-05:00</published><updated>2011-12-08T10:46:12.260-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eliminar'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='campos'/><category scheme='http://www.blogger.com/atom/ns#' term='modificar'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><category scheme='http://www.blogger.com/atom/ns#' term='agregar'/><title type='text'>Modificar campos en tabla MySQL con ASP</title><content type='html'>Dependera del proyecto, habra ocaciones en las que requiramos el poder modificar los campos existentes en una tabla MySQL, ya sea agregar, eliminar, modificar.&lt;br /&gt;&lt;br /&gt;Para eso usaremos la sentencia ALTER.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Para esto usaremos instrucciones como ADD, DROP y CHANGE, para ver mas opciones puedes checar el siguiente link: &lt;a href="http://dev.mysql.com/doc/refman/5.0/es/alter-table.html"&gt;http://dev.mysql.com/doc/refman/5.0/es/alter-table.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El proceso es simple, aqui un pequeño ejemplo:&lt;br /&gt;&lt;br /&gt;Conectamos con la Base de datos algo asi:&lt;br /&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;Set conexion = Server.CreateObject("ADODB.Connection")&lt;br /&gt;set rsupdat=server.createobject("ADODB.connection")&lt;br /&gt;conexion.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=&lt;i&gt;&lt;b&gt;localhost&lt;/b&gt;&lt;/i&gt;;PORT=3306;DATABASE=&lt;i&gt;&lt;b&gt;db&lt;/b&gt;&lt;/i&gt;; USER=&lt;i&gt;&lt;b&gt;user&lt;/b&gt;&lt;/i&gt;;PASSWORD=&lt;b&gt;&lt;i&gt;pass&lt;/i&gt;&lt;/b&gt;;OPTION=3;"&lt;/pre&gt;&lt;br /&gt;&amp;nbsp;&lt;b&gt;AGREGAR UN CAMPO&lt;/b&gt;&lt;br /&gt;Llamamos a la sentencia ALTER en el SQL, con este agregaremos un campo email, a una tabla llamada test tipo VARCHAT con 60 caracteres y despues del campo id:&lt;br /&gt;&lt;pre&gt;sql="ALTER TABLE &lt;i&gt;&lt;b&gt;test&lt;/b&gt;&lt;/i&gt; ADD &lt;i&gt;&lt;b&gt;email VARCHAR(60)&lt;/b&gt;&lt;/i&gt; AFTER &lt;i&gt;&lt;b&gt;id&lt;/b&gt;&lt;/i&gt;"&lt;br /&gt;set rsupdat=conexion.execute(sql)&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&amp;nbsp;&lt;b&gt;ELIMINAR UN CAMPO&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Usaremos la opcion DROP para eliminar un campo, borraremos el mismo que habiamos creado:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sql="ALTER TABLE &lt;i&gt;&lt;b&gt;test&lt;/b&gt;&lt;/i&gt; DROP &lt;i&gt;&lt;b&gt;email&lt;/b&gt;&lt;/i&gt;"&lt;br /&gt;set rsupdat=conexion.execute(sql)&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;CAMBIAR DE NOMBRE A CAMPO&lt;/b&gt;&lt;br /&gt;Cambiaremos el nombre de email a correo y cambiaremos la longitud de 60 a 100 caracteres:&lt;br /&gt;&lt;pre&gt;sql="ALTER TABLE test CHANGE email correo VARCHAR(100)"&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-2082983814974554151?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/2082983814974554151/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=2082983814974554151' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/2082983814974554151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/2082983814974554151'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2011/07/modificar-campos-en-tabla-mysql-con-asp.html' title='Modificar campos en tabla MySQL con ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-8606421759827153546</id><published>2009-11-16T20:07:00.000-06:00</published><updated>2009-11-16T20:07:14.082-06:00</updated><title type='text'>Enlaces cortos con TinyUrl y ASP</title><content type='html'>En algunas aplicaciones web necesitaremos crear enlaces cortos para evitar el clasico http://www.tupagina.com/tipo1=32&amp;amp;variable2=32532 y en cambio obtener algo como http://tinyurl.com/yk6xo6j, quizas tampoco tan facil de recordar pero menos complicado que el anterior, para eso usaremos la API de TinyURL y ASP clasico.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;La funcion que usaremos es la siguiente:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;function asp_short_url(strUrl)&lt;br /&gt; Dim oXml,strTinyUrl&lt;br /&gt; strTinyUrl = "http://tinyurl.com/api-create.php?url=" &amp;amp; strUrl&lt;br /&gt; set oXml = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")&lt;br /&gt; oXml.Open "GET", strTinyUrl, false&lt;br /&gt; oXml.Send null&lt;br /&gt; asp_short_url = oXml.responseText&lt;br /&gt; Set oXml = nothing&lt;br /&gt;End Function&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Y la forma de llamarlo es asi:&lt;br /&gt;&lt;blockquote&gt;Response.Write (asp_short_url("&lt;b&gt;http://www.tupagina.com/tipo1=32&amp;amp;variable2=32532&lt;/b&gt;"))&lt;br /&gt;&lt;/blockquote&gt;Donde la parte en negritas es lo unico que debemos cambiar, es bastante sencillo y util... o eso espero. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-8606421759827153546?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/8606421759827153546/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=8606421759827153546' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/8606421759827153546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/8606421759827153546'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2009/11/enlaces-cortos-con-tinyurl-y-asp.html' title='Enlaces cortos con TinyUrl y ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-1871186187804254259</id><published>2009-11-08T21:44:00.000-06:00</published><updated>2009-11-08T21:44:55.927-06:00</updated><title type='text'>Comprobar usuario disponible con ASP y AJAX</title><content type='html'>Cuando vamos a crear una cuenta nueva en un sitio es muy molesto el que tengamos que llenar un largo formulario, con campos innecesarios, y encima de eso enterarnos que el usuario que pusimos ya existe, esto nos dara un error en que en el mejor de los casos el sitio nos regresara con los demas datos llenos solicitando solamente ingresemos otro usuario diferente, muchas de estas veces teniendo que ingresar la clave nuevamente.&lt;br /&gt;&lt;br /&gt;Esto se puede solucionar muy facil con AJAX, enviando una peticion a la base de datos de usuarios para que compruebe si el que ingresamos existe o no&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;La magia del codigo nuevamente la hace AJAX, aqui el codigo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;PAGINA ajax.asp:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&amp;lt;HEAD&amp;gt;&lt;br /&gt; &amp;lt;TITLE&amp;gt;ASP and AJAX username availability check&amp;lt;/TITLE&amp;gt;&lt;br /&gt; &amp;lt;script language=”javascript”&amp;gt;&lt;br /&gt; function OnChangedUsername()&lt;br /&gt; {&lt;br /&gt;  if(document.form1.newuserid.value == “”)&lt;br /&gt;   {&lt;br /&gt;    document.form1.btnCheckAvailability.disabled = true;&lt;br /&gt;   }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   document.form1.btnCheckAvailability.disabled = false;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function createRequestObject() {&lt;br /&gt;  var ro;&lt;br /&gt;  var browser = navigator.appName;&lt;br /&gt;  if(browser == “Microsoft Internet Explorer”){&lt;br /&gt;   ro = new ActiveXObject(”Microsoft.XMLHTTP”);&lt;br /&gt;  }else{&lt;br /&gt;   ro = new XMLHttpRequest();&lt;br /&gt;  }&lt;br /&gt;  return ro;&lt;br /&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; var http = createRequestObject();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; function sndReq() {&lt;br /&gt;  http.open(’get’, ‘ajax_username.asp?username=’+document.form1.newuserid.value);&lt;br /&gt;  http.onreadystatechange = handleResponse;&lt;br /&gt;  http.send(null);&lt;br /&gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; function handleResponse() {&lt;br /&gt;  if(http.readyState == 4){&lt;br /&gt;   var response = http.responseText;&lt;br /&gt;   var update = new Array();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;   if(response.indexOf(’|’ != -1)) {&lt;br /&gt;    update = response.split(’|');&lt;br /&gt;    document.getElementById(”username_chk”).innerHTML = update[0];&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/HEAD&amp;gt;&lt;br /&gt;&amp;lt;BODY&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;form method=”post” action=”javascript:void(0);” name=”form1″&amp;gt;&lt;br /&gt; &amp;lt;table&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;&amp;lt;input type=”newuserid” name=”newuserid” id=”newuserid” size=”20″ onKeyUp=”OnChangedUsername();” /&amp;gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&amp;lt;input id=”btnCheckAvailability” type=”button”disabled=”disabled” value=”Check Availability”onClick=”sndReq();”&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;&amp;lt;div ID=”username_chk”&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;   &amp;lt;td&amp;gt;Brought to you by &amp;lt;a href=”http://strangework.com” target=”_blank”&amp;gt;Brad Williams&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt; &amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/BODY&amp;gt;&lt;br /&gt;&amp;lt;/HTML&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;strong&gt;PAGINA ajax_username.asp:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;%&lt;br /&gt;Set username = Request.QueryString(”username”)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;‘*** INICIAR TU CONEXION DNS-LESS&lt;br /&gt;db_username = “username”  ‘DB username&lt;br /&gt;db_password = “password”  ‘DB password&lt;br /&gt;db_catalog = “database_name”  ‘DB name&lt;br /&gt;dp_datasource = “192.168.1.1″  ‘DB IP&lt;br /&gt;‘*** TERMINA TU CONEXION DNS-LESS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;'PUEDES CAMBIAR LO DE ARRIBA POR TUS PROPIAS LINEAS DE CONEXION&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Set conn = Server.CreateObject(”ADODB.Connection”)&lt;br /&gt;conn.CommandTimeout = 0&lt;br /&gt;c=”Provider=SQLOLEDB.1;User ID=” &amp;amp; db_username &amp;amp; “;password=”&amp;amp; db_password &amp;amp; “;Initial Catalog=” &amp;amp; db_catalog &amp;amp;“;Data Source=” &amp;amp; dp_datasource &amp;amp; “;Use Procedure forPrepare=1;Auto Translate=True;Packet Size=4096″&lt;br /&gt;conn.Open c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;‘*** AJUSTA ESTE SELECT PARA QUE COMPRUEBE CON LOS NOMBRES REALES DE TU TABLA&lt;br /&gt;SQL = “SELECT username FROM table WHERE username=’” &amp;amp; username &amp;amp; “‘ ”&lt;br /&gt;Set chk_username = Server.CreateObject(”ADODB.Recordset”)&lt;br /&gt;chk_username.Open SQL, conn, 3, 3&lt;br /&gt;If chk_username.EOF = False then&lt;br /&gt; response.write “USUARIO NO DISPONIBLE”&lt;br /&gt;Else&lt;br /&gt; response.write “USUARIO DISPONIBLE”&lt;br /&gt;End if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;chk_username.close&lt;br /&gt;set chk_username = nothing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;conn.close&lt;br /&gt;set conn = nothing&lt;br /&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-1871186187804254259?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/1871186187804254259/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=1871186187804254259' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/1871186187804254259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/1871186187804254259'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2009/11/comprobar-usuario-disponible-con-asp-y.html' title='Comprobar usuario disponible con ASP y AJAX'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-2084993060800485445</id><published>2009-11-08T21:26:00.000-06:00</published><updated>2009-11-08T21:26:23.201-06:00</updated><title type='text'>Modificar nuestro estado en Twitter usando ASP</title><content type='html'>Bueno, a veces queremos hacer aplicaciones en las que requerimos de utilizar servicios de otros sitios, en este caso pondre un ejemplo de como actualizar nuestro estado en Twitter utilizando su API y ASP&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;El codigo es corto y sencillo de entender:&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;Response.Buffer = True&lt;br /&gt; Dim xml&lt;br /&gt; Set xml = Server.CreateObject("Microsoft.XMLHTTP") &lt;br /&gt;&lt;br /&gt;twitter_username = "username" ‘CAMBIAR POR TU USUARIO EN TWITTER&lt;br /&gt; twitter_password = "password" ‘CAMBIAR POR TU CLAVE EN TWITTER&lt;br /&gt;&lt;br /&gt;new_status = "visita blog.creandowebs.com!" ‘CAMBIA POR EL NUEVO STATUS&lt;br /&gt;&lt;br /&gt;xml.Open "POST", "http://" &amp;amp; twitter_username &amp;amp; ":" &amp;amp; twitter_password &amp;amp; "@twitter.com/statuses/update.xml?status=" &amp;amp; server.URLencode(new_status), False&lt;br /&gt; xml.setRequestHeader "Content-Type", "content=text/html; charset=iso-8859-1"&lt;br /&gt; xml.Send &lt;br /&gt;&lt;br /&gt;Response.Write xml.responseText ‘VER LA RESPUESTA DE TWITTER&lt;br /&gt;&lt;br /&gt;Set xml = Nothing&lt;br /&gt;%&amp;gt; &lt;br /&gt;&lt;br /&gt;Como vez es sencillo, puedes implementarlo utilizando un FORM para enviarle la informacion al archivo con el codigo anterior&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-2084993060800485445?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/2084993060800485445/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=2084993060800485445' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/2084993060800485445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/2084993060800485445'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2009/11/modificar-nuestro-estado-en-twitter.html' title='Modificar nuestro estado en Twitter usando ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-6940653873637039782</id><published>2009-10-31T11:52:00.000-06:00</published><updated>2009-10-31T11:52:30.977-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>Generar RSS usando ASP y una BD</title><content type='html'>Muchos hemos necesitado o deseado crear archivos RSS con el contenido de nuestros sitios, la verdad es mas facil de lo que pareciera, claro, despues de leer e investigar me di cuenta de ello, aqui pretendo compartir el como&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Primero creamos el archivo RSS que puede incluso tener la extension ASP, por ejemplo rss.asp y pegamos algo asi:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;!--#include file="conexion.inc" --&amp;gt; &amp;lt;%' ARCHIVO CON LA CONEXION A LA BD%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;'DSN-Less database connection&lt;br /&gt;Query="SELECT * from &lt;b&gt;tabla&lt;/b&gt; ORDER by &lt;b&gt;ID&lt;/b&gt; desc" &amp;nbsp; 'CREAMOS EL QUERY&lt;br /&gt;RS.Open Query, conexion,1,1 &amp;nbsp;&amp;nbsp; 'ABRIMOS EL QUERY&lt;br /&gt;&lt;br /&gt;'XML OUTPUT&lt;br /&gt;'AQUI CREAMOS LA SALIDA XML NECESARIA DANDOLE EL FORMATO Y ENCABEZADO&lt;br /&gt;&lt;br /&gt;Dim fldF&lt;br /&gt;Response.ContentType = "text/xml"&lt;br /&gt;Response.Write "&amp;lt;?xml version=""1.0"" encoding=""iso-8859-1"" ?&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;rss version=""2.0"" xmlns:dc=""http://purl.org/dc/elements/1.1/"" xmlns:content=""http://purl.org/rss/1.0/modules/content/""&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;channel&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;title&amp;gt;TITULO&amp;lt;/title&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;link&amp;gt;http://www.TUWEB.com&amp;lt;/link&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;description&amp;gt;DESCRIPCION&amp;lt;/description&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;REsponse.Write "&amp;lt;language&amp;gt;es&amp;lt;/language&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;&lt;br /&gt;&lt;rss 1.0="" 1.1="" 2.0="" content="" dc="" elements="" http:="" modules="" purl.org="" rss="" version="" xmlns:content="" xmlns:dc=""&gt;&lt;channel&gt;&lt;br /&gt;'A loop to collect all the articles&lt;br /&gt;do while not RS.EOF and cuenta&amp;amp;lt;10 'LIMITO A 10 EL DESPLIEGUE, SI USAR MYSQL PUEDES HACERLO DESDE EL QUERY CON LIMIT&lt;br /&gt;&lt;br /&gt;'REALIZO UNOS REPLACES PARA BORRAR CONTENIDO DEL CAMPO &lt;br /&gt;&lt;/channel&gt;&lt;/rss&gt;&lt;br /&gt;comentario=replace(comentario,"á","&amp;amp;aacute;")&lt;br /&gt;comentario=replace(comentario,"é","&amp;amp;eacute;")&lt;br /&gt;comentario=replace(comentario,"í","&amp;amp;iacute;")&lt;br /&gt;comentario=replace(comentario,"ó","&amp;amp;oacute;")&lt;br /&gt;comentario=replace(comentario,"ú","&amp;amp;uacute;")&lt;br /&gt;&lt;br /&gt;cuenta=cuenta+1&lt;br /&gt;&lt;br /&gt;Response.Write "&amp;lt;item&amp;gt;" &amp;amp; vbCrlf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;Response.Write "&amp;lt;title&amp;gt;" &amp;amp; RS("title") &amp;amp; "&amp;lt;/title&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;link&amp;gt;http://www.TUWEB.com/articulos.asp?id="&amp;amp;rs("id")&amp;amp;"&amp;lt;/link&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;description&amp;gt;"&amp;nbsp; &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;![CDATA[" &amp;amp; vbCrlf&lt;br /&gt;Response.Write comentario &amp;amp; "]]&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;/description&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;guid isPermaLink=""true""&amp;gt;http://www.TUWEB.com/articulos.asp?id="&amp;amp;rs("id")&amp;amp;"&amp;lt;/guid&amp;gt;" &amp;amp; vbCrlf&lt;br /&gt;Response.Write "&amp;lt;/item&amp;gt;" &amp;amp; vbCrlf&amp;nbsp; &lt;br /&gt;&lt;br /&gt;RS.MoveNext&lt;br /&gt;Loop&lt;br /&gt;Response.Write "&amp;lt;/channel&amp;gt;" &amp;amp; vbCrlf &lt;br /&gt;Response.Write "&amp;lt;/rss&amp;gt;" &amp;amp; vbCrlf &lt;br /&gt;&amp;nbsp; &lt;br /&gt;RS.Close&lt;br /&gt;set RS = nothing&lt;br /&gt;%&amp;gt;&lt;br /&gt;Y listo, ese es el archivo ASP que debemos crear, no se si necesite mas explicaciones, si es asi, espero sus comentarios.&lt;br /&gt;&lt;br /&gt;El anterior es una pequeña modificacion del original en &lt;a href="http://www.cristovivo.com/rss.asp"&gt;http://www.cristovivo.com/rss.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-6940653873637039782?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/6940653873637039782/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=6940653873637039782' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/6940653873637039782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/6940653873637039782'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2009/10/generar-rss-usando-asp-y-una-bd.html' title='Generar RSS usando ASP y una BD'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-1821788472072757646</id><published>2009-10-16T12:12:00.012-05:00</published><updated>2012-01-05T11:26:40.482-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archivo'/><category scheme='http://www.blogger.com/atom/ns#' term='xelupload'/><category scheme='http://www.blogger.com/atom/ns#' term='subir'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>Subir archivos sin componentes en ASP con Xelupload</title><content type='html'>Quieres subir ficheros al servidor mediante un formulario, con uno o varios campos de tipo FILE, pero no puedes utilizar ASPUpload, no quieres pagarlo o no puedes registrar componentes. Aquí tienes una completa solución de upload de ficheros, escrita 100% en ASP y VBScript.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Introducción&lt;/h3&gt;Subir ficheros al servidor mediante un formulario es una opción que nos brinda HTML muy poderosa, en&lt;br /&gt;cuanto que nos permite crear aplicaciones web más completas: podemos hacer nuestro propio sistema&lt;br /&gt;de FTP casero, vía web, podemos dejar a nuestros colaboradores que suban sus imágenes, etc. todo&lt;br /&gt;a través de una página web.&lt;br /&gt;Lamentablemente, ASP no nos proporciona un mecanismo automático para procesar este tipo de envíos. Por esto,&lt;br /&gt;se hace necesario extender el entorno ASP, bien con productos comerciales como ASPUpload y SA-FileUp, o bien&lt;br /&gt;escribiendo nuestro propio programa.&lt;br /&gt;El problema de utilizar componentes, ya sean propios o comprados (o pirateados... ¿quién ha dicho eso?) es&lt;br /&gt;que en muchos planes de alojamiento no nos es posible registrar estos componentes. En estos casos, la única&lt;br /&gt;solución es programarlo mediante puro código ASP, y eso es lo que he hecho.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Requerimientos&lt;/h3&gt;&lt;b&gt;xelUpload&lt;/b&gt; es el nombre de una clase de VBScript que presenta propiedades y métodos para manejar&lt;br /&gt;el envío de ficheros al servidor. Su único requerimiento es disponer de la versión 5 o superior del motor de script. Para ver&lt;br /&gt;qué versión tienes disponible, puedes escribir:&lt;br /&gt;&lt;code&gt;Response.Write ScriptEngineMajorVersion&lt;/code&gt;&lt;br /&gt;Si ves un 5, todo es correcto. Si no, puedes descargar gratis la última versión desde &lt;a href="http://www.microsoft.com/scripting"&gt;el sitio de Microsoft sobre script&lt;/a&gt;, o instalar Internet Explorer 5 o&lt;br /&gt;superior, que la incluye entre sus ficheros.&lt;br /&gt;Por si no lo sabíais, para que el fichero llegue correctamente al servidor, tenemos que añadir un atributo más a la marca &lt;code&gt;FORM&lt;/code&gt;, el que especifica la codificación del formulario al enviarlo, y nos permite subir datos binarios, así:&lt;br /&gt;&lt;code&gt;&amp;lt;form action="pagina.asp" method="post" &lt;b&gt;enctype="multipart/form-data"&lt;/b&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;h3&gt;Cómo se usa&lt;/h3&gt;¿Cómo funciona &lt;b&gt;xelUpload&lt;/b&gt;? Lo primero que tenemos que hacer es incluir el fichero, mediante:&lt;br /&gt;&lt;code&gt;&amp;lt;!--#include file="xelupload.asp"--&amp;gt;&lt;/code&gt;&lt;br /&gt;si está el mismo directorio o&lt;br /&gt;&lt;code&gt;&amp;lt;!--#include virtual="/includes/xelupload.asp"--&amp;gt;&lt;/code&gt;&lt;br /&gt;si está en otra ruta virtual, en este caso, en &lt;code&gt;/includes/&lt;/code&gt;.&lt;br /&gt;Después, debemos crear una instancia del objeto, y llamar al método &lt;code&gt;Upload&lt;/code&gt; para comenzar&lt;br /&gt;el proceso en la página que recibe el formulario.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;%Dim objUploadobjUpload.Upload()%&amp;gt;&lt;/code&gt;&lt;/pre&gt;El objeto &lt;b&gt;xelUpload&lt;/b&gt;, una vez llamado su método &lt;b&gt;Upload&lt;/b&gt;, guardará los ficheros enviados con el formulario en la colección &lt;b&gt;Ficheros&lt;/b&gt;, y los campos de texto normales en la colección &lt;b&gt;eltosForm&lt;/b&gt;. La primera contiene objetos de tipo &lt;b&gt;Fichero&lt;/b&gt;, que es otra clase que también incluyo, y a los elementos de la segunda se&lt;br /&gt;puede acceder con &lt;code&gt;objUpload.Form("campo")&lt;/code&gt;, que es bastante familiar. ;-)&lt;br /&gt;Para saber el número de ficheros subidos correctamente, podemos utilizar:&lt;br /&gt;&lt;code&gt;Response.Write objUpload.Ficheros.Count &amp;amp; " ficheros subidos."&lt;/code&gt;&lt;br /&gt;Para acceder a las propiedades y métodos de cada &lt;code&gt;Fichero&lt;/code&gt; subido, podemos recorrer la colección, o bien acceder directamente a uno, con el nombre del campo INPUT que tuviera el formulario:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Dim objUpload, objFicheroobjUpload.Upload()'si teníamos &amp;lt;input type="file" name="imagen"&amp;gt;set objFichero = objUpload.Ficheros("imagen")'recorremos todos:for each objFichero in objUpload.Ficheros.Items...next&lt;/code&gt;&lt;/pre&gt;NOTA: El fichero ZIP con el código, documentación y un ejemplo está disponible al final del artículo.&lt;br /&gt;&lt;h3&gt;Propiedades y métodos&lt;/h3&gt;Para ver en detalle qué podemos hacer con los ficheros una vez subidos, veamos qué nos ofrece la clase &lt;b&gt;xelUpload&lt;/b&gt; y la clase &lt;b&gt;Fichero&lt;/b&gt;, respectivamente:&lt;br /&gt;&lt;table bgcolor="#999999" border="0" cellpadding="4" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;&lt;b&gt;xelUpload&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;Propiedades&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Form(nombrecontrol)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Devuelve el campo del formulario de nombre "nombrecontrol". Equivale completamente a &lt;code&gt;Request.Form(nombrecontrol)&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;Métodos&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Upload&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Realiza el proceso de recepción del formulario y&lt;br /&gt;almacena los resultados. Es &lt;b&gt;imprescindible&lt;/b&gt;&lt;br /&gt;llamar a este método antes de acceder a  las&lt;br /&gt;demás propiedades o colecciones del objeto&lt;br /&gt;xelUpload.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;Colecciones&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Ficheros&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Contiene una colección de objetos &lt;code&gt;Fichero&lt;/code&gt;, uno por cada fichero enviado correctamente desde el formulario.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;&lt;b&gt;Fichero&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;Propiedades&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Nombre&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Devuelve el nombre original del fichero, &lt;b&gt;sin&lt;/b&gt; la ruta en el disco del usuario. Por ejemplo, &lt;b&gt;mickeymouse.gif&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Tamano&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Devuelve el tamaño en bytes del fichero.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;TipoContenido&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Devuelve el tipo de contenido del fichero en una cadena, si es reconocido por el servidor, o bien "application/octet-stream". Por ejemplo, para la imagen anterior, devolvería &lt;b&gt;"image/gif"&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Datos&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Devuelve los datos binarios puros del fichero.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td colspan="2"&gt;Métodos&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;Guardar &lt;i&gt;ruta&lt;/i&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Salva el fichero en disco en el servidor, con el nombre original, en la ruta pasada como argumento. Debe ser una ruta física, no virtual, así que probablemente utilizaremos &lt;code&gt;Server.MapPath&lt;/code&gt;, así:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;objFichero.Guardar (Server.MapPath("\upload"))&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;GuardarComo &lt;i&gt;nombre, ruta&lt;/i&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Salva el fichero en disco, con el nombre especificado, en la ruta especificada. El nombre debe ser un nombre de fichero válido y la ruta, una ruta física.&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td&gt;&lt;code&gt;GuardarBD &lt;i&gt;objFld&lt;/i&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Guarda el contenido del fichero en el objeto &lt;code&gt;Field&lt;/code&gt; de ADO pasado como argumento. Más abajo os explico cómo hacer esto.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Como ves, la interfaz es bastante flexible. Como siempre, todo esto se ve mejor con un ejemplo, así que vamos a ello.&lt;br /&gt;Supongamos que enviamos un formulario como este:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;form action="pagina.asp" method="post" enctype="multipart/form-data"&amp;gt;Nombre: &amp;lt;input type="text" name="usuario" size="20"&amp;gt;&amp;lt;br&amp;gt;Edad: &amp;lt;input type="text" name="edad" size="5"&amp;gt;&amp;lt;br&amp;gt;&amp;lt;input type="file" name="imagen"&amp;gt;&amp;lt;br&amp;gt;&amp;lt;input type="submit" value="Enviar"&amp;gt;&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;En la página que lo recibe y que hemos especificado en el atributo ACTION, &lt;b&gt;pagina.asp&lt;/b&gt;, utilizamos nuestro superpoderoso y versátil &lt;b&gt;xelUpload&lt;/b&gt; (se nota que estoy contento, ¿eh?) para ver el tipo de fichero que nos envía y su tamaño. Si es una imagen GIF y no supera los 15k (15*1024 bytes), la guardamos en dos directorios distintos (vale, esto no será muy normal, pero tengo que ilustrar los métodos) y en una base de datos, en una hipotética tabla &lt;b&gt;usuarios&lt;/b&gt; que guarda (¿puedes imaginarlo?) el nombre, la edad, y una imagen GIF (supuestamente del usuario, aunque en GIF y menos de 15k... ¡ejem!).&lt;br /&gt;No vamos a guardar sólo el nombre del fichero: vamos a guardar la imagen completa en una base de datos Access.&lt;br /&gt;&lt;br /&gt;Este es el código de nuestra página que recibe el formulario&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;%'pagina.asp%&amp;gt;&amp;lt;!--#include file="xelupload.asp"--&amp;gt;&amp;lt;%Dim oConn, rs, SQLDim objUpload, objFich, strNombre, strEdadDim maxtam, strNombreFichero'nuestro tamaño máximomaxtam = 15 * 1024set objUpload = new xelUploadobjUpload.Upload()'recuperamos los campos usuario y edadstrNombre = objUpload.Form("usuario")strEdad = objUpload.Form("edad")'si no ha subido ningún fichero, le avisamosif objUpload.Ficheros.Count = 0 thenResponse.Write("¡No has subido ningún fichero!")else'accedemos al fichero por su nombre en el formularioset objFich = objUpload.Ficheros("imagen")if objFich.Tamano &amp;lt;= maxtam and objFich.TipoContenido = "image/gif" then'Es el fichero correcto, vamos a guardarlo en todas partes. :-)'Primero, en nuestro directorio actual con el nombre que tieneobjFich.Guardar Server.MapPath(".")'Ahora, en el directorio upload, con la fecha de hoy como nombrestrNombreFichero = Day(Date) &amp;amp; Month(Date) &amp;amp; Year(Date)objFich.GuardarComo strNombreFichero, Server.MapPath("upload")'Ahora nos conectamos a una base de datosset oConn = Server.CreateObject("ADODB.Connection")set rs = Server.CreateObject("ADODB.Recordset")'Nos conectamos con ODBC sin DSN, suponiendo que la base'de datos está en este mismo directoriooConn.Open "Driver={Microsoft Access Driver (*.mdb)};" _&amp;amp; "DBQ=" &amp;amp; Server.MapPath("usuarios.mdb")SQL = "SELECT * FROM usuarios"'Abrimos el Recordset: el 0 es el cursor adForwardOnly' y el 2 es el cerrojo adLockPessimisticrs.Open SQL, oConn, 0, 2'Añadimos un nuevo registrors.AddNewrs.Fields("Nombre") = strNombrers.Fields("Edad") = strEdadrs.Fields("NombreFichero") = objFich.Nombre'Llamamos a GuardarBD pasandole el campo correspondiente!!!objFich.GuardarBD rs.Fields("Imagen")'Guardamos el nuevo registrors.Update'y limpiamos todo que vienen los padresrs.Closeset rs = nothingoConn.Closeset oConn = nothing'¡Todo correcto!Response.Write "Se ha añadido el nuevo usuario &amp;lt;b&amp;gt;" &amp;amp; strNombre &amp;amp; "&amp;lt;/b&amp;gt;, "  _&amp;amp; "con el fichero " &amp;amp; objFich.Nombre &amp;amp; " de tamaño " &amp;amp; objFich.Tamano &amp;amp; "."'Limpiamos nuestro xelUpload y el ficheroset oFich = nothingset objUpload = nothingelse'No era un fichero válidoResponse.Write("No es un fichero aceptable. ")Response.Write("Tiene que ser un fichero GIF de menos de 15k.")end ifend if%&amp;gt;&lt;/code&gt;&lt;/pre&gt;En este código véis todas las posibilidades que ofrece &lt;b&gt;xelUpload&lt;/b&gt;. La tabla &lt;b&gt;usuarios&lt;/b&gt; que utilizamos tiene esta estructura:&lt;br /&gt;&lt;table align="center" bgcolor="#999999" border="0" cellpadding="3" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;&lt;b&gt;Nombre del campo&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Tipo de datos&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;ID_Usuario&lt;/td&gt;&lt;td&gt;Autonumérico&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;Nombre&lt;/td&gt;&lt;td&gt;Texto&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;Edad&lt;/td&gt;&lt;td&gt;Texto&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;NombreFichero&lt;/td&gt;&lt;td&gt;Texto&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;Imagen&lt;/td&gt;&lt;td&gt;Objeto OLE&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Como véis, &lt;b&gt;Objeto OLE&lt;/b&gt; es el tipo que acepta datos binarios en Access. En SQL Server el equivalente es &lt;b&gt;image&lt;/b&gt;, que es de tipo binario y acepta más de 8.000 bytes, o &lt;b&gt;binary&lt;/b&gt; si guardamos menos de 8.000 bytes.&lt;br /&gt;&lt;h3&gt;Observaciones, notas, etc&lt;/h3&gt;Hay una restricción importante del objeto Request, que hace imprescindible incluir el manejo de los campos normales de un formulario dentro del programa que maneje los ficheros subidos: que después de utilizar &lt;code&gt;Request.BinaryRead&lt;/code&gt; no se puede utilizar &lt;code&gt;Request.Form&lt;/code&gt; y viceversa. Así que tenéis que utilizar la propiedad &lt;code&gt;Form&lt;/code&gt; de vuestro objeto &lt;b&gt;xelUpload&lt;/b&gt; para leer los campos habituales de un formulario.&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://www.aspfacil.com/"&gt;AspFacil&lt;/a&gt;&lt;br /&gt;Archivo: &lt;a href="http://www.creandowebs.com/archivos/xelupload.zip" target="_blank"&gt;Xelupload&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.creandowebs.com/archivos/xelupload.zip"&gt;xelupload.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-1821788472072757646?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://www.creandowebs.com/archivos/xelupload.zip' length='0'/><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/1821788472072757646/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=1821788472072757646' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/1821788472072757646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/1821788472072757646'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2009/10/subir-archivos-sin-componentes-en-asp.html' title='Subir archivos sin componentes en ASP con Xelupload'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-3031422477730836989</id><published>2009-02-06T21:25:00.008-06:00</published><updated>2009-10-30T21:56:53.811-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>Un poco de AJAX con ASP</title><content type='html'>Bueno, muchas veces tenemos paginas muy bonitas o con buenos sistemas pero con diseño a la antiguita, es decir, con programacion que hace que cada que se carga un enlace nuevo tenemos que recargar toda la pagina, AJAX nos permite hacer cargas de partes de codigo sin tener que recargar la pagina completa y las demoras y molestias que esto genera.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aqui les mostrare de manera muy basica pero funcional como usar esta tecnologia en nuestras paginas, ya dependera de la creatividad de cada quien el uso que le den.&lt;br /&gt;&lt;br /&gt;Para implementar esto debemos identificar 3 cosas, un archivo .JS que llama a AJAX, segundo un boton, enlace, formulario o parte que pudiera llamar una funcion Javascript, y tercero, un DIV donde se desplegara el resultado, ahora explico cada una.&lt;br /&gt;&lt;br /&gt;Primero y antes que nada necesitamos el archivo .JS el cual les pongo aqui &lt;a href="http://blog.creandowebs.com/ajax_loader.js" style="font-weight: bold;" target="_blank"&gt;ajax_loader.js&lt;/a&gt; para su descarga, el cual llamaremos en nuestra pagina asi:&lt;br /&gt;&lt;code&gt;&amp;lt;script src="ajax_loader.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Esto dentro de las etiquetas &lt;code&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Despues necesitaremos el metodo que llame a la funcion que realizara la magia del asunto, en este caso pondre un SELECT con un codigo algo asi:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;select name="prueba"  onchange="htmlData('&lt;span style="font-weight: bold;"&gt;ajax.asp&lt;/span&gt;', '&lt;span style="font-weight: bold;"&gt;resultado&lt;/span&gt;', '&lt;span style="font-weight: bold;"&gt;envia='+this.value&lt;/span&gt;)"&amp;gt;&lt;br /&gt;&amp;lt;option value="1"&amp;gt;OPCION 1&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value="2"&amp;gt;OPCION 2&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value="3"&amp;gt;OPCION 3&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="&lt;span style="font-weight: bold;"&gt;resultado&lt;/span&gt;"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Donde lo que esta en negritas es lo que hay que cambiar segun sea el caso:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ajax.asp&lt;/span&gt;: es el archivo que procesara la informacion a publicar&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;resultado&lt;/span&gt;: es el nombre del DIV donde se mostrara el resultado&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;envia='+this.value&lt;/span&gt;: es donde podremos poner informacion que se enviara mediante el metodo GET como el que se usa en los formularios, podria ser diferente, hay que contemplar que es la informacion que recibira el archivo y que se usara para la informacion que se procese, otro ejemplo podria ser algo asi a=1&amp;amp;b=2&amp;amp;c=3, en el ejemplo de arriba se toma el valor del SELECT usando algo de JAVASCRIPT.&lt;br /&gt;&lt;br /&gt;Resumiendo:&lt;br /&gt;- Hay que generar e incrustar el archivo .JS &lt;span style="font-weight: bold;"&gt;ajax_loader.js&lt;/span&gt;&lt;br /&gt;- Agregar el codigo que llame a la funcion &lt;span style="font-weight: bold;"&gt;htmlData()&lt;/span&gt; dentro de algun sistema que lo permita&lt;br /&gt;- Generar el archivo ASP que procesara la informacion que se envie en la funcion anterior, en el ejemplo es &lt;span style="font-weight: bold;"&gt;ajax.asp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.creandowebs.com/ejemplo_ajax.asp" style="font-weight: bold;" target="_blank"&gt;Se puede ver un ejemplo aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En el ejemplo de la pagina se usaron los siguientes codigos:&lt;br /&gt;PAGINA &lt;span style="font-weight: bold;"&gt;ejemplo_ajax.asp&lt;/span&gt; (Contenedora del script y del SELECT)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Ejemplo de AJAX&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;script src="ajax_loader.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form action="javascript:void%200"&amp;gt;&lt;br /&gt; &amp;lt;select name="prueba" onchange="htmlData('ajax.asp', 'resultado', 'muestra=HOLA&amp;amp;prueba='+this.value)"&amp;gt;&lt;br /&gt; &amp;lt;option value=""&amp;gt;SELECCIONA UNA OPCION&amp;lt;/option&amp;gt;&lt;br /&gt; &amp;lt;option value="1"&amp;gt;OPCION 1&amp;lt;/option&amp;gt;&lt;br /&gt; &amp;lt;option value="2"&amp;gt;OPCION 2&amp;lt;/option&amp;gt;&lt;br /&gt; &amp;lt;option value="3"&amp;gt;OPCION 3&amp;lt;/option&amp;gt;&lt;br /&gt; &amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="resultado"&amp;gt;TEXTO ORIGINAL&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;lt;%=now()%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;PAGINA &lt;span style="font-weight: bold;"&gt;ajax.asp&lt;/span&gt; (La que procesa la info a publicar)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;%Response.CharSet = "ISO-8859-1"&lt;br /&gt;Response.addHeader "pragma", "no-cache"&lt;br /&gt;Response.CacheControl = "Private"&lt;br /&gt;Response.Expires = 0&lt;br /&gt;&lt;br /&gt;muestra=request.QueryString("muestra")&lt;br /&gt;prueba=request.QueryString("prueba")&lt;br /&gt;&lt;br /&gt;if prueba="" then&lt;br /&gt;response.write "NO HAS SELECCIONADO NADA"&lt;br /&gt;else&lt;br /&gt;response.write "MUESTRA:" &amp;amp; muestra &amp;amp; "&amp;lt;br&amp;gt;"&lt;br /&gt;response.write "OPCION SELECCIONADA:" &amp;amp; prueba &amp;amp; "&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;"&lt;br /&gt;response.write now()&lt;br /&gt;end if&lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Realmente es algo que me esta moviendo mucho el usar esta tecnologia por la agilidad que le da a nuestros sistemas, espero que la explicacion haya sigo clara y puedas probarlo.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-3031422477730836989?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://blog.creandowebs.com/ajax_loader.js' length='0'/><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/3031422477730836989/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=3031422477730836989' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/3031422477730836989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/3031422477730836989'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2009/02/un-poco-de-ajax-con-asp.html' title='Un poco de AJAX con ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-8193215194205144089</id><published>2008-10-22T22:01:00.003-05:00</published><updated>2009-10-30T21:23:04.267-06:00</updated><title type='text'>Saber cotizacion del Dolar-Peso MX con ASP</title><content type='html'>Existiran algunas veces en las que necesites saber el precio actual del dolar en pesos, para esto puedes usar informacion de algunos bancos, en este caso utilizo la de HSBC, una vez obtenida la info pues podras hacer con ella cuentas o lo que quieras con ella.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El sistema funciona con el siguiente codigo:&lt;br /&gt;&lt;pre style="margin-left: 10px;"&gt;&lt;br /&gt; Response.Buffer = True&lt;br /&gt; Set xml = Server.CreateObject("Microsoft.XMLHTTP")&lt;br /&gt; xml.Open "GET", "http://dsrefa01.hsbc.com.mx/aptrix/InternetPub.nsf/Content/TasasSplash", False&lt;br /&gt; xml.Send&lt;br /&gt;    Cadena = CSTR(xml.responseText)&lt;br /&gt;    PosIni1 = InStr(Cadena,"DOLAR AMERICANO")&lt;br /&gt;    PosIni2 = InStr(PosIni1,Cadena,"$")&lt;br /&gt;    PosFin  = InStr(PosIni2, Cadena,"&amp;lt;")    DolarCompra = MID(Cadena, PosIni2, PosFin-PosIni2)      PosIni1 = PosFin      PosIni2 = InStr(PosIni1,Cadena,"$")      PosFin  = InStr(PosIni2, Cadena,"&amp;lt;")    DolarVenta = MID(Cadena, PosIni2, PosFin-PosIni2)  Set xml = Nothing &lt;/pre&gt;&lt;br /&gt;El resultado quedara en las variables &lt;span style="font-weight: bold;"&gt;DolarCompra&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;DolarVenta&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero te sirva de algo&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-8193215194205144089?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/8193215194205144089/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=8193215194205144089' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/8193215194205144089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/8193215194205144089'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2008/10/saber-cotizacion-del-dolar-peso-mx-con.html' title='Saber cotizacion del Dolar-Peso MX con ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-3748128733673081571</id><published>2008-10-22T21:44:00.011-05:00</published><updated>2009-10-30T21:23:27.607-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dominios'/><category scheme='http://www.blogger.com/atom/ns#' term='whois'/><category scheme='http://www.blogger.com/atom/ns#' term='.mx'/><category scheme='http://www.blogger.com/atom/ns#' term='.com'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>Whois con ASP</title><content type='html'>Muchos me han preguntado como se puede hacer un Whois para sus paginas, he aqui uno, que utiliza datos de internic y de Nic Mexico.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este whois sirve para checar la disponibilidad de los dominios.&lt;br /&gt;&lt;pre style="margin-left: 10px; width: 350px;"&gt;&lt;br /&gt;'Poner tiempo de espera a 90min&lt;br /&gt;Server.ScriptTimeout = 90&lt;br /&gt;&lt;br /&gt;'Whois function to query the whois server&lt;br /&gt;Private Function whoisResult(whoisURL, strMethod, strResultsStart, strResultsEnd)&lt;br /&gt;&lt;br /&gt; 'Dimension variables&lt;br /&gt;Dim objXMLHTTP&lt;br /&gt; Dim strWhoisResultString&lt;br /&gt;&lt;br /&gt; Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")&lt;br /&gt;&lt;br /&gt;  objXMLHTTP.Open strMethod, whoisURL, False&lt;br /&gt; &lt;br /&gt;  objXMLHTTP.Send&lt;br /&gt;&lt;br /&gt;  strWhoisResultString = objXMLHTTP.ResponseText&lt;br /&gt;&lt;br /&gt;  If Len(strDomainName) &amp;lt; whoisresult = "No Valido - debe tener por lo menos 3 caracteres" whoisresult = "A ocurrido un error" whoisresult =" resultFormater(strWhoisResultString," objxmlhttp =" Nothing" lngresultsstartpos =" InStr(1," lngresultsendpos =" InStr(lngResultsStartPos," lngresultsstartpos ="&amp;lt;" lngresultsendpos =" lngResultsStartPos" resultformater =" Trim(Mid(strWhoisResultString," intloopcounter =" 0" strtextinput =" Replace(strTextInput," intloopcounter =" 46" strtextinput =" Replace(strTextInput," intloopcounter =" 58" strtextinput =" Replace(strTextInput," intloopcounter =" 123" strtextinput =" Replace(strTextInput," characterstrip =" strTextInput"&amp;gt; "" Then&lt;br /&gt;&lt;br /&gt; strDomainName = LCase(strDomainName)&lt;br /&gt;&lt;br /&gt; strDomainName = Replace(strDomainName, "http://", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, "www.", "", 1, -1, 1)&lt;br /&gt;&lt;br /&gt; strDomainName = Replace(strDomainName, ".com", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".net", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".org", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".info", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".biz", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".tv", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".name", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".co.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".org.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".ltd.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".plc.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".net.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".me.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".pn.uk", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".com.mx", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".net.mx", "", 1, -1, 1)&lt;br /&gt; strDomainName = Replace(strDomainName, ".org.mx", "", 1, -1, 1)&lt;br /&gt;&lt;br /&gt; If Left(strDomainName, 1) = "-" Then strDomainName = Mid(strDomainName, 2, Len(strDomainName))&lt;br /&gt; If Right(strDomainName, 1) = "-" Then strDomainName = Mid(strDomainName, 1, Len(strDomainName)-1)&lt;br /&gt;&lt;br /&gt; strDomainName = Replace(strDomainName, "--", "-", 1, -1, 1)&lt;br /&gt;&lt;br /&gt; strDomainName = characterStrip(strDomainName)&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;If strDomainName &amp;lt;&amp;gt; "" Then&lt;br /&gt; Response.Write("&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;")&lt;br /&gt;&lt;br /&gt;Response.Write("&lt;b&gt;Resultados de la busqueda de&lt;br /&gt;www." &amp;amp; strDomainName &amp;amp; strSuffix &amp;amp; "&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;")&lt;br /&gt;     &lt;br /&gt; If strSuffix = ".com" Then&lt;br /&gt; Response.Write(whoisResult("http://www-whois.internic.net/cgi/whois?whois_nic=" &amp;amp; strDomainName &amp;amp; ".com&amp;amp;type=domain", "GET", "&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;", "&lt;/pre&gt;"))  ElseIf strSuffix = ".net" Then Response.Write(whoisResult("http://www-whois.internic.net/cgi/whois?whois_nic=" &amp;amp; strDomainName &amp;amp; ".net&amp;amp;type=domain", "GET", "&lt;br /&gt;&lt;pre&gt;", "&lt;/pre&gt;")) ElseIf strSuffix = ".org" Then Response.Write(whoisResult("http://www-whois.internic.net/cgi/whois?whois_nic=" &amp;amp; strDomainName &amp;amp; ".org&amp;amp;type=domain", "GET", "&lt;br /&gt;&lt;pre&gt;", "&lt;/pre&gt;")) ElseIf strSuffix = ".biz" Then Response.Write(whoisResult("http://www-whois.internic.net/cgi/whois?whois_nic=" &amp;amp; strDomainName &amp;amp; ".biz&amp;amp;type=domain", "GET", "&lt;br /&gt;&lt;pre&gt;", "&lt;/pre&gt;")) ElseIf strSuffix = ".info" Then Response.Write(whoisResult("http://www-whois.internic.net/cgi/whois?whois_nic=" &amp;amp; strDomainName &amp;amp; ".info&amp;amp;type=domain", "GET", "&lt;br /&gt;&lt;pre&gt;", "&lt;/pre&gt;")) ElseIf strSuffix = ".com.mx" Then Response.Write(whoisResult("http://www.sitiosweb.com.mx/whois/example.php?domain=" &amp;amp; strDomainName &amp;amp; strSuffix &amp;amp; "&amp;amp;domain_type=1&amp;amp;template_type=&amp;amp;object_type_1=&amp;amp;object_type_2=&amp;amp;object_type_3=3&amp;amp;text=" &amp;amp; strDomainName &amp;amp; "&amp;amp;current_page=Busqueda.Who_Is_2", "GET", "Este dominio esta disponible")) ElseIf strSuffix = ".net.mx" Then Response.Write(whoisResult("http://www.sitiosweb.com.mx/whois/example.php?domain=" &amp;amp; strDomainName &amp;amp; strSuffix &amp;amp; "&amp;amp;domain_type=3&amp;amp;template_type=&amp;amp;object_type_1=&amp;amp;object_type_2=&amp;amp;object_type_3=3&amp;amp;text=" &amp;amp; strDomainName &amp;amp; "&amp;amp;current_page=Busqueda.Who_Is_2", "GET", "Este dominio esta disponible")) ElseIf strSuffix = ".org.mx" Then Response.Write(whoisResult("http://www.sitiosweb.com.mx/whois/example.php?domain=" &amp;amp; strDomainName &amp;amp; strSuffix &amp;amp; "&amp;amp;domain_type=5&amp;amp;template_type=&amp;amp;object_type_1=&amp;amp;object_type_2=&amp;amp;object_type_3=3&amp;amp;text=" &amp;amp; strDomainName &amp;amp; "&amp;amp;current_page=Busqueda.Who_Is_2", "GET", "Este dominio esta disponible"))End If Response.Write("&lt;br /&gt;&lt;/pre&gt;")End If&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Espero les sirva&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-3748128733673081571?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/3748128733673081571/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=3748128733673081571' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/3748128733673081571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/3748128733673081571'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2008/10/whois-con-asp.html' title='Whois con ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-4240700356937245180</id><published>2008-10-22T21:36:00.005-05:00</published><updated>2009-10-30T21:23:43.491-06:00</updated><title type='text'>Contar resultados en MySQL y ASP</title><content type='html'>Normalmente cuando comenzamos a programar en ASP comenzamos con tablas Access, las cuales son muy utiles hasta cierto punto, cuando ya has migrado a MySQL (Muy recomendable) algunas cosas cambian, como el hecho de mostrar los resultados de una consulta.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En Access usamos algo asi:&lt;br /&gt;&lt;pre style="margin-left: 10px;"&gt;SQL="Select * From TABLA"&lt;br /&gt;RS.Open SQL, oConn,1,1&lt;br /&gt;cuantos=RS.RecordCount&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pero en MySQL la cosa cambia, si usamos esa tecnica el resultado sera un horrible -1, para corregir esto hay que usar lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Simplemente agrega esto:&lt;br /&gt;&lt;pre style="margin-left: 10px;"&gt;RS.CursorLocation = 3&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Antes del RS.Open&lt;br /&gt;&lt;br /&gt;Y Walaa, espero te sirva.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-4240700356937245180?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/4240700356937245180/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=4240700356937245180' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/4240700356937245180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/4240700356937245180'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2008/10/contar-resultados-en-mysql-y-asp.html' title='Contar resultados en MySQL y ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-4019164792300774131</id><published>2008-09-29T11:25:00.005-05:00</published><updated>2009-10-30T21:24:06.429-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp funcion caracter ascii'/><title type='text'>Funcion para convertir entre ASCII y Caracteres en ASP</title><content type='html'>Esta funcion puede servir para por ejemplo cuando queremos hacer una validacion de usuarios respetanto mayusculas y minusculas (cosa que no hace ASP). Tenemos la opcion de convertir los caracteres por su valor en ASCII y viceversa, la funcion es:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Function StringToAscii(str)&lt;br /&gt; Dim result, x&lt;br /&gt; StringToAscii = ""&lt;br /&gt; If Len(str)=0 Then Exit Function&lt;br /&gt; If Len(str)=1 Then&lt;br /&gt;  result = Asc(Mid(str, 1, 1))&lt;br /&gt;  StringToAscii = Left("000", 3-Len(CStr(result))) &amp;amp; CStr(result)&lt;br /&gt;  Exit Function&lt;br /&gt; End If&lt;br /&gt; result = ""&lt;br /&gt; For x=1 To Len(str)&lt;br /&gt;  result = result &amp;amp; StringToAscii(Mid(str, x, 1))&lt;br /&gt; Next&lt;br /&gt; StringToAscii = result&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;Function AsciiToString(str)&lt;br /&gt; Dim result, x&lt;br /&gt; AsciiToString = ""&lt;br /&gt; If Len(str)&amp;lt;3 Then Exit Function&lt;br /&gt; If Len(str)=3 Then&lt;br /&gt;  AsciiToString = Chr(CInt(str))&lt;br /&gt;  Exit Function&lt;br /&gt; End If&lt;br /&gt; result = ""&lt;br /&gt; For x=1 To Len(str) Step 3&lt;br /&gt;  result = result &amp;amp; AsciiToString(Mid(str, x, 3))&lt;br /&gt; Next&lt;br /&gt; AsciiToString = result&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;'usage&lt;br /&gt;Dim myString, strASCII&lt;br /&gt;myString = "hello world"&lt;br /&gt;strASCII = StringToAscii(myString)&lt;br /&gt;Response.Write("original string: " &amp;amp; myString &amp;amp; "&lt;br /&gt;")&lt;br /&gt;Response.Write("ASCII: " &amp;amp; strASCII &amp;amp; "&lt;br /&gt;")&lt;br /&gt;Response.Write("back to string: " &amp;amp; AsciiToString(strASCII) &amp;amp; "&lt;br /&gt;")&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-4019164792300774131?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/4019164792300774131/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=4019164792300774131' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/4019164792300774131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/4019164792300774131'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2008/09/funcion-para-convertir-entre-ascii-y.html' title='Funcion para convertir entre ASCII y Caracteres en ASP'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-8730083026213969126</id><published>2008-06-07T20:33:00.004-05:00</published><updated>2009-10-30T21:24:19.594-06:00</updated><title type='text'>Tips para Firefox</title><content type='html'>Todos hemos adoptado a nuestro navegador (browser) favorito, el mio es Firefox por muchas razones que no son el tema de este post profundizar. Para los que como yo han adoptado a este navegador o lo usan eventualmente les paso unos tips de configuracion para que su uso sea todavia mejor. Para esto consideraremos la version en español de Firefox, si usas la version en ingles no creo que tengas problemas para encontrar las opciones.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Más espacio en pantalla.&lt;/span&gt;&lt;br /&gt;Si quieres tener mas espacio en tu pantalla de navegacion te recomiendo que reduzcas el tamaño de los iconos del mismo, para esto ve a Ver / Barras de herramientas / Personalizar / Usar iconos pequeños.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Atajos de teclado.&lt;/span&gt;&lt;br /&gt;Aqui te muestro algunos atajos del teclado para el navegador:&lt;br /&gt;    * Barra espaciadora (Avanzar en la pagina)&lt;br /&gt;    * Shift-Barra espaciadora (Subir en la pagina)&lt;br /&gt;    * Ctrl+F (Buscar)&lt;br /&gt;    * Alt-N (Buscar siguiente)&lt;br /&gt;    * Ctrl+D (Marcadores)&lt;br /&gt;    * Ctrl+T (Nueva pestaña)&lt;br /&gt;    * Ctrl+K (Ir a la caja de busqueda)&lt;br /&gt;    * Ctrl+L (Ir a la caja de direccion)&lt;br /&gt;    * Ctrl+= (incrementar tamaño de texto)&lt;br /&gt;    * Ctrl+- (reducir tamaño de texto)&lt;br /&gt;    * Ctrl-W (cerrar pestaña)&lt;br /&gt;    * F5 (recargar)&lt;br /&gt;    * Alt-Home (Ir a la pagina de inicio)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Auto-completar.&lt;/span&gt;&lt;br /&gt;Este es otro atajo del teclado muy interesante pero comunmente no utilizado, hay que irnos a la barra de direccion (Ctrl + L) y escribe un nombre como por ejemplo google y despues presiona Ctrl + Enter para agregar a lo escrito el www. y el .com. con lo que nos quedara completa la url (www.google.com).&lt;br /&gt;&lt;br /&gt;Para mas opciones de extensiones usa Shift + Enter para .net y para .org Shift + Ctrl + Enter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Navegar por las pestañas.&lt;/span&gt;&lt;br /&gt;Para movernos entre las pestañas usa las siguientes combinaciones:&lt;br /&gt;    * Ctrl+Tab (Intercambiar entre las pestañas hacia adelante)&lt;br /&gt;    * Ctrl+Shft+Tab (Intercambiar hacia atras en las pestañas)&lt;br /&gt;    * Ctrl+1-9 (Selecciona el numero de saltos entre las pestañas)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;About:config&lt;/span&gt;&lt;br /&gt;Un poderoso editor de configuracion de nuestro navegador esta en el mismo, tecleando about:config en la barra de direccion. Para opciones de este editor visita http://mozillazine.org/misc/about:config/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Acelera tu Firefox.&lt;/span&gt;&lt;br /&gt;Si usas banda ancha para conectarte a internet (como la mayoria) puedes usar una seccion de la configuracion llamada pipeline para acelerar la carga y navegacion por las paginas, para esto has lo siguiente:&lt;br /&gt;&lt;br /&gt;    * Escribe “about:config” en la barra de direccion y presiona Enter. Escribe “network.http” en el campo de Filtro, y cambia la siguiente configuracion (doble click sobre la opcion a cambiar):&lt;br /&gt;    * Pon “network.http.pipelining” a “true”&lt;br /&gt;    * Pon “network.http.proxy.pipelining” a “true”&lt;br /&gt;    * Pon “network.http.pipelining.maxrequests” a un numero como 30. Esto permite realizar 30 solicitudes al mismo tiempo.&lt;br /&gt;    * Ahora, click derecho en una parte en blanco y selecciona Nuevo-&amp;gt; Entero. Nombralo “nglayout.initialpaint.delay” y pon el valor en "0″. Este valor es el tiempo que el navegador esperara entre la espera y la muestra de la informacion recibida.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Limitar el uso de RAM.&lt;/span&gt;&lt;br /&gt;Si Firefox consume mucha memoria en tu maquina puedes limitar la RAM permitida para el uso del navegador, en about:config ingresa browser.cache y selecciona “browser.cache.disk.capacity” y ponle la cantidad de memoria que desees asignarle intenta poner 15000 si tienes entre 512mb y 1gb de memoria.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reducir el uso de RAM al minimizar.&lt;/span&gt;&lt;br /&gt;Con esto puedes liberar memoria utilizada por el navegador cuando este se minimiza, para ello ingresa al editor about:config y crea un nuevo registro (Click derecho / Nuevo -&amp;gt; Logico) y nombralo "config.trim_on_minimize" y con valor TRUE y reinicia Firefox.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remover el boton Cerrar pestaña&lt;/span&gt;&lt;br /&gt;Si continuamente cierras por accidente pestañas o simplemente quiere quitar el boton de cerrado de pestañas de las mismas haz lo siguiente, en el editor about:config busca la opcion “browser.tabs.closeButtons” y selecciona un valor de los siguientes:&lt;br /&gt;&lt;br /&gt;    * 0: Mostrar el boton de cerrado en la pestaña activa solamente.&lt;br /&gt;    * 1: (Default) Mostrar boton de cerrar en todas las pestañas&lt;br /&gt;    * 2: No mostrar el boton de cerrado en ninguna pestaña&lt;br /&gt;    * 3: Mostrar un boton de cerrado al final de la barra de pestañas&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-8730083026213969126?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/8730083026213969126/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=8730083026213969126' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/8730083026213969126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/8730083026213969126'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2008/06/tips-para-firefox.html' title='Tips para Firefox'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-2546346450291991009</id><published>2007-10-30T12:49:00.002-06:00</published><updated>2009-10-30T21:24:31.453-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash ie internet explorer hack bloqueo borde'/><title type='text'>Quitar marcos y activar Flash en IE</title><content type='html'>Resulta muy molesto que debido a problemas de intereses ahora el IE (Internet Explorer) bloquee de alguna manera los Flash de las paginas web obligandonos a activarlo con un click encima de la animación o bien presionando la barra espaciadora o Enter para que quede disponible para usarlo.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Se conocen varios hacks para evitar esto, a mi el que me ha funcionado muy bien es este metodo:&lt;br /&gt;1.- &lt;span style="font-weight: bold;"&gt;Descargar el archivo&lt;/span&gt; &lt;a href="http://blog.creandowebs.com/flashobject.js"&gt;flashobject.js&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.- &lt;span style="font-weight: bold;"&gt;Agregar la incursion del mismo en la pagina asi&lt;/span&gt;:&lt;br /&gt;&amp;lt;script type="text/javascript" src="flashobject.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;Entre las etiquetas &amp;lt;HEAD&amp;gt;&amp;lt;/HEAD&amp;gt;&lt;br /&gt;&lt;br /&gt;3.- &lt;span style="font-weight: bold;"&gt;Llamar a nuestro flash con el siguiente codigo&lt;/span&gt;:&lt;br /&gt;&amp;lt;div id="top"&amp;gt;&lt;br /&gt;&amp;lt;!--Flash --&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;var mymovie = new FlashObject("&lt;span style="font-weight: bold;"&gt;top.swf&lt;/span&gt;", "top", "&lt;span style="font-weight: bold;"&gt;750&lt;/span&gt;", "&lt;span style="font-weight: bold;"&gt;350&lt;/span&gt;", "7", "");&lt;br /&gt;mymovie.addParam("menu", "false");&lt;br /&gt;mymovie.write("top");&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;cambiando lo que esta en &lt;span style="font-weight: bold;"&gt;negritas&lt;/span&gt; y que se refiere al archivo, ancho y alto respectivamente y listo, el flash deberá ahora mostrarse sin el molesto marco ni tener que activarlo.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-2546346450291991009?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.creandowebs.com/flashobject.js' title='Quitar marcos y activar Flash en IE'/><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/2546346450291991009/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=2546346450291991009' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/2546346450291991009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/2546346450291991009'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2007/10/quitar-marcos-y-activar-flash-en-ie.html' title='Quitar marcos y activar Flash en IE'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-115228699167153736</id><published>2006-07-07T10:33:00.001-05:00</published><updated>2009-10-30T21:24:44.131-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='include'/><category scheme='http://www.blogger.com/atom/ns#' term='contenido'/><category scheme='http://www.blogger.com/atom/ns#' term='side'/><category scheme='http://www.blogger.com/atom/ns#' term='agregar'/><title type='text'>"Includes" con JS usando XML</title><content type='html'>Muchas veces tenemos paginas en servidores que no soportan los Server Side Includes, con este script podemos agregar una pagina como un include pero siendo Client Side Include :-D .&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-weight: bold;"&gt;NOTA:&lt;/span&gt; Algunos servidores, sobretodo gratuitos marcan un error con este script, por lo que no se garantiza que a todos les sirva&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para instalar el script coloca lo siguiente entre las etiquetas &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: #666666;"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;function include(xUrl,xId) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;var xmlhttp = false;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;/*@cc_on @*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;/*@if (@_jscript_version &amp;gt;= 5)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;// JScript gives us Conditional compilation, we can cope with old IE versions.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;// and security blocked creation of the objects.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt; } catch (e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;    try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;    } catch (E) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;      xmlhttp = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;/*@end @*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;if (!xmlhttp &amp;amp;&amp;amp; typeof XMLHttpRequest!='undefined') {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;  xmlhttp = new XMLHttpRequest();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;xmlhttp.open("GET", xUrl,true);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;xmlhttp.onreadystatechange=function() {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;        if (xmlhttp.readyState==4) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;              document.getElementById(xId).innerHTML = xmlhttp.responseText;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;xmlhttp.send(null)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y ahora llamamos la funcion asi:&lt;br /&gt;&lt;span style="color: #666666; font-size: 85%;"&gt;&amp;lt;div id="'xjam"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;include('&lt;span style="font-weight: bold;"&gt;contenido.htm&lt;/span&gt;', "xjam");&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Donde cambiaremos el archivo a incluir que es lo marcado en negritas&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-115228699167153736?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/115228699167153736/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=115228699167153736' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/115228699167153736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/115228699167153736'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2006/07/includes-con-js-usando-xml.html' title='&quot;Includes&quot; con JS usando XML'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-115099505583649594</id><published>2006-06-22T11:33:00.001-05:00</published><updated>2009-10-30T21:25:16.555-06:00</updated><title type='text'>PNG y sus transparencias en IE</title><content type='html'>De muchos es sabido que el IE no trabaja bien las transparencias de los archivos PNG que las contengan, esta es una de las tantas fallas del IE, pero pues todo tiene solucion y esta es algo facil de implementar y corregir, existen PNG's que podemos usar como imagenes dentro de la pagina o bien como fondos, para ambos casos tenemos las mismas opciones&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Usar GIF's aunque perdamos calidad&lt;/li&gt;&lt;li&gt;Utilizar otro  navegador como el Mozilla Firefox y tirar el IE a la basura&lt;/li&gt;&lt;li&gt;Implementar un pequeño script para solucionar esta falla&lt;/li&gt;&lt;/ol&gt;Para la opcion 1 pues habria que tener en cuenta que el archivo GIF no te dara la calidad de los PNG's, ademas de que estos solo soportan un canal de transparencia, por lo que no podrias hacer degradados transparentes.&lt;br /&gt;&lt;br /&gt;Para la segunda pues que mas quisieramos los diseñadores que pudiera tomarse como una opcion, en realidad hay mucha gente que usa el navegador que viene con su sistema operativo y no le interesa probar algun otro por mejor que pueda ser, asi que por lo pronto optaremos por la tercera opcion.&lt;br /&gt;&lt;br /&gt;Este script lo que hace es que si el navegador es el IE aplique a los PNG automaticamente un filtro Alpha para las transparencias, como comento arriba, no hay mas que hacer mas que pegar esto, el script lo hace todo solo :-D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: #999999;"&gt;&amp;lt;!--[if gte IE 5.5000]&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;&amp;lt;script language="JavaScript"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;   {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;   for(var i=0; i&amp;lt;document.images.length; i++)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;      var img = document.images[i]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;      var imgName = img.src.toUpperCase()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;      if (imgName.substring(imgName.length-3, imgName.length) == "PNG")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         var imgID = (img.id) ? "id='" + img.id + "' " : ""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         var imgClass = (img.className) ? "class='" + img.className + "' " : ""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         var imgStyle = "display:inline-block;" + img.style.cssText&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         if (img.align == "left") imgStyle = "float:left;" + imgStyle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         if (img.align == "right") imgStyle = "float:right;" + imgStyle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         var strNewHTML = "&amp;lt;span " + imgID + imgClass + imgTitle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         + "(src=\'" + img.src + "\');\"&amp;gt;&amp;lt;/span&amp;gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         img.outerHTML = strNewHTML&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         i = i-1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;window.attachEvent("onload", correctPNG);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #999999;"&gt;&amp;lt;![endif]--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Otra de las opciones de uso de un PNG es para fondos, esto se puede solucionar con lo siguiente entre las etiquetas &lt;span style="font-weight: bold;"&gt;head&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #999999; font-size: 85%;"&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;#fondo {&lt;br /&gt;background-image:url(&lt;span style="font-weight: bold;"&gt;logoGDE.png&lt;/span&gt;)&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;* html&lt;/span&gt; #fondo {background-image:none;&lt;br /&gt;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='&lt;span style="font-weight: bold;"&gt;logoGDE.png&lt;/span&gt;', sizingMethod='crop')&lt;br /&gt;background:;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;span style="color: #cc6600;"&gt;* html&lt;/span&gt; Esto hace que se ponga un fondo para unos navegadores y ese mismo con un filtro al IE&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;Hay que cambiar &lt;/span&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;logoGDE.png&lt;/span&gt; por la imagen de fondo que vamos a usar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la tabla se pone &lt;b&gt;id="fondo"&lt;/b&gt; yo lo puse en una tabla, si se pone en la etiqueta &amp;lt;table&amp;gt; y la tabla tiene bordes sobrepondra la imagen a los bordes, si se pone en el &amp;lt;td&amp;gt; no.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Probado en: &lt;/b&gt;&lt;span style="font-size: 78%;"&gt;&lt;img align="absmiddle" alt="" border="0" src="http://image.versiontracker.com/client_icons/org.mozilla.firefox-icon-32x32-8bit.gif" /&gt; &lt;/span&gt;&lt;span style="color: #999999; font-size: 78%;"&gt;Firefox 1.5  &lt;/span&gt;&lt;span style="font-size: 78%;"&gt; &lt;img align="absmiddle" alt="" border="0" src="http://images.google.com.mx/images?q=tbn:KF5bT54bzosggM:https://online1.tu-graz.ac.at/prod/img/opera.gif" /&gt; &lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="color: #999999;"&gt;Opera 8.54  &lt;/span&gt; &lt;img align="absmiddle" alt="" border="0" src="http://images.google.com.mx/images?q=tbn:OzNz_ktheHd42M:www.error500.net/images/articulos/explorer.gif" /&gt; &lt;span style="color: #999999;"&gt;IE 6&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;De esto se puede ver un ejemplo en &lt;a class="externa" href="http://www.cristovivo.com/prueba.html" target="_blank"&gt;www.cristovivo.com/prueba.html&lt;/a&gt; que a lo mejor no es la mas estetica pero muestra lo anterior&lt;br /&gt;&lt;br /&gt;Espero les sirva ademas de que tambien espero sus comentarios al respecto, esta es una de las grandes preguntas que siempre rondan en los foros.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-115099505583649594?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/115099505583649594/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=115099505583649594' title='8 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/115099505583649594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/115099505583649594'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2006/06/png-y-sus-transparencias-en-ie.html' title='PNG y sus transparencias en IE'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25208438.post-115099379570496673</id><published>2006-06-22T11:13:00.002-05:00</published><updated>2009-10-30T21:25:27.393-06:00</updated><title type='text'>Agregar contador gratuito en webs</title><content type='html'>He creado un simple contador de visitas para agregar a cualquier pagina web de manera facil y configurable, dicho contador podra ir evolucionando en mejoras, esta es la version 1 asi que puede que mas adelante saque mas versiones con mas funciones y caracteristicas ademas de diseños, un ejemplo del contador es como el mostrado en mi blog, del lado derecho apenas arriba del logo del blog.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Para agregar este contador a cualquier sitio solo hay que agregar una pequeña linea de javascript y configurar algunas cosas, es facil y rapido, aqui una descripcion:&lt;br /&gt;&lt;br /&gt;Script a agregar:&lt;br /&gt;&amp;lt;script src="http://www.creandowebs.com/contador.asp?user=&lt;span style="font-weight: bold;"&gt;paginaweb.com&lt;/span&gt;&amp;amp;&lt;br /&gt;tv=&lt;span style="font-weight: bold;"&gt;Visitante&lt;/span&gt;&amp;amp;fn=&lt;span style="font-weight: bold;"&gt;Arial,Verdana&lt;/span&gt;&amp;amp;sz=&lt;span style="font-weight: bold;"&gt;11&lt;/span&gt;&amp;amp;bd=&lt;span style="font-weight: bold;"&gt;yes&lt;/span&gt;&amp;amp;c=&lt;span style="font-weight: bold;"&gt;000099&lt;/span&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Nota todo va en una sola linea, se corta por espacio)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;donde configuraremos lo que esta marcado en negritas.&lt;br /&gt;user=&lt;span style="font-weight: bold;"&gt;paginaweb.com&lt;/span&gt; por la pagina donde estara el contador, es importante cambiar esto para poder tener un contador unico para cada sitio.&lt;br /&gt;&lt;br /&gt;tv=&lt;span style="font-weight: bold;"&gt;Visitante&lt;/span&gt; es el texto que aparecera justo antes de la cantidad de visitas, ejemplo:&lt;br /&gt;Visitante 0202&lt;br /&gt;&lt;br /&gt;fn=&lt;span style="font-weight: bold;"&gt;Arial,Verdana&lt;/span&gt; es la(s) fuente(s) a utilizar.&lt;br /&gt;algunas opciones: pueden ser tahoma, Trebuchet MS o cualquiera que uses en tu sitio&lt;br /&gt;&lt;br /&gt;sz=&lt;span style="font-weight: bold;"&gt;11&lt;/span&gt; es el tamaño de la fuente en pixeles, el tamaño 11 equivale a mas o menos al tamaño 2&lt;br /&gt;Opciones: numero valido para el tamaño deseado de fuente&lt;br /&gt;&lt;br /&gt;bd=&lt;span style="font-weight: bold;"&gt;yes&lt;/span&gt; si es yes el texto aparecera en negritas, si no quieres esto cambialo por no&lt;br /&gt;Opciones: yes (fuente en negritas) no (fuente normal)&lt;br /&gt;&lt;br /&gt;c=&lt;span style="font-weight: bold;"&gt;000099&lt;/span&gt; es el color del texto en valor hexadecimal&lt;br /&gt;Algunas colores:&lt;br /&gt;Blanco=ffffff&lt;br /&gt;Negro=000000&lt;br /&gt;Azul=0000ff&lt;br /&gt;Rojo=ff0000&lt;br /&gt;Verde=00ff00&lt;br /&gt;&lt;br /&gt;Esto es todo, el script debe pegarse en la parte donde queramos que aparezca el contador, les informo que el contador esta programado para contar visitas usando sesiones, esto lo que ocaciona es que sean visitas reales, es decir, si alguien se hagarra haciendo clicks o recargando la pagina solo se generara una visita (si el usuario tiene activas las cookies por que las sessiones usan esto).&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25208438-115099379570496673?l=javimata.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javimata.blogspot.com/feeds/115099379570496673/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25208438&amp;postID=115099379570496673' title='24 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/115099379570496673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25208438/posts/default/115099379570496673'/><link rel='alternate' type='text/html' href='http://javimata.blogspot.com/2006/06/agregar-contador-gratuito-en-webs.html' title='Agregar contador gratuito en webs'/><author><name>JAM</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='5' src='http://www.creandowebs.com/images/logotipo.gif'/></author><thr:total>24</thr:total></entry></feed>
