<?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-1626801945195814956</id><updated>2011-10-04T14:10:06.456-03:00</updated><category term='ksh'/><category term='Unix'/><category term='jQuery'/><category term='mySQL'/><category term='JSP'/><category term='SQL'/><category term='CSS'/><category term='Javascript'/><category term='Mensajeros'/><category term='AJAX'/><category term='ASP'/><category term='Tech-News'/><category term='Cross-Browser'/><category term='VB.NET'/><category term='Prototype'/><category term='Alojamiento de archivos'/><category term='Java'/><category term='Oracle'/><category term='Web 2.0'/><category term='Phyton'/><category term='Open Source'/><category term='C++'/><category term='PHP'/><category term='Odigo'/><category term='DOM'/><category term='Firefox'/><category term='Bugs'/><category term='tutoriales'/><category term='HTML'/><category term='asp.net'/><category term='Diseño'/><category term='Free'/><category term='IM'/><category term='.NET'/><title type='text'>Web.AR</title><subtitle type='html'>Lenguajes interpretados y otras yerbas interesantes.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default?start-index=101&amp;max-results=100'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>140</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-8220573429302867426</id><published>2009-10-27T22:48:00.010-03:00</published><updated>2009-10-28T01:11:37.248-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>Cómo invocar un archivo CSS incrustado en ASP.NET</title><content type='html'>&lt;p&gt;Recientemente me vi en la necesidad de crear un componente &lt;span style="font-style: italic;"&gt;a medida&lt;/span&gt; (control web).  Se trataba de un &lt;span style="font-style: italic;"&gt;TextBox&lt;/span&gt; que pudiese controlar distintos tipos de datos (números, fechas, textos con limitaciones, etc).   Ninguno de los &lt;span style="font-style: italic;"&gt;freeware&lt;/span&gt; me convencía, por lo que puse manos a la obra y lo comencé a escribir desde mi poco conocimiento actual sobre el tema.&lt;/p&gt;El objeto en cuestión se encuentra en una &lt;span style="font-style: italic;"&gt;.dll&lt;/span&gt;, junto con tres archivos &lt;span style="font-style: italic;"&gt;Javascript&lt;/span&gt; y un archivo &lt;span style="font-style: italic;"&gt;CSS&lt;/span&gt;.  Hasta ahí todo fenómeno.  Los archivos .js se deben incluir en la página dependiendo del tipo de validación que se necesite y el .css cuando el control necesite mostrar un calendario para que el usuario ingrese una fecha de forma más cómoda.

&lt;p&gt;La idea es que los archivos incrustado en la biblioteca de controles se invoquen mediante el etiquetado normal (&amp;lt;script&gt; y &amp;lt;link&gt;) y no volcar el código directamente en la página, puesto que en los sucesivos &lt;span style="font-style: italic;"&gt;postback&lt;/span&gt; el servidor se vería obligado a transmitir todo ese código.
&lt;/p&gt;
&lt;p&gt;Como dijera, mi escaso conocimiento de la construcción de controles me llevó a leer toda la documentación posible y buscar en la web los ejemplos más claros. La mayoría de los ejemplos para invocar los .js decían más o menos así:&lt;/p&gt;&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;&lt;pre&gt;
&lt;span style="color: rgb(51, 102, 255);"&gt;protected override void&lt;/span&gt; OnPreRender(EventArgs e) {
Page.ClientScript.RegisterClientScriptInclude(&lt;span style="color: rgb(255, 102, 0);"&gt;"FunkyJavaScript"&lt;/span&gt;,
Page.ClientScript.GetWebResourceUrl(&lt;span style="color: rgb(51, 102, 255);"&gt;this&lt;/span&gt;.GetType(),
  &lt;span style="color: rgb(255, 102, 0);"&gt;"FunkyTextBox.Funky.js"&lt;/span&gt;));

&lt;span style="color: rgb(51, 102, 255);"&gt;base&lt;/span&gt;.OnPreRender(e);
}
&lt;/pre&gt;
&lt;/div&gt;
Esto funciona correctamente para los .js, especialmente cuando se colocan varios controles del mismo tipo.  Para el caso de los .css el código aconsejado en varios ejemplos es este:
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;span style="color: rgb(51, 102, 255);"&gt;string &lt;/span&gt;includeTemplate =
&lt;span style="color: rgb(255, 102, 0);"&gt;"&amp;lt;link rel='stylesheet' text='text/css' href='{0}' /&gt;"&lt;/span&gt;;
&lt;span style="color: rgb(51, 102, 255);"&gt;string &lt;/span&gt;includeLocation =
Page.ClientScript.GetWebResourceUrl(this.GetType(), &lt;span style="color: rgb(255, 102, 0);"&gt;"myStylesheet _Links.css"&lt;/span&gt;);
&lt;span style="color: rgb(51, 102, 255);"&gt;LiteralControl &lt;/span&gt;include =
new LiteralControl(String.Format(includeTemplate, includeLocation));
((HtmlControls.HtmlHead) Page.Header).Controls.Add(include);
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Si leemos el código, lo que hace es agregar una etiqueta &lt;span style="font-style: italic;"&gt;LINK&lt;/span&gt; al encabezado de la página enlazando el archivo incrustado.  &lt;span style="font-weight: bold;"&gt;Lo problemático de esto es que si agregas tres controles, este código agregará tres etiquetas LINK&lt;/span&gt;.  Y eso no es lo que queremos!!&lt;/p&gt;&lt;p&gt;Bueno... toda esta cháchara para explicarles con que bobada lo resolví y tal vez le sirva. También puede pasar que haya una mejor forma y que yo quede como un idiota ignorante. :-)&lt;/p&gt;
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;span style="color: rgb(51, 102, 255);"&gt;If&lt;/span&gt; Page.Header.FindControl(&lt;span style="color: rgb(255, 102, 0);"&gt;"mcTextBoxCalendarCSS"&lt;/span&gt;) &lt;span style="color: rgb(51, 102, 255);"&gt;Is Nothing Then&lt;/span&gt;
&lt;span style="color: rgb(51, 102, 255);"&gt;Dim &lt;/span&gt;lnkCss As &lt;span style="color: rgb(51, 102, 255);"&gt;New &lt;/span&gt;HtmlControls.HtmlLink
&lt;span style="color: rgb(51, 102, 255);"&gt;With &lt;/span&gt;lnkCss
.Attributes(&lt;span style="color: rgb(255, 102, 0);"&gt;"rel"&lt;/span&gt;) = &lt;span style="color: rgb(255, 102, 0);"&gt;"stylesheet"&lt;/span&gt;
.Attributes(&lt;span style="color: rgb(255, 102, 0);"&gt;"text"&lt;/span&gt;) = &lt;span style="color: rgb(255, 102, 0);"&gt;"text/css"&lt;/span&gt;
.ID = &lt;span style="color: rgb(255, 102, 0);"&gt;"mcTextBoxCalendarCSS"&lt;/span&gt;
.Href = Page.ClientScript.GetWebResourceUrl(Me.GetType(), &lt;span style="color: rgb(255, 102, 0);"&gt;"mcTextBoxCalendar.css"&lt;/span&gt;)
&lt;span style="color: rgb(51, 102, 255);"&gt; End With&lt;/span&gt;
Page.Header.Controls.Add(lnkCss)
&lt;span style="color: rgb(51, 102, 255);"&gt;End If&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Lo que hace este código es simple, crea el mismo enlace, pero le pone un ID y si ya existe de un objeto anterior, no lo agrega.  Simple, pero efectivo.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-8220573429302867426?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/8220573429302867426/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=8220573429302867426' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8220573429302867426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8220573429302867426'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2009/10/como-invocar-un-archivo-css-incrustado.html' title='Cómo invocar un archivo CSS incrustado en ASP.NET'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-1734103511678914962</id><published>2009-01-24T13:32:00.002-02:00</published><updated>2009-01-24T13:41:59.484-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Odigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Mensajeros'/><category scheme='http://www.blogger.com/atom/ns#' term='IM'/><title type='text'>RadiusIM</title><content type='html'>&lt;p&gt;He encontrado un navegador alternativo muy interesante que tiene funcionalidaes parecidas al desaparecido Odigo que mucho internaultas extrañan: &lt;a href="http://www.radiusim.com"&gt;radiusIM&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;Tal vez ustedes ya lo conozcan y yo llegue tarde con la noticia, pero la finalidad de esta entrada en mi blog es para que mucha más gente se registre en él.  Hay que hacerlo crecer porque, a diferencia de los otros mensajeros, con este puedes encontrar montones de amigos.&lt;/p&gt;&lt;p&gt;La característica más interesante es que situa a tus probables amigos en el mapa de Google.  Puedes señalar tu ubicación en el mundo y radiusIM buscará personas afines a ti que se encuentren cerca de tu ubicación.  O puesdes desplazarte por el Globo y radiusIM te mostrará quienes se encuentran registrados cerca de esa posición.&lt;/p&gt;&lt;p&gt;Tambiém puedes comunicarte con los navegadores más populares, como no podía ser de otra manera.  Puedes invitar a tus amigos de esos mismos mensajeros a que se una.&lt;/p&gt;&lt;p&gt;Si tu intención es que las personas que te contacten tengan tu permiso para hacerlo, pues solo tienes que establecerlo en tu configuración y listo.&lt;/p&gt;&lt;p&gt;Su buscador no tiene tantas opciones como el querido Odigo, pero sería cuestión de que lo sugiriesemos y ver si lo pueden implementar.&lt;/p&gt;&lt;p&gt;A mi me agrada y se los recomiendo.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-1734103511678914962?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/1734103511678914962/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=1734103511678914962' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1734103511678914962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1734103511678914962'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2009/01/radiusim.html' title='RadiusIM'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7591584996746317287</id><published>2008-08-28T00:02:00.004-03:00</published><updated>2009-10-27T23:11:52.747-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Objeto Javascript para controlar objetos INPUT</title><content type='html'>&lt;p&gt;Trabajamos a diario, los que diseñamos páginas web, con formularios de entrada de datos, mayormente conformados por objetos INPUT.  Estos requieren, muchas veces, de validaciones estándares que, si bien podemos hacerlas en el servidor, se ahorra mucho tiempo el hacerlas en el servidor.&lt;/p&gt;
&lt;p&gt;Este objeto que les comparto, hace una serie de validaciones para distintos tipos de entradas de datos, algunas de ellas teniendo en cuenta a algunos caracteres "indigestos" para las bases de datos enalgunas circunstancias.  Valida:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;NUMBER&lt;/font&gt;: que la entrada sea un valor numérico, entero o decimal, positivo o negativo, con determinada cantidad de decimales, etc.&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;DATE&lt;/font&gt;: que la entrada sea una fecha válida.  Solo acepta fechas en formato &lt;font style="font-style: italic;"&gt;dd/mm/aaaa&lt;/font&gt;.&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;TEXTONLY&lt;/font&gt;: solo caracteres de la A-Z (sin los hispánicos, salvo que se establezca lo contrario).&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;TEXTNUMBER&lt;/font&gt;: caracteres de la A-Z, números de 0-9 y el espacio en blanco. (sin los hispánicos, salvo que se establezca lo contrario).&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;ALPHA&lt;/font&gt;: caracteres de la A-Z y algunos símbolos. (sin los hispánicos, salvo que se establezca lo contrario).&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;ALPHANUMERIC&lt;/font&gt;: caracteres de la A-Z, números de 0-9 y algunos símbolos. (sin los hispánicos, salvo que se establezca lo contrario).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;El código:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;font face="monospace"&gt;&lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; __jgWC = &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
   Version: &lt;font style="color: rgb(255, 0, 255);"&gt;'0.2.0 RC'&lt;/font&gt;,
   &lt;font style="color: rgb(0, 0, 255);"&gt;//objetos controlados&lt;/font&gt;
   ControledObjects: &lt;font style="color: rgb(0, 128, 128);"&gt;[]&lt;/font&gt;,
   &lt;font style="color: rgb(0, 0, 255);"&gt;//determinador del browser&lt;/font&gt;
   Browser: &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       IE:     !!(&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;window&lt;/b&gt;&lt;/font&gt;.attachEvent &amp;amp;&amp;amp; !&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;window&lt;/b&gt;&lt;/font&gt;.opera),
       Opera:  !!&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;window&lt;/b&gt;&lt;/font&gt;.opera,
       WebKit: navigator.userAgent.indexOf(&lt;font style="color: rgb(255, 0, 255);"&gt;'AppleWebKit/'&lt;/font&gt;) &amp;gt; -1,
       Gecko:  navigator.userAgent.indexOf(&lt;font style="color: rgb(255, 0, 255);"&gt;'Gecko'&lt;/font&gt;) &amp;gt; -1 &amp;amp;&amp;amp; navigator.userAgent.indexOf(&lt;font style="color: rgb(255, 0, 255);"&gt;'KHTML'&lt;/font&gt;) == -1,
       MobileSafari: !!navigator.userAgent.match(&lt;font style="color: rgb(255, 0, 255);"&gt;/Apple.*Mobile.*Safari/&lt;/font&gt;)
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,
   &lt;font style="color: rgb(0, 0, 255);"&gt;//controla los atributos del objeto input&lt;/font&gt;
   DefaultAttributes:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'inputtype'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'inputtype'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'all'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'texttransform'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'texttransform'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'none'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'positiveonly'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'positiveonly'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'false'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalpoint'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalpoint'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'.'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalplaces'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalplaces'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'2'&lt;/font&gt;)
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'excludechar'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'excludechar'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'includecharonly'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'includecharonly'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'spanishchars'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'spanishchars'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'false'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'valMin'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'valMin'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'valMax'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'valMax'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'blurErrorAlert'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'blurErrorAlert'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'true'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'blurErrorMessage'&lt;/font&gt;)) obj.setAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'blurErrorMessage'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'DATOS INCORRECTOS'&lt;/font&gt;);
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,
   &lt;font style="color: rgb(0, 0, 255);"&gt;//registrador de los eventos de los inputs controlados&lt;/font&gt;
   RegisterObject:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(ob, enableEvents) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/font&gt; ob == &lt;font style="color: rgb(255, 0, 255);"&gt;'string'&lt;/font&gt;) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt; ob=&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/font&gt;.getElementById(ob); &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(0, 128, 128);"&gt;arguments&lt;/font&gt;.length == 1) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;enableEvents=&lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(!ob) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt; &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.ControledObjects.push(ob);
       &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.DefaultAttributes(ob);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(enableEvents) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.AttachEvent(ob, &lt;font style="color: rgb(255, 0, 255);"&gt;'keypress'&lt;/font&gt;, __jgWC_DoKeyPress, &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;);
           &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.AttachEvent(ob, &lt;font style="color: rgb(255, 0, 255);"&gt;'blur'&lt;/font&gt;, __jgWC_DoBlur, &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;);
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,

   &lt;font style="color: rgb(0, 0, 255);"&gt;//agregador de los eventos&lt;/font&gt;
   AttachEvent:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(elemento, nombre_evento, funcion, captura) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
     &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; (elemento.attachEvent)&lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       elemento.attachEvent(&lt;font style="color: rgb(255, 0, 255);"&gt;'on'&lt;/font&gt; + nombre_evento, funcion);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
     &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; (elemento.addEventListener)&lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
         elemento.addEventListener(nombre_evento, funcion, captura);
         &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
         &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,

   &lt;font style="color: rgb(0, 0, 255);"&gt;//cancela la ultima entrada&lt;/font&gt;
   CancelInput:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(ev) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.Browser.IE)
       &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           ev.keyCode = 0;
           ev.returnValue = 0;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           ev.preventDefault();
           ev.stopPropagation();
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,

   &lt;font style="color: rgb(0, 0, 255);"&gt;//detiene el burbujeo del evento&lt;/font&gt;
   StopBubble:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(ev) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; (__jgWC.Browser.IE) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           ev.cancelBubble = &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           ev.stopPropagation();
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,

   &lt;font style="color: rgb(0, 0, 255);"&gt;//evaluador de los dígitos ingresados&lt;/font&gt;
   EvaluateValue:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, kcASCII, eventType)
   &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       kcASCII = (&lt;font style="color: rgb(0, 128, 128);"&gt;arguments&lt;/font&gt;.length==1) ?&lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;:kcASCII;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; value = obj.value + kcASCII;
       &lt;font style="color: rgb(0, 0, 255);"&gt;// excludechar&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; exChar = obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'excludechar'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(exChar.length &amp;gt; 0) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; ( &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(255, 0, 255);"&gt;'^[^'&lt;/font&gt; + exChar + &lt;font style="color: rgb(255, 0, 255);"&gt;']*$'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'i'&lt;/font&gt;).test(value));
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(0, 0, 255);"&gt;// includeonly&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; inOnly = obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'includecharonly'&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(inOnly.length &amp;gt; 0) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; (&lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(255, 0, 255);"&gt;'^['&lt;/font&gt; + inOnly + &lt;font style="color: rgb(255, 0, 255);"&gt;']*$'&lt;/font&gt;, &lt;font style="color: rgb(255, 0, 255);"&gt;'i'&lt;/font&gt;).test(value));
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(0, 0, 255);"&gt;// &lt;/font&gt;&lt;font style="color: rgb(51, 51, 255);"&gt;todo&lt;/font&gt; &lt;font style="color: rgb(0, 0, 255);"&gt;tipo de caracteres&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'INPUTTYPE'&lt;/font&gt;).toUpperCase() == &lt;font style="color: rgb(255, 0, 255);"&gt;'ALL'&lt;/font&gt;) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt; &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;; &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;switch&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'INPUTTYPE'&lt;/font&gt;).toUpperCase()) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(0, 0, 255);"&gt;// tipo numerico&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;'NUMBER'&lt;/font&gt;:
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.NumericValue(obj, value);
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
           &lt;font style="color: rgb(0, 0, 255);"&gt;//tipo fecha&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;'DATE'&lt;/font&gt;:
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(eventType == &lt;font style="color: rgb(255, 0, 255);"&gt;'keypress'&lt;/font&gt;) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt; &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;; &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.DateValue(obj, value);
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
           &lt;font style="color: rgb(0, 0, 255);"&gt;//solo texto&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;'TEXTONLY'&lt;/font&gt;:
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.TextOnlyValue(obj, value);
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
           &lt;font style="color: rgb(0, 0, 255);"&gt;//solo texto y numeros&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;'TEXTNUMBER'&lt;/font&gt;:
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.TextNumberValue(obj, value);
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
           &lt;font style="color: rgb(0, 0, 255);"&gt;//texto y algunos caracteres de puntuacion&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;'ALPHA'&lt;/font&gt;:
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.AlphaValue(obj, value);
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
           &lt;font style="color: rgb(0, 0, 255);"&gt;//texto, numeros y algunos caracteres de puntuacion&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;'ALPHANUMERIC'&lt;/font&gt;:
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.AlphaNumericValue(obj, value);
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;,

   &lt;font style="color: rgb(0, 0, 255);"&gt;//muestra el mensaje de error establecido si se seteo el permiso para mostrarlo&lt;/font&gt;
   ErrorMessage:&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'blurErrorAlert'&lt;/font&gt;) == &lt;font style="color: rgb(255, 0, 255);"&gt;'true'&lt;/font&gt;) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;alert&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'blurErrorMessage'&lt;/font&gt;));
           obj.select();
           obj.focus();
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;;

&lt;font style="color: rgb(0, 0, 255);"&gt;//agrega caracteres hispanicos a la expresion regular&lt;/font&gt;
__jgWC.addSpanishChars=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, alpha) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; (obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'SPANISHCHARS'&lt;/font&gt;).toLowerCase()==&lt;font style="color: rgb(255, 0, 255);"&gt;'true'&lt;/font&gt;)?&lt;font style="color: rgb(255, 0, 255);"&gt;'áéíóúüñ'&lt;/font&gt; + ((alpha)?&lt;font style="color: rgb(255, 0, 255);"&gt;'¿¡'&lt;/font&gt;:&lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;) :&lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//agrega simbolos a la expresion regular    &lt;/font&gt;
__jgWC.addSimbols=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;':&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;?&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;!&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;$%=/*#&amp;lt;&amp;gt;&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;+-&amp;gt;,;&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;(&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;)&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;.@_'&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//testea el valor ALPHANUMERIC&lt;/font&gt;
__jgWC.AlphaNumericValue=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, valToTest) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; Exp = &lt;font style="color: rgb(255, 0, 255);"&gt;'^[a-z0-9&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\s&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;'&lt;/font&gt; + &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.addSpanishChars(obj, &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;) + &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.addSimbols(obj) + &lt;font style="color: rgb(255, 0, 255);"&gt;']*$'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(Exp).test(valToTest.toLowerCase());
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//testea el valor ALPHA&lt;/font&gt;
__jgWC.AlphaValue=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, valToTest) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; Exp = &lt;font style="color: rgb(255, 0, 255);"&gt;'^[a-z&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\s&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;'&lt;/font&gt; + &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.addSpanishChars(obj, &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;) + &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.addSimbols(obj) + &lt;font style="color: rgb(255, 0, 255);"&gt;']*$'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(Exp).test(valToTest.toLowerCase());
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//testea el valor TEXTNUMBER&lt;/font&gt;
__jgWC.TextNumberValue=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, valToTest) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; Exp = &lt;font style="color: rgb(255, 0, 255);"&gt;'^[a-z0-9&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\s&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;'&lt;/font&gt; + &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.addSpanishChars(obj, &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;) + &lt;font style="color: rgb(255, 0, 255);"&gt;']*$'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(Exp).test(valToTest.toLowerCase());
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//testea el valor TEXTONLY&lt;/font&gt;
__jgWC.TextOnlyValue=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, valToTest) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; Exp = &lt;font style="color: rgb(255, 0, 255);"&gt;'^[a-z&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\s&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;'&lt;/font&gt; + &lt;font style="color: rgb(0, 128, 128);"&gt;this&lt;/font&gt;.addSpanishChars(obj) + &lt;font style="color: rgb(255, 0, 255);"&gt;']*$'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(Exp).test(valToTest.toLowerCase());
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//testea el valor NUMERIC&lt;/font&gt;
__jgWC.NumericValue=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, valToTest) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; Exp = &lt;font style="color: rgb(255, 0, 255);"&gt;'^'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'positiveonly'&lt;/font&gt;).toLowerCase()==&lt;font style="color: rgb(255, 0, 255);"&gt;'false'&lt;/font&gt;) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           Exp += &lt;font style="color: rgb(255, 0, 255);"&gt;'[-]?'&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       Exp += &lt;font style="color: rgb(255, 0, 255);"&gt;'&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;d{1,1}&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;d*'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalplaces'&lt;/font&gt;)) &amp;gt; 0) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           Exp += &lt;font style="color: rgb(106, 90, 205);"&gt;'\\'&lt;/font&gt; + obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalpoint'&lt;/font&gt;) + &lt;font style="color: rgb(255, 0, 255);"&gt;'?&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;d{0,'&lt;/font&gt; + obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'decimalplaces'&lt;/font&gt;) + &lt;font style="color: rgb(255, 0, 255);"&gt;'}'&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       Exp += &lt;font style="color: rgb(255, 0, 255);"&gt;'$'&lt;/font&gt;; 
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(Exp).test(valToTest);
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

&lt;font style="color: rgb(0, 0, 255);"&gt;//transforma el texto segun el atributo TEXTTRANSFORM&lt;/font&gt;
__jgWC.TextTransform=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;switch&lt;/b&gt;&lt;/font&gt;(obj.getAttribute(&lt;font style="color: rgb(255, 0, 255);"&gt;'TEXTTRANSFORM'&lt;/font&gt;).toUpperCase()) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;"UPPER"&lt;/font&gt;:
               obj.value = obj.value.toUpperCase();
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;"LOWER"&lt;/font&gt;:
               obj.value = obj.value.toLowerCase();
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
 

&lt;font style="color: rgb(0, 0, 255);"&gt;//controla el valor DATE&lt;/font&gt;
__jgWC.DateValue=&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt;(obj, valToTest) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; expr=&lt;font style="color: rgb(255, 0, 255);"&gt;'^(([0-2]?&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;d{1})|([3][0,1]{1}))&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\/&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;[0,1]?&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;d{1}[0-2]&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\/&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;[1-9]{1}&lt;/font&gt;&lt;font style="color: rgb(106, 90, 205);"&gt;\\&lt;/font&gt;&lt;font style="color: rgb(255, 0, 255);"&gt;d{3}$'&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( ! &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;RegExp&lt;/b&gt;&lt;/font&gt;(expr).test(valToTest) ) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt; &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; aD = valToTest.split(&lt;font style="color: rgb(255, 0, 255);"&gt;'/'&lt;/font&gt;);
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; tmp = &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/font&gt;(aD&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;2&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;, aD&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;1&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;-1, aD&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;0&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(tmp.getDate()) != &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(aD&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;0&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;) || &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(tmp.getMonth()+1) != &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(aD&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;1&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;) ||
               &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(tmp.getFullYear()) != &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Number&lt;/b&gt;&lt;/font&gt;(aD&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;2&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;) ) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;


&lt;font style="color: rgb(0, 0, 255);"&gt;//controla los objetos indicados en ControledObjects uno por uno&lt;/font&gt;
&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt; __jgWC_ControlObjects() &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; objs = __jgWC.ControledObjects;
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; len = objs.length;
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; i=0; i &amp;lt; len; i++) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; obj = objs&lt;font style="color: rgb(0, 128, 128);"&gt;[&lt;/font&gt;i&lt;font style="color: rgb(0, 128, 128);"&gt;]&lt;/font&gt;;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( !__jgWC.EvaluateValue(obj) ) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           __jgWC.ErrorMessage(obj);
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;


&lt;font style="color: rgb(0, 0, 255);"&gt;//controla el evento KeyPress&lt;/font&gt;
&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt; __jgWC_DoKeyPress(ev) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; obj = ev.target||ev.srcElement;
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; KC = ev.which||ev.keyCode;
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; kcASCII = &lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;.fromCharCode(KC);
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; noChar = ev.keyCode;
   __jgWC.StopBubble(ev);
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(__jgWC.Browser.IE) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; (&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/font&gt;.selection.type == &lt;font style="color: rgb(255, 0, 255);"&gt;'Text'&lt;/font&gt;)    &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; tr = &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/font&gt;.selection.createRange();
           tr.text = &lt;font style="color: rgb(255, 0, 255);"&gt;''&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(obj.selectionStart &amp;lt; obj.selectionEnd) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;(noChar).search(&lt;font style="color: rgb(255, 0, 255);"&gt;'37|39'&lt;/font&gt;) == -1) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
               &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
                   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;window&lt;/b&gt;&lt;/font&gt;.getSelection().collapseToStart()
               &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/font&gt;(ex)&lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt; &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
           &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( ev.ctrlKey || ev.altKey ) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(kcASCII.search(&lt;font style="color: rgb(255, 0, 255);"&gt;'V|v|C|c|X|x'&lt;/font&gt;) &amp;gt; -1) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
           &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
       &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
       __jgWC.CancelInput(ev);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;

   &lt;font style="color: rgb(0, 0, 255);"&gt;// backspace|tab|enter|Alt-flecha izq|Alt fecha der.&lt;/font&gt;
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;(noChar).search(&lt;font style="color: rgb(255, 0, 255);"&gt;'8|9|13|37|39'&lt;/font&gt;) &amp;gt; -1) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;&lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   &lt;font style="color: rgb(0, 0, 255);"&gt;//evaluate&lt;/font&gt;
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( !__jgWC.EvaluateValue(obj, kcASCII, ev.type) ) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       __jgWC.CancelInput(ev);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;


&lt;font style="color: rgb(0, 0, 255);"&gt;//controla el evento blur&lt;/font&gt;
&lt;font style="color: rgb(0, 128, 128);"&gt;function&lt;/font&gt; __jgWC_DoBlur(ev) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
   &lt;font style="color: rgb(0, 128, 128);"&gt;var&lt;/font&gt; obj = ev.target||ev.srcElement;
   &lt;font style="color: rgb(0, 0, 255);"&gt;//evaluate&lt;/font&gt;
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( !__jgWC.EvaluateValue(obj) ) &lt;font style="color: rgb(0, 128, 128);"&gt;{&lt;/font&gt;
       __jgWC.ErrorMessage(obj);
       &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;false&lt;/font&gt;;
   &lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
   __jgWC.TextTransform(obj);
   &lt;font style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font style="color: rgb(255, 0, 255);"&gt;true&lt;/font&gt;;
&lt;font style="color: rgb(0, 128, 128);"&gt;}&lt;/font&gt;
&lt;/font&gt;&lt;/pre&gt;&lt;font face="monospace"&gt;
&lt;/font&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;&lt;p&gt;Las propiedades que acepta cada INPUT son:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;INPUTTYPE: indica que tipo de dato hay que controlar: NUMERIC, DATE, TEXTONLY, TEXTNUMBER, ALPHA, ALPHANUMERIC, ALL.&lt;/li&gt;&lt;li&gt;TEXTTRANSFORM: acepta los valores UPPER, LOWER o NONE, para indicar si se debe transformar el texto a mayúsculas, minúsculas o sin cambios, respectivamente.&lt;/li&gt;&lt;li&gt;POSITIVEONLY: funciona en combinación con NUMERIC y acepta el valor TRUE o FALSE.  Indica si el valor númerico será solo positivo o no.&lt;/li&gt;&lt;li&gt;DECIMALPOINT: funciona en combinación con NUMERIC, para establecer el punto decimal que se ha de aceptar.  Por omisión se acepta el punto.&lt;/li&gt;&lt;li&gt;DECIMALPLACES: funciona en combinación con NUMERIC y determina el número de decimales que se haceptarán.  Por omisión se aceptan 2.&lt;/li&gt;&lt;li&gt;EXCLUDECHAR: acepta una lista de caracteres que no serán aceptados en la entrada de datos.&lt;/li&gt;&lt;li&gt;INCLUDECHARONLY: acepta una lista de caracteres que serán los únicos aceptados.&lt;/li&gt;&lt;li&gt;SPANISHCHARS: acepta el valor TRUE o FALSE e indica si se han de aceptar los caracters españoles &lt;span style="font-style: italic;"&gt;áéíóúñ&lt;/span&gt; en la entrada de datos.&lt;/li&gt;&lt;li&gt;VALMIN: funciona en combinación con NUMERIC y establece el valor mínimo que se ha de aceptar.
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7591584996746317287?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7591584996746317287/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7591584996746317287' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7591584996746317287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7591584996746317287'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/08/objeto-javascript-para-controlar.html' title='Objeto Javascript para controlar objetos INPUT'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-1919958301693303671</id><published>2008-08-27T22:29:00.006-03:00</published><updated>2008-08-27T23:36:51.256-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Objeto Javascript para manipular ComboBox</title><content type='html'>&lt;p&gt;Hoy les acerco un objeto Javascript que permite manipular ComboBox de manera un tanto más sencilla y práctica&lt;/p&gt;
&lt;p&gt;Entre sus propiedades, éste permite:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Crear el combo a través de un par de métodos y con algunas propiedades, de manera dinámica.&lt;/li&gt;&lt;li&gt;Obtener el valor de la opción seleccionada, sus atributos y/o el texto de la opción.&lt;/li&gt;&lt;li&gt;Eliminar todas o algunas de las opciones.&lt;/li&gt;&lt;li&gt;Ordenar las opcines por su valor o por su texto identificatorio.&lt;/li&gt;&lt;li&gt;Seleccionar la opción del combo, basándose en el valor o el texto de la misma.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;El código:&lt;/p&gt;
&lt;div style="overflow: auto; height: 250px; width: 100%;"&gt;&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;/** Documento Javascript&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;Funciones para tratar objetos SELECT&lt;/span&gt;

&lt;span style="color: rgb(0, 0, 255);"&gt;Autor: Julio Gonzalez&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;Fecha: 22/08/2008&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;

$CB = &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;/* metodo interno */&lt;/span&gt;
__ctrlOBJ:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/span&gt; ob != &lt;span style="color: rgb(255, 0, 255);"&gt;'object'&lt;/span&gt; ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( ! ob ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* metodo interno */&lt;/span&gt;
__isArray:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; (ob != &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/span&gt; ob == &lt;span style="color: rgb(255, 0, 255);"&gt;"object"&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: rgb(255, 0, 255);"&gt;'splice'&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; ob &amp;amp;&amp;amp; &lt;span style="color: rgb(255, 0, 255);"&gt;'join'&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; ob);
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* metodo interno */&lt;/span&gt;
__isObject:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; (ob != &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/span&gt; ob == &lt;span style="color: rgb(255, 0, 255);"&gt;"object"&lt;/span&gt;);
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* metodo interno */&lt;/span&gt;
__getIndexByValue:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, val, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;arguments&lt;/span&gt;.length &amp;lt; 3) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; sensitive = &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; ve;
 val = (sensitive)?val:val.toLowerCase();
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=0, len=ob.length; i &amp;lt; len; i++)
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     ve = (sensitive)?ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.value:ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.value.toLowerCase();
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( ve == val ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; i; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* metodo interno */&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;/* seleccionar una opcion por el texto de la opcion */&lt;/span&gt;
__getIndexByText:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, txt, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;arguments&lt;/span&gt;.length &amp;lt; 3) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; sensitive = &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; ve;
 txt = (sensitive)?txt:txt.toLowerCase();
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=0, len=ob.length; i &amp;lt; len; i++)
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     ve = (sensitive)?ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.text:ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.text.toLowerCase();
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( ve == txt ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; i; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* elimina todos los elementos de un combo */&lt;/span&gt;
Clear:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob))  &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i = ob.length - 1; i &amp;gt;= 0; i--)
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; ob.remove(i);  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* borra una opcion buscandola por su value &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas */&lt;/span&gt;
DeleteOptionByValue:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, val, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__getIndexByValue(ob, val, sensitive);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(i==&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 ob.remove(i);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* borra una opcion buscandola por su value &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas  */&lt;/span&gt;
 DeleteOptionByText:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, txt, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__getIndexByText(ob, txt, sensitive);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(i==&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 ob.remove(i);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* retorna el texto de la opcion seleccionada */&lt;/span&gt;
TextSelectedOption:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob) || !&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.IsSelected(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;ob.selectedIndex&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.text;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* retorna el valor de la opcion seleccionada */&lt;/span&gt;
ValueSelectedOption:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob)   &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob) || !&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.IsSelected(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;ob.selectedIndex&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.value;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* retorna el objeto de la opcion seleccionada */&lt;/span&gt;
ObjectSelectedOption:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob) || !&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.IsSelected(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;ob.selectedIndex&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* retorna verdadero si el selectedIndex es &amp;gt; -1 */&lt;/span&gt;
IsSelected:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob)    &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; (ob.selectedIndex &amp;gt; -1);
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* seleccionar una opcion por la propiedad value de la opcion &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas  */&lt;/span&gt;
SelectByValue:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, val, sensitive)
&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__getIndexByValue(ob, val, sensitive);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(i==&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 ob.selectedIndex = i;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* seleccionar una opcion por el texto de la opcion &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas  */&lt;/span&gt;
SelectByText:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, txt, sensitive)
&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__getIndexByText(ob, txt, sensitive);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(i==&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 ob.selectedIndex = i;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* objeto para crear el objeto necesario en CreateHTMLCombo */&lt;/span&gt;
ComboObject:&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 __cb:&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;id:&lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;, name:&lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;, attr:&lt;span style="color: rgb(0, 128, 128);"&gt;[]&lt;/span&gt;, options:&lt;span style="color: rgb(0, 128, 128);"&gt;[]}&lt;/span&gt;,
 setID:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(v) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__cb.id=v; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,
 setName:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(v) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__cb.name=v; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,
 addSelectAttribute:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(v) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__cb.attr.push(v); &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,
 addOption:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(txt, aAtt) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; ob=&lt;span style="color: rgb(0, 128, 128);"&gt;{}&lt;/span&gt;;
     ob.text=txt;
     ob.attr=aAtt;
     &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__cb.options.push(ob);
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,
 getComboObject:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;() &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__cb; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* Crea el codigo html de un combo a partir de un obejto con la definicion de la etiqueta,&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        y un array de objeto con el contenido de las etiquetas option.&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        Datos del select&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        - attr  array de pares (attr=value) con atributos del objeto (incluyendo los del usuario)&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        - id        id del objeto select (obligatorio)&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        - name  name dentro del &amp;lt;form&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;

&lt;span style="color: rgb(0, 0, 255);"&gt;        Datos de los options (Array)&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        - text    texto de cada option&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        - attr  array de pares (attr=value) con atributos del objeto (incluyendo los del usuario)&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;    */&lt;/span&gt;
CreateHTMLCombo:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(oSelDef) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( !&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__isObject(oSelDef) ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; aOp = oSelDef.options;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( !&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__isArray(aOp) ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt;/* define el select */&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/span&gt; oSelDef.id != &lt;span style="color: rgb(255, 0, 255);"&gt;'string'&lt;/span&gt;) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; id = oSelDef.id.replace(&lt;span style="color: rgb(255, 0, 255);"&gt;/^\s+|\s+$/g&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;""&lt;/span&gt;);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/span&gt; oSelDef.name != &lt;span style="color: rgb(255, 0, 255);"&gt;'string'&lt;/span&gt; || oSelDef.name.length==0) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; oSelDef.name = id; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; htm = &lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;lt;select id="'&lt;/span&gt; + id + &lt;span style="color: rgb(255, 0, 255);"&gt;'" name="'&lt;/span&gt; + oSelDef.name + &lt;span style="color: rgb(255, 0, 255);"&gt;'"'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; aAttr = oSelDef.attr;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__isArray(aAttr) ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=0, len = aAttr.length; i &amp;lt; len; i++)
     &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
         &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; tmp = aAttr&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.split(&lt;span style="color: rgb(255, 0, 255);"&gt;'='&lt;/span&gt;);
         &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(tmp.length &amp;gt; 1) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
             htm.push(&lt;span style="color: rgb(255, 0, 255);"&gt;' '&lt;/span&gt; + tmp&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;0&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt; + &lt;span style="color: rgb(255, 0, 255);"&gt;'="'&lt;/span&gt; + tmp&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;1&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt; + &lt;span style="color: rgb(255, 0, 255);"&gt;'"'&lt;/span&gt;);
         &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
     &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 htm.push(&lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;gt;'&lt;/span&gt;);
     &lt;span style="color: rgb(0, 0, 255);"&gt;/* agrega los options */&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=0, len = aOp.length; i &amp;lt; len; i++)
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; op = aOp&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;;
     htm.push(&lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;lt;option'&lt;/span&gt;);
     &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; aAttr = op.attr;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__isArray(aAttr) ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
         &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; e=0, len2 = aAttr.length; e &amp;lt; len2; e++)
         &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
             &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; tmp = aAttr&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;e&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.split(&lt;span style="color: rgb(255, 0, 255);"&gt;'='&lt;/span&gt;);
             &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(tmp.length &amp;gt; 1) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
                 htm.push(&lt;span style="color: rgb(255, 0, 255);"&gt;' '&lt;/span&gt; + tmp&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;0&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt; + &lt;span style="color: rgb(255, 0, 255);"&gt;'="'&lt;/span&gt; + tmp&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;1&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt; + &lt;span style="color: rgb(255, 0, 255);"&gt;'"'&lt;/span&gt;);
             &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
         &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
         htm.push(&lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;gt;'&lt;/span&gt; + ((op.text)?op.text:&lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;) + &lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;lt;/option&amp;gt;'&lt;/span&gt;);
     &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 htm.push(&lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;lt;/select&amp;gt;'&lt;/span&gt;);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; htm.join(&lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;);
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* funcion interna */&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;/* acomoda un combo de acuerdo con el texto o el valor de sus options &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas  */&lt;/span&gt;
__SortBy:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, by, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__ctrlOBJ(ob) || !&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.IsSelected(ob)) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(!sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; sensitive=&lt;span style="color: rgb(255, 0, 255);"&gt;false&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; b = &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Array&lt;/b&gt;&lt;/span&gt;();
 &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; c = ob.getElementsByTagName(&lt;span style="color: rgb(255, 0, 255);"&gt;'option'&lt;/span&gt;);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; ( &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; c )
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
         b.push( &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; text:((by==&lt;span style="color: rgb(255, 0, 255);"&gt;'T'&lt;/span&gt;)?c&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.text:c&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.value),
                      node:ob&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.cloneNode(&lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;),
                      selected:ob&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.selected&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt; );
     &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/span&gt;(e) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;continue&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(sensitive)
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     b.sort(&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(opt1, opt2) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
         &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; opt1.text &amp;lt; opt2.text ? -1 : opt1.text &amp;gt; opt2.text ? 1 : 0;
     &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;);
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     b.sort(&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(opt1, opt2) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
         &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; opt1.text.toLowerCase() &amp;lt; opt2.text.toLowerCase() ? -1 :
                         opt1.text.toLowerCase() &amp;gt; opt2.text.toLowerCase() ? 1 : 0;
     &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;);
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.Clear(ob);
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; ( &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; c )
 &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
         &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; d = b.shift();
         ob.appendChild(d.node);
         &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(d.selected) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; ob.options&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;ob.options.length-1&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;.selected=&lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
     &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/span&gt;(e) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;continue&lt;/b&gt;&lt;/span&gt;; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,


&lt;span style="color: rgb(0, 0, 255);"&gt;/* acomoda un combo de acuerdo con el texto de sus options &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas  */&lt;/span&gt;
SortByText:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__SortBy(ob, &lt;span style="color: rgb(255, 0, 255);"&gt;'T'&lt;/span&gt;, sensitive);
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;,

&lt;span style="color: rgb(0, 0, 255);"&gt;/* acomoda un combo de acuerdo con el valor de sus options &lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;        sensitive (valor booleano) indica si la busqueda sera sensible a mayusculas/minusculas  */&lt;/span&gt;
SortByValue:&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(ob, sensitive) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.__SortBy(ob, &lt;span style="color: rgb(255, 0, 255);"&gt;'V'&lt;/span&gt;, sensitive);
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;p&gt;
Su uso es bien sencillo:
&lt;/p&gt;&lt;/p&gt;
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'j'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;


&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;button&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"button"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;onClick="&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;GenCombo&lt;/span&gt;()&lt;span style="color: rgb(106, 90, 205);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;Generar Combo&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;button&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;button&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"button"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;onClick="&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;sortCB&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'T'&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;Sort por text&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;button&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;button&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"button"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;onClick="&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;sortCB&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'V'&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;Sort por value&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;button&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;

&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;language&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"javascript"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;/* creacion del combo mediante javascript */&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;cb = $CB.ComboObject;&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;//id del select&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;cb.setID&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'myCbo'&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;;&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;//atributos de la etiqueta &amp;lt;select&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;cb.addSelectAttribute&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'class=prueba nodes'&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;cb.addSelectAttribute&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'size=5'&lt;/span&gt;)
&lt;span style="color: rgb(0, 0, 255);"&gt;//definicion de los options&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;cb.addOption&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'W 1'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'value=33'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'selected=true'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'style=background-color:red;'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;cb.addOption&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'a 1'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'value=11'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;cb.addOption&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'e 2'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'value=123'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;)

&lt;span style="color: rgb(0, 0, 255);"&gt;//ejemplo de creacion del combo&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; GenCombo&lt;/span&gt;()&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; j = $CB.CreateHTMLCombo&lt;/span&gt;(&lt;span style="color: rgb(106, 90, 205);"&gt;cb.getComboObject&lt;/span&gt;())
&lt;span style="color: rgb(106, 90, 205);"&gt;    cbo = &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.getElementById&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'j'&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;    cbo.innerHTML = j&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.getElementById&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'myCbo'&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;.onchange=mostrar;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(0, 0, 255);"&gt;//ejemplo de ordenacion de combo&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; sortCB&lt;/span&gt;(&lt;span style="color: rgb(106, 90, 205);"&gt;val&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;alert&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(106, 90, 205);"&gt;cbo.innerHTML&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;switch&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(106, 90, 205);"&gt;val&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'T'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;:&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;            $CB.SortByText&lt;/span&gt;(&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.getElementById&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'myCbo'&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'V'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;:&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;            $CB.SortByValue&lt;/span&gt;(&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.getElementById&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'myCbo'&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;true&lt;/span&gt;)&lt;span style="color: rgb(106, 90, 205);"&gt;;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;alert&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(106, 90, 205);"&gt;cbo.innerHTML&lt;/span&gt;)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; mostrar&lt;/span&gt;()
&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; ob = $CB.ObjectSelectedOption&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;alert&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(106, 90, 205);"&gt;ob.innerHTML&lt;/span&gt;)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;Pueden crear el combo mediante el uso de este objeto o pueden manipular uno existente en la página.&lt;/p&gt;&lt;p&gt;Personalmente, cuando se trata de combos dinámicos, cargo la página sin el combo y luego, mediante AJAX, busco el contenido del mismo y genero el combo dentro de un contenedor existente en la página, generalmente un SPAN.&lt;/p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-1919958301693303671?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/1919958301693303671/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=1919958301693303671' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1919958301693303671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1919958301693303671'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/08/objeto-javascript-para-manipular.html' title='Objeto Javascript para manipular ComboBox'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-591707728067940543</id><published>2008-08-18T19:40:00.002-03:00</published><updated>2008-08-18T19:52:59.244-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Serializar un DataSet a JSON</title><content type='html'>&lt;p&gt;Recientemente me encontre con la necesidad en ASP.NET de serializar un &lt;span style="font-style: italic;"&gt;DataSet &lt;/span&gt;para enviarlo, via AJAX, a un browser, para luego allí procesarlo convenientemente.&lt;/p&gt;
&lt;p&gt;Un buen compañero de trabajo, Leonardo Villalva, es el autor de un código en el viejo ASP, para serializar &lt;span style="font-style: italic;"&gt;ADO Recordset&lt;/span&gt; a formato JSON.  Basándome en ese código arme esta clase que permite hacer la misma tarea en .NET, y aquí la publico para compartirla con ustedes.&lt;/p&gt;

&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;


&lt;span style="color:#0000ff;"&gt;' ------------------------------------------------------------------&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;' Clase   : JSONSerializer&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;' Autor   : Julio González&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;' Fecha   : 14/07/2008&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;' ------------------------------------------------------------------&lt;/span&gt;
Imports Microsoft&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;VisualBasic
Imports System&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Data


Namespace JG
   &lt;span style="color:#804040;"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; Class JSONSerializer
      &lt;span style="color:#804040;"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; DataTableSerializer&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; dt &lt;span style="color:#804040;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataTable&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
         &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; JsonString &lt;span style="color:#804040;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; StringBuilder&lt;span style="color:#804040;"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
         &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; tmpR&lt;span style="color:#804040;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; tmpA &lt;span style="color:#804040;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; StringBuilder

        &lt;span style="color:#0000ff;"&gt; 'el objeto no existe o no tiene filas&lt;/span&gt;
         &lt;span style="color:#804040;"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; dt &lt;span style="color:#804040;"&gt;&lt;b&gt;Is&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Or&lt;/b&gt;&lt;/span&gt; dt&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Rows&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Count&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;0&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
            &lt;span style="color:#804040;"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;Empty&lt;/b&gt;&lt;/span&gt;
         &lt;span style="color:#804040;"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color:#0000ff;"&gt; 'serializo&lt;/span&gt;
         JsonString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"{"&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
         JsonString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"filas:["&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
         tmpA &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; StringBuilder
         &lt;span style="color:#804040;"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; f &lt;span style="color:#804040;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataRow &lt;span style="color:#804040;"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; dt&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Rows
            tmpA&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"{"&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
            tmpR &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; StringBuilder
            &lt;span style="color:#804040;"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; c &lt;span style="color:#804040;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataColumn &lt;span style="color:#804040;"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; dt&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Columns
               tmpR&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;c&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ColumnName &lt;span style="color:#804040;"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;":"""&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; f&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;c&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ColumnName&lt;span style="color:#804040;"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;ToString &lt;span style="color:#804040;"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;""","&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
            &lt;span style="color:#804040;"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
            tmpA&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;((&lt;/b&gt;&lt;/span&gt;tmpR&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Remove&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;((&lt;/b&gt;&lt;/span&gt;tmpR&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Length &lt;span style="color:#804040;"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;),&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)))&lt;/b&gt;&lt;/span&gt;
            tmpA&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"},"&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
         &lt;span style="color:#804040;"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
         JsonString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;tmpA&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Remove&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;((&lt;/b&gt;&lt;/span&gt;tmpA&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Length &lt;span style="color:#804040;"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;),&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;))&lt;/b&gt;&lt;/span&gt;
         JsonString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;Append&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"]}"&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

         &lt;span style="color:#804040;"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; JsonString&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString
      &lt;span style="color:#804040;"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
   &lt;span style="color:#804040;"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Class

&lt;span style="color:#804040;"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Namespace

&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Espero que les sea útil.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-591707728067940543?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/591707728067940543/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=591707728067940543' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/591707728067940543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/591707728067940543'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/08/serializar-un-dataset-json.html' title='Serializar un DataSet a JSON'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-5986122123248323167</id><published>2008-08-14T14:27:00.009-03:00</published><updated>2008-08-14T15:32:43.028-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Clase para acceder a la base de datos Oracle desde .NET</title><content type='html'>&lt;p&gt;Esta es una clase para ASP.NET, que trata de encapsular la conexión y las solicitudes a la base de datos Oracle, que es la que utilizo en mi trabajo.&lt;/p&gt;
&lt;p&gt;Tiene todos los métodos necesarios para solicitar QUERYS comunes, o ejecutar complejos Procedimientos Almacenados, incluso con la posibilidad de recibir uno o más &lt;span style="font-style: italic;"&gt;sys_refcursor&lt;/span&gt; como retorno.&lt;/p&gt;

El código:
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;' ------------------------------------------------------------------&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;' Clase   : DBConnector&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;' Autor   : Julio González&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;' Fecha   : 07/08/2007&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;' ------------------------------------------------------------------&lt;/span&gt;
Imports Microsoft&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;VisualBasic
Imports System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Data
Imports System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Data&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;OracleClient

Namespace JG

&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; ''' DBConnector&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt; '''&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt; ''' Conecta con una base de datos oracle utilizando&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt; ''' &lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; Class OraDBConnector
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' ParameterDef&lt;/span&gt;
   &lt;span style="color: rgb(0, 0, 255);"&gt; '''&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Estructura para pasar los datos de los parámetros de los procedimientos.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Los miembros de esta estructura llevan los nombre y tipos que debe&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' recibir la clase Parameters de Oracle&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;#&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; Structure ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleType
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; ParamSize &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDirection
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; ParamValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Object&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Structure

 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' String de conección a la base de datos&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; _strConn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Objeto Connection de Oracle&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; _conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleConnection
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Objeto Commander de Oracle que se utilirá para ejecutar procedimientos&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' y consultas&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; _Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Objeto DataAdapter de Oracle para convertir las consultas en DataSet&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; _DataAdapder &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleDataAdapter

 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Constructor de la clase&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_strConn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'New&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Establece o retorna la cadena de conexión utilizada&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;strConn&amp;gt;Cadena de conexión&amp;lt;/strConn&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Cadena de conexión&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Property&lt;/b&gt;&lt;/span&gt; dbConnectionString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Get&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; _strConn
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Get&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; strConn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        _strConn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; strConn
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Property&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'dbConnectionString&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Método para abrir la conexión con la base de datos&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Open&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_strConn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Length &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.dbConnect: No se estableció el conector"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'trata de conectar&lt;/span&gt;
     Try
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ConnectionString &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; _strConn
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Open&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Open&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.dbConnect: "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'Open&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Método para obtener el objeto Connection establecido.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Objeto conexión&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; ReadOnly &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Property&lt;/b&gt;&lt;/span&gt; getConnection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleConnection
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Get&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Get&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Property&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'getConnection&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Método para cerrar la conexión a la base de datos&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     Try
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; _conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Open&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
           _conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
           _conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'nada&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'Close&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'rellena un array list del usuario con parametros numericos&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; AddParameter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Object&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                                &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; Direction &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;= _&lt;/b&gt;&lt;/span&gt;
                                ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Input&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; p &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; p
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Number
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; Direction
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;IIf&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Is&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; DBNull&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; p
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'rellena un array list del usuario con parametros string&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; AddParameter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                                &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Size&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                                &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; Direction &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;= _&lt;/b&gt;&lt;/span&gt;
                                ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Input&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; p &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; p
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;VarChar
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; Direction
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamSize &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Size&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;IIf&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;IsNullOrEmpty&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;),&lt;/b&gt;&lt;/span&gt; DBNull&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; p
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'rellena un parametro para datos output por default&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; AddParameter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; p &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; p
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Output
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; p
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; AddParameter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Size&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;) _&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; p &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ParameterDef
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; p
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamSize &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Size&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Output
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; p
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;


 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta una sentencia SQL del tipo SELECT y retorna un objeto DataReader&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="selectQuery"&amp;gt;Sentencia SQL del tipo SELECT&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Objeto DataReader. En caso de error retorna NOTHING&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; QueryToReaderData&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _Reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader

     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el texto SQL&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandTimeout &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;90&lt;/span&gt;
        _Reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; _Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteReader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; _Reader
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.ReaderData: "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     Finally
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'QueryToReaderData&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta una sentencia SQL del tipo DELETE y retorna la cantidad de filas afectadas&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="deleteQuery"&amp;gt;Sentencia del tipo DELELE&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Un entero que representa la cantidad de filas afectadas.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' En caso de error retorna NOTHING&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Delete&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; deleteQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'controlo la sentencia&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;deleteQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"DELETE"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'ejecuto la consulta&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; recAfec &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
        recAfec &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ProcessExecuteNoQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;deleteQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; recAfec
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.Delete: "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; deleteQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'Delete&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta una sentencia SQL del tipo DELETE y retorna la cantidad de filas afectadas&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="insertQuery"&amp;gt;Sentencia del tipo INSERT&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Un entero que representa la cantidad de filas afectadas.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' En caso de error retorna NOTHING&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;Insert&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; insertQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valido el texto SQL&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;insertQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"INSERT"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valido la conexión&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; recAfec &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
        recAfec &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ProcessExecuteNoQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;insertQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; recAfec
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.Insert: "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'Insert&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Procedimiento privado para atender a los procedimientos públicos&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' DELETE e INSERT&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="strSQL"&amp;gt;Sentencia SQL a ejecutar&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Cantidad de filas afectadas&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; ProcessExecuteNoQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; strSQL &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; recAfec &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;strSQL&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; _conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandTimeout &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;90&lt;/span&gt;
        recAfec &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteNonQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; recAfec
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; strSQL &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     Finally
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta un query y retorna la primera columna de la primera fila&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="selectQuery"&amp;gt;Sentencia SQL a ejecutar&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Valor de la primera columna de la primera fila&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; ExecScalar&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'controlo la sentencia&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; _conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandTimeout &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;90&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; strResult &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
        strResult &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteScalar&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;().&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; strResult

     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.ExecScalar: "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     Finally
        _Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'ExecScalar&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta una sentencia del tipo SELECT y retorna un objeto DataTable&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="selectQuery"&amp;gt;Sentencia SQL a ejecutar&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Objeto DataTable con el resultado de la consulta&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; QueryToDataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataTable
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el texto SQL&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; myDataTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataTable
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_DataAdapder &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleDataAdapter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandTimeout &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;300&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Text
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_DataAdapder&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Fill&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;myDataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; myDataTable
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.FillDataTable: "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     Finally
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'QueryToDataTable&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta una sentencia del tipo SELECT y retorna un objeto DataSet&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="selectQuery"&amp;gt;Sentencia SQL a ejecutar&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Objeto DataSet con el resultado de la consulta&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; QueryToDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
               &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; srcTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"myTable"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el texto SQL&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; MyDataSet &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataSet
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_DataAdapder &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleDataAdapter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandTimeout &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;300&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Text
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_DataAdapder&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Fill&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;MyDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; srcTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; MyDataSet
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.FillDataSet: "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     Finally
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'QueryToDataSet&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Genera acumulacion de tablas en un mismo DataSet que el usuario debe pasar&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' como parámetro&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="selectQuery"&amp;gt;Sentencia SQL a ejecutar&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="srcTable"&amp;gt;Nombre de la tabla&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="myDataSet"&amp;gt;Objeto DataSet del usuario&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;Objeto DataSet con el resultado de la consulta&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; QueryToDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; srcTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; myDataSet &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el texto SQL&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'valida el estado de la conexión&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;selectQuery&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; _conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_DataAdapder &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleDataAdapter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandTimeout &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;300&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Text
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_DataAdapder&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Fill&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;myDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; srcTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.FillDataSet (vs): "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; selectQuery &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     Finally
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try

     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; myDataSet
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'QueryToDataSet&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta un procedimiento almacenado&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="CommandText"&amp;gt;Texto de invocación al procedimiento almacenado&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="Parameters"&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Objeto ArrayList conteniendo un objeto JG.OraDbConnector.ParameterDef&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' por cada parámetro que debe recibir el procedimiento almacenado.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="keyReader"&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Opcional: Clave de acceso al objeto DataReader&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Retorna un ojeto HashTable con el resultado de la ejecución.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Si el procedimiento almacenado tiene uno o más parámetros OUTPUT del tipo &lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' REF CURSOR, el objeto HashTable retornado contiene un elemento cuya clave es&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' _DR conteniendo un objeto OracleDataReader con todos los cursores.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' El resto de los elementos del objeto retornado son los parámetros de tipo&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' IN OUT o OUT (excepto los ref cursor). La clave de acceso a cada uno&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' de los elementos del HashTable es el nombre definido en ParamName.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' El objeto OracleDataReader contiene los REF CURSOR en el mismo orden en que se&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' pasaron los parametros de tipo OracleType.Cursor&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; ExecuteStoredProcedure&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; CommandText &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                      &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; Parameters &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ArrayList &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                      &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; keyReader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"_DR"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Hashtable
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _parameters &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ArrayList &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; Parameters
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _retVal &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; Hashtable
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _Reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader

     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandText &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandText
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;StoredProcedure
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Connection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; j &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; StringBuilder
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; i &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'ejecuto el procedimiento&lt;/span&gt;
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'agrego los parámetros&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;AddParameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;_parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; i &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;To&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Count&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;
              j&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Append&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;ParameterName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;": "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;Direction &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" // "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt; i
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;

        _Reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteReader
        _retVal&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;keyReader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; _Reader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'agrego los refcursor a la tabla&lt;/span&gt;
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.ExecuteStoredProcedure: "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; CommandText &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;") "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; j&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'asigno los parámetros&lt;/span&gt;

     Try
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; _parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Count&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; param &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; _parameters
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; param
                 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;InputOutput &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Or _&lt;/b&gt;&lt;/span&gt;
                    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Output &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
                    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;lt;&amp;gt;&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Cursor &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
                       _retVal&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
                    &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
                 &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;

        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.ExecuteStoredProcedure: "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try

     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; _retVal
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'ExecuteStoredProcedure&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Ejecuta una función almacenado&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="CommandText"&amp;gt;Texto de invocación al procedimiento almacenado&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="Parameters"&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Objeto ArrayList conteniendo un objeto JG.OraDbConnector.ParameterDef&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' por cada parámetro que debe recibir el procedimiento almacenado.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Retorna un ojeto HashTable con el resultado de la ejecución.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Si el procedimiento almacenado tiene uno o más parámetros OUTPUT del tipo &lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' REF CURSOR, el objeto HashTable retornado contiene un elemento cuya clave es&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' _DR conteniendo un objeto OracleDataReader con todos los cursores.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' El resto de los elementos del objeto retornado son los parámetros de tipo&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' IN OUT o OUT (excepto los ref cursor). La clave de acceso a cada uno&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' de los elementos del HashTable es el nombre definido en ParamName.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' El objeto OracleDataReader contiene los REF CURSOR en el mismo orden en que se&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' pasaron los parametros de tipo OracleType.Cursor&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; ExecuteStoredFunction&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; CommandText &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; Parameters &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ArrayList&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Hashtable
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; __nomObj &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"DBConnector.ExecuteStoredFunction: "&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _parameters &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ArrayList &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; Parameters
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _retVal &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; Hashtable
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; _Reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; outParams &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;

    &lt;span style="color: rgb(0, 0, 255);"&gt; 'verifico cuantos parámetros return_value hay&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; param &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; _parameters
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; param
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ReturnValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
              outParams &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; outParams &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'controlo que sólo se pase un parámetro return_value&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; outParams &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;__nomObj &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"No se incluyó el parámetro RETURN_VALUE."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; outParams &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;__nomObj &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"Se incluyó más de un parámetro RETURN_VALUE."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;

    &lt;span style="color: rgb(0, 0, 255);"&gt; 'ejecuto el procedimiento&lt;/span&gt;
     Try
       &lt;span style="color: rgb(0, 0, 255);"&gt; 'parámetros del comando&lt;/span&gt;
        _Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OracleCommand&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; _Comm
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandText &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandText
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;CommandType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CommandType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;StoredProcedure
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Connection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; _conn
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;

       &lt;span style="color: rgb(0, 0, 255);"&gt; 'agrego los parámetros de la función&lt;/span&gt;
        AddParameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;_parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        _Reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; _Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteReader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        _retVal&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"_DR"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; _Reader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'agrego los refcursor a la tabla&lt;/span&gt;
     Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;__nomObj &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;" ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; CommandText &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        _Comm &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'asigno el valor de retorno&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; param &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; _parameters
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; param
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Input&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Or _&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Output &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Or _&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ReturnValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;lt;&amp;gt;&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Cursor &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
                 _retVal&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; _Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; _retVal
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt; 'ExecuteStoredFunction&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Asigna los parametros a un objeto OracleCommander&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="Parameters"&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Objeto ArrayList que contiene los parámetros a asignar al&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' objeto OracleCommand&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; AddParameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; Parameters &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ArrayList&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; Parameters &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Is&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Count&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;

     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; param &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; ParameterDef &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; Parameters
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; param
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Cursor &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;And&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;lt;&amp;gt;&lt;/b&gt;&lt;/span&gt; ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Output &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
              Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"(AddParameters): Se ha definido un tipo de parámetro "&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt; _&lt;/b&gt;&lt;/span&gt;
                  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"CURSOR cuya dirección no es OUT ("&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;")"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamSize &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;lt;&amp;gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Size&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamSize
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamValue IsNot &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamValue
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;lt;&amp;gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
              &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_Comm&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Parameters&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(.&lt;/b&gt;&lt;/span&gt;ParamName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;Direction &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection
           &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Controla si la conexión esta activa&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Esta función previene de cortes de conexión.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; ValidateConnecton&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Is&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"No se estableció la conexión con la base de datos."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Broken &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"Se ha perdido la conexión con la base de datos."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Closed &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"La conexión con la base de datos está cerrada."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Connecting &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Or _&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Executing &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Or _&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;_conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;State &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConnectionState&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Fetching &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"La conexión a la base de datos está ocupada."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Corrobora si la sentencia SQL es del tipo esperado.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="sqlString"&amp;gt;Sentencia SQL a controlar&amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;param name="typeSQL"&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Opcional. Tipo de sentencia esperado. Por omisión: SELECT.&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/param&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;returns&amp;gt;La sentencia SQL enviada sin espacios en blanco irrelevantes&amp;lt;/returns&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; CheckSQLString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; sqlString &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                   &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; typeSQL &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"SELECT"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'verifico que venga el dato y que sea un SQL DELETE&lt;/span&gt;
     sqlString &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;Trim&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;sqlString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; sqlString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Length &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"La sentencia SQL está vacía."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; sqlString
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Not&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;UCase&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;sqlString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;StartsWith&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;typeSQL&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
        Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"La sentencia SQL no es del tipo esperado."&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; sqlString
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; sqlString
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Previene el no cierre de la base de datos al morir el objeto conxión&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  Protected Overrides &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; Finalize&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     MyBase&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Finalize&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'Finalize&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; '-----------------------&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' Convierte un DataReader en un DataSet&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;/summary&amp;gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt; ConvertDataReaderToDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; reader &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; dataSet &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; schemaTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; reader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;GetSchemaTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; dataTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataTable &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; intCounter &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;

     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; intCounter &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;To&lt;/b&gt;&lt;/span&gt; schemaTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Rows&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Count&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; dataRow &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataRow &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; schemaTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Rows&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;intCounter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; columnName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; CType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;dataRow&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"ColumnName"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;),&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; column &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataColumn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataColumn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;columnName&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;, _&lt;/b&gt;&lt;/span&gt;
                                CType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;dataRow&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"DataType"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;),&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;))&lt;/b&gt;&lt;/span&gt;
        dataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Columns&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;column&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;

     dataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Tables&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;dataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;While&lt;/b&gt;&lt;/span&gt; reader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Read&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; dataRow &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataRow &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; dataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;NewRow&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; intCounter &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;To&lt;/b&gt;&lt;/span&gt; reader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;FieldCount &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;
           dataRow&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;intCounter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; reader&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;GetValue&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;intCounter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
        dataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Rows&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;dataRow&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;While&lt;/b&gt;&lt;/span&gt;

     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/span&gt; dataSet
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Class &lt;span style="color: rgb(0, 0, 255);"&gt; 'DBConnector&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Namespace
&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ejemplos:&lt;/p&gt;
&lt;p&gt;Este ejemplo muestra como ejecutar una consulta simple.  Se trata de una página que tiene un &lt;span style="font-style: italic;"&gt;TEXTAREA&lt;/span&gt;, donde el usuario escribe o pega una consulta, la que es ejecutada por la clase que conecta con la base.&lt;/p&gt;
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;
Imports JG
Imports System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Data
Imports System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Threading
Imports System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Globalization

Partial Class _Default
Inherits System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Web&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;UI&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Page

&lt;span style="color: rgb(0, 0, 255);"&gt;    'ejecuta una sentencia sql capturade del input SQLScript de la pagina.&lt;/span&gt;
Protected &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; EjecutaCodigo&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; Sql &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; SQLScript&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OraDBConnector&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; table &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataTable
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'ServidorDestino es un combo que tiene como Value, la clave de cadena de conexion&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; destConn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ServidorDestino&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;SelectedItem&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Value&lt;/span&gt;

  Try
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'rescata la cadena de conexion desde el archivo web.config&lt;/span&gt;
     conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;dbConnectionString &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ConfigurationManager&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;AppSettings&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Item&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;destConn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;).&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Open&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;lblError&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Text &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  Try
    &lt;span style="color: rgb(0, 0, 255);"&gt; 'ejecuta la sentencia sql, que es devuelta en un DataTable&lt;/span&gt;
     table &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;QueryToDataTable&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;Sql&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
  Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;lblError&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Text &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ToString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
  Finally
     conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; table&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Rows&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Count&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;lblError&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Text &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"No hay filas para la consulta dada."&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'agrega el data table a un GridView&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;gvDatos
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;DataSource &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; table
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;DataBind&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
  btCSV&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Visible &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;True&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;

&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Class
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Este ejemplo muestra como ejecutar un procedimiento almacena en la base que, en este caso, retorna un &lt;span style="font-style: italic;"&gt;sys_refcursor&lt;/span&gt;.&lt;/p&gt;
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&gt;&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;'----------------------------------------&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;'rellena un combo con usuarios&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; RellenarComboUsuarios&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OraDBConnector

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'apertura de la conexion&lt;/span&gt;
  Try
     conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; AbrirConexionBD&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
     Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'parametros del paquete&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; arr &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ArrayList
  arr&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;AddParameter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"pv_mca_habilitados"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"S"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;))&lt;/b&gt;&lt;/span&gt;
  arr&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;AddParameter&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"rv_cursor"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Cursor&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;))&lt;/b&gt;&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'ejecuta el procedimiento&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; htProc &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Hashtable
  htProc &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteStoredProcedure&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;( _&lt;/b&gt;&lt;/span&gt;
           &lt;span style="color: rgb(255, 0, 255);"&gt;"pk_net_art_traslados_admin.User_Enum_Usuarios"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; arr&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; ODR &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader
  ODR &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; htProc&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"_DR"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'obtengo el OracleDataReader con el cursor&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Not&lt;/b&gt;&lt;/span&gt; ODR&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;HasRows &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
     conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'asigno las filas al combo&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; ds &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet
  ds &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ConvertDataReaderToDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;ODR&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
  conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; ddlUsuarios
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;DataSource &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; ds
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;DataTextField &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"nombre"&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;DataValueField &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"cod_user"&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;DataBind&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Items&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Insert&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ListItem&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"Seleccione"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;))&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
  ddlUsuarios&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;SelectedIndex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;5&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'RellenarComboUsuarios&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Este ejemplo es similar al anterior, pero muestra otra forma de informar los parámetros del procedimiento almacenado.&lt;/p&gt;
&lt;div style="overflow: auto; width: 100%; height: 250px;"&gt;
&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;'lee los menues por perfil&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; BuscarMenuesPorPerfil&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; perfil &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; conn &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OraDBConnector&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; sContext &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; SiteContext&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;Request&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Url&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Host&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; connStr &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; usr &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; User&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Identity&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'apertura de la conexion&lt;/span&gt;
  Try
     connStr &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; sContext&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;GetDBConnectionString&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
     conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;dbConnectionString &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; connStr
     conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Open&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
  Catch ex &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Exception
     Throw &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Exception&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"BuscarMenuesPorPerfil: "&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; ex&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Message&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; Try

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'busco los datos del usuario&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; param &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; OraDBConnector&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParameterDef
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; arr &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; ArrayList

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'codigo del perfil&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; param
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"pv_cod_perfil"&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamSize &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;10&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Number
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; perfil
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
  arr&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;param&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'cursor que retorna el paquete&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; param
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamName &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;"rv_cursor"&lt;/span&gt;
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamType &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; OracleType&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Cursor
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamDirection &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; Data&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParameterDirection&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;Output
     &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ParamValue &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Nothing&lt;/b&gt;&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt;
  arr&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;param&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'ejecuta el procedimiento&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; htProc &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; Hashtable
  htProc &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ExecuteStoredProcedure&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"pk_net_art_traslados_menu.Menues_Por_Perfil_Admin"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; arr&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; ODR &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; OracleDataReader
  ODR &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; htProc&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"_DR"&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; 'obtengo el OracleDataReader con el cursor&lt;/span&gt;

 &lt;span style="color: rgb(0, 0, 255);"&gt; 'relleno el campo oculto ds_hide&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; ds &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataSet
  ds &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;ConvertDataReaderToDataSet&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;ODR&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
  conn&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Close&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color: rgb(0, 0, 255);"&gt; 'muestro el treeview&lt;/span&gt;
  RellenaTreeView1&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;ds&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;El archivo con el código puede ser bajado desde &lt;a href="http://code.google.com/p/oradbconnector/"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-5986122123248323167?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/5986122123248323167/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=5986122123248323167' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5986122123248323167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5986122123248323167'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/08/clase-para-acceder-la-base-de-datos.html' title='Clase para acceder a la base de datos Oracle desde .NET'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-3380987145872938655</id><published>2008-08-14T13:49:00.007-03:00</published><updated>2008-08-14T15:35:43.207-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><title type='text'>Redireccionador de FORMS con imagen de espera</title><content type='html'>&lt;p&gt;Esta es una humilde contribución.  Un código que se le puede ocurrir a cualquier principiante, pero que para mi es de mucha utilidad.&lt;/p&gt;&lt;p&gt;Se trata de una pequeña página hecha en ASP que puede ser llamada desde cualquier formulario, o enlace, que tomará el contenido de los objetos &lt;span style="font-weight: bold;"&gt;FORM &lt;/span&gt;o &lt;span style="font-weight: bold;"&gt;QUERYSTRING &lt;/span&gt;del objeto &lt;span style="font-weight: bold;"&gt;REQUEST&lt;/span&gt; de la presente solicitud, mostrará un mensaje de espera y redireccionará la petición a la página deseada.&lt;/p&gt;&lt;p&gt;Para lograr esto, debemos incluir un parámetro adicional en la solicitud: _&lt;span style="font-weight: bold;"&gt;dest&lt;/span&gt;, que es donde se informará cual es el verdadero destino de la solicitud.&lt;/p&gt;&lt;p&gt;El código:&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="overflow:auto;width:100%;height:250px"&gt;
&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%&lt;/span&gt;
metodo = &lt;span style="color: rgb(255, 0, 255);"&gt;"get"&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;Len&lt;/span&gt;(Request.Form) &amp;gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
   metodo = &lt;span style="color: rgb(255, 0, 255);"&gt;"post"&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;html&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;head&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;head&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;body&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;center&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;style&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"padding-top:100px"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;span&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;Aguarde un instante, por favor...&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;span&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color: rgb(106, 90, 205);"&gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;img&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;src&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"../../img/wait30.gif"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;center&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; metodo = &lt;span style="color: rgb(255, 0, 255);"&gt;"get"&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;language&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"javascript"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"text/javascript"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;self&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;location&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.replace&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%=&lt;/span&gt; Request.QueryString(&lt;span style="color: rgb(255, 0, 255);"&gt;"_dest"&lt;/span&gt;) &lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;?&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%=&lt;/span&gt; Request.QueryString &lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'&lt;/span&gt;)
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Else&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;
   &lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;form&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;method&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'post'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;action&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%=&lt;/span&gt; Request.Form(&lt;span style="color: rgb(255, 0, 255);"&gt;"_dest"&lt;/span&gt;) &lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%&lt;/span&gt;
   aParams = &lt;span style="color: rgb(0, 128, 128);"&gt;Split&lt;/span&gt;(Request.Form, &lt;span style="color: rgb(255, 0, 255);"&gt;"&amp;amp;"&lt;/span&gt;)
   &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; x = &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt; To &lt;span style="color: rgb(0, 128, 128);"&gt;Ubound&lt;/span&gt;(aParams)
       aParam = &lt;span style="color: rgb(0, 128, 128);"&gt;Split&lt;/span&gt;(aParams(x), &lt;span style="color: rgb(255, 0, 255);"&gt;"="&lt;/span&gt;)
&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;
       &lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%=&lt;/span&gt;aParam(&lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;) &lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"hidden"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%=&lt;/span&gt;Server.URLEncode(aParam(&lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;))&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; /&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%&lt;/span&gt;
   &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;
   &lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;form&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;language&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'javascript'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.forms&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;[&lt;/span&gt;0&lt;span style="color: rgb(0, 128, 128);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;.submit&lt;/span&gt;()&lt;span style="color: rgb(106, 90, 205);"&gt;;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;&amp;lt;%&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/span&gt;
&lt;span style="color: rgb(106, 90, 205);"&gt;%&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;body&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;html&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-3380987145872938655?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/3380987145872938655/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=3380987145872938655' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3380987145872938655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3380987145872938655'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/08/redireccionador-de-forms-con-imagen-de.html' title='Redireccionador de FORMS con imagen de espera'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7117122658342051342</id><published>2008-07-29T16:29:00.013-03:00</published><updated>2008-07-29T17:51:20.653-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox y los rangos de texto (textRange)</title><content type='html'>&lt;p&gt;Estoy preparando un objeto para poder controlar las entradas de texto en los &lt;span style="font-weight: bold;"&gt;InputBox&lt;/span&gt; (de hecho ya lo tenía en una antigua librería javascript) mediante &lt;a href="http://web-ar.blogspot.com/2007/05/expresiones-regulares-en-javascript.html"&gt;Expresiones Regulares&lt;/a&gt;, de modo de achicar un tanto el tamaño de la anterior, pero, además, para que me sirva de base para un futuro control de usuario web para ASP.NET, con el que estoy comenzando a trabajar.&lt;/p&gt;&lt;p&gt;El objeto en cuestión debe controlar distintos tipos de entradas: texto, caracteres especiales, fechas, números, etc.  Todo esto para no tener que validar esto en el servidor y evitar los molestos retornos por errores del usuario a la hora de llenar un formulario.&lt;/p&gt;&lt;p&gt;Cuando lo tenga listo, lo subiré a este blog, para que ustedes lo "destrocen" a gusto.  Pero no tengan muchas esperanzas, porque como dijera más arriba, este objeto se basa en una librería anterior que tengo, que tiene unos cuantos años de uso, lo que siempre garantiza que se le han pulido bien los errores.  Pero siempre los hay.&lt;/p&gt;&lt;p&gt;El tema en cuestión de este artículo es que se me presentó un inconveniente en el momento de que mi evento &lt;span style="font-style: italic; font-weight: bold;"&gt;keypress&lt;/span&gt; retornaba falso porque se había detectado que, por ejemplo, el caracter que estaba ingresando estaba fuera de lo permitido.  Entonces "pinte" el texto e intenté reemplazar de un plumazo todo lo seleccionado.&lt;/p&gt;&lt;p&gt;Grande fue mi sorpresa al ver que el caracter que intentaba reemplazar lo seleccionado no era tomado, puesto que el evento &lt;span style="font-style: italic;"&gt;keypress&lt;/span&gt; seguía rechazándolo.&lt;/p&gt;&lt;p&gt;Investigando un poco, pues di con la solución &lt;span style="font-weight: bold;"&gt;IE&lt;/span&gt;: antes de controlar el nuevo caracter ingresado, debía averiguar si el texto anterior estaba seleccionado total o parcialmente y borrar el &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;rango&lt;/span&gt;&lt;/span&gt; que el usurio había pintado.  Como se hace esto en IE:&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;pre&gt;
&lt;span&gt;if(Browser.IE) {
if (document.selection.type == "Text") {
var tr = document.selection.createRange();
tr.text = "";
}
}&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Browser.IE&lt;/span&gt; es un objeto que me devuelve &lt;span style="font-style: italic;"&gt;true&lt;/span&gt; si el navegador en Internet Explorer.  &lt;span style="font-weight: bold;"&gt;document.selection&lt;/span&gt; es el objeto que contiene la selección que hemos hecho, cuya propiedad &lt;span style="font-style: italic;"&gt;type&lt;/span&gt; tiene como valor &lt;span style="font-weight: bold;"&gt;None&lt;/span&gt; si no se ha seleccionado nada, o &lt;span style="font-weight: bold;"&gt;Text&lt;/span&gt; si se ha seleccionado texto, que es lo que nos ocupa.&lt;/p&gt;&lt;p&gt;Pues bien, creamos un objeto &lt;span style="font-weight: bold;"&gt;textRange&lt;/span&gt; mediante el método &lt;span style="font-weight: bold;"&gt;createRange&lt;/span&gt; del objeto &lt;span style="font-style: italic;"&gt;selection&lt;/span&gt; (en el ejemplo caso &lt;span style="font-style: italic;"&gt;tr&lt;/span&gt;) y podemos manipularlo a gusto.&lt;/p&gt;&lt;p&gt;Pero mis penas empezaron al tratar de emular este comportamiento en Firefox, no porque fuera difícil, sino por la carencia de documentación al respecto.  Y, tal como vengo haciendo en este blog, acá les dejo el "cómo se hace", por si alguno de ustedes tiene este inconveniente:&lt;/p&gt;
&lt;pre&gt;
&lt;span style="font-family:monospace;"&gt;
if(obj.selectionStart &lt; obj.selectionEnd) {
   if(String(noChar).search('37|39') == -1) {
     window.getSelection().collapseToStart()
   }
}
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;obj&lt;/span&gt; es el objeto que estoy validando (&lt;span style="font-weight: bold;"&gt;input&lt;/span&gt;).  &lt;span style="font-weight: bold;"&gt;selectionStart&lt;/span&gt; contiene la posición inicial del "pintado" que, cuando no se está pintando el texto, tiene el mismo valor que &lt;span style="font-weight: bold;"&gt;selectionEnd&lt;/span&gt;.  Por último, para borrar el texto seleccionada, basta con ejecutar el método &lt;span style="font-weight: bold;"&gt;collapseToStart&lt;/span&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7117122658342051342?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7117122658342051342/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7117122658342051342' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7117122658342051342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7117122658342051342'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/07/firefox-y-los-rangos-de-texto-textrange.html' title='Firefox y los rangos de texto (textRange)'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-3199361162589854792</id><published>2008-05-27T12:26:00.002-03:00</published><updated>2008-05-27T12:38:24.043-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Servidor web ASP.NET sin IIS (VS 2008)</title><content type='html'>&lt;p&gt;Esta nota es complemento de la anterior, &lt;a href="http://web-ar.blogspot.com/2007/07/servidor-web-aspnet-sin-iis.html"&gt;Servidor web ASP.NET sin IIS&lt;/a&gt;, pero en relación con la nueva versión de Visual Studio 2008.  Lo que expresa ese artículo sigue siendo posible, sólo que el programa &lt;span style="font-weight: bold;"&gt;webdev.webserver.exe&lt;/span&gt; fue cambiado de ubicación.&lt;/p&gt;&lt;p&gt;En VS2008 el servidor se encuentra en &lt;span style="font-style: italic;"&gt;Program Files\Common Files\Microsoft Shared\DevServer\9.0\.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-3199361162589854792?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/3199361162589854792/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=3199361162589854792' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3199361162589854792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3199361162589854792'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/05/servidor-web-aspnet-sin-iis-vs-2008.html' title='Servidor web ASP.NET sin IIS (VS 2008)'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-5574992752730164644</id><published>2008-04-14T12:47:00.002-03:00</published><updated>2008-04-14T12:59:03.818-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Objeto String de Javascript - Extensiones útiles</title><content type='html'>&lt;p&gt;Recopilando un poco de funciones que tenía por aquí y por allá, más algunas otras encotradas en la web, de personas que se las han ingeniado para extender el magro objeto &lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;String&lt;/span&gt;&lt;/span&gt; de Javascript, les dejo aquí el código fuente de algunas utilidades añadidas al objeto origial.  Espero les sean útiles.  Y si tienen sugerencias, por favor acerquen el código para compartir con todos.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.left = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(n)&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Devuelve los n primeros caracteres de la cadena&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(n&amp;gt;s.length) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      n=t.length
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s.substring(0, n)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.right = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(n)&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Devuelve los n últimos caracteres de la cadena&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; t=s.length

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(n&amp;gt;t) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      n=t
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s.substring(t-n, t)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.mid = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(n, c)&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Devuelve una cadena desde la posición n, con c caracteres&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Si c = 0 devolver toda la cadena desde la posición &lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()

  &lt;span style="color: rgb(0, 0, 255);"&gt;// Si sólo se pasan los dos primeros argumentos&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;arguments&lt;/span&gt;.length&amp;lt;2) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      c=s.length-n+1
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(c&amp;lt;1) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      c=s.length-n+1
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(n+c &amp;gt;s.length) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
     c=s.length-n+1
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(n&amp;gt;s.length) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;""&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s.substring(n-1,n+c-1)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.lTrim = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;()&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Devuelve una cadena sin los espacios del principio&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( s.length == 0 ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( s == &lt;span style="color: rgb(255, 0, 255);"&gt;' '&lt;/span&gt; ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(0, 0, 255);"&gt;// Busca el primer caracter &amp;lt;&amp;gt; de un espacio&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=0; i&amp;lt;=s.length-1; i++)
  &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(s.substring(i,i+1) != &lt;span style="color: rgb(255, 0, 255);"&gt;' '&lt;/span&gt;)
      &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
          &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; j=i
          &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s.substring(j, s.length)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.rTrim = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;()&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Quita los espacios en blanco del final de la cadena&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; j=0

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( s.length == 0 ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;( s == &lt;span style="color: rgb(255, 0, 255);"&gt;' '&lt;/span&gt; ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(0, 0, 255);"&gt;// Busca el último caracter &amp;lt;&amp;gt; de un espacio&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=s.length-1; i&amp;gt;-1; i--) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(s.substring(i,i+1) != &lt;span style="color: rgb(255, 0, 255);"&gt;' '&lt;/span&gt;)
      &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
          j=i
          &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s.substring(0, j+1)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.trim = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;()&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Quita los espacios del principio y del final&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; s.replace(&lt;span style="color: rgb(255, 0, 255);"&gt;/^\s+|\s+$/g&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;""&lt;/span&gt;)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.strReverse = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;()&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// Invierte la cadena&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; s = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString()
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; i=s.length
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; t=&lt;span style="color: rgb(255, 0, 255);"&gt;""&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt;(i&amp;gt;-1)&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      t=t+ s.substring(i,i+1)
      i--
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; t
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.contains = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(t) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;//verdadero si el string contiete el contenido de t&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; (&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.indexOf(t) &amp;gt;= 0)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.countOf = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;(&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;char&lt;/b&gt;&lt;/span&gt;) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;// cuanta las ocurrencias de un string dentro de este&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; count = 0
  &lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; len = &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.toString.length

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;char&lt;/b&gt;&lt;/span&gt;.length &amp;gt; len) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; 0 &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; (i = 0; i &amp;lt; len; i++) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
      (&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.charAt(i)==&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;char&lt;/b&gt;&lt;/span&gt;) ? count++ : &lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;
  &lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;

  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; count
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;


&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.prototype.numberPart = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt;() &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
  &lt;span style="color: rgb(0, 0, 255);"&gt;//retorna la parte numerica de un string alfanumerico&lt;/span&gt;
  &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.replace(&lt;span style="color: rgb(255, 0, 255);"&gt;/[^0-9|.|-]/g&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
&lt;/span&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-5574992752730164644?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/5574992752730164644/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=5574992752730164644' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5574992752730164644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5574992752730164644'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/04/objeto-string-de-javascript-extensiones.html' title='Objeto String de Javascript - Extensiones útiles'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-6286181622386979725</id><published>2008-04-14T11:33:00.005-03:00</published><updated>2008-04-14T12:46:11.033-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Copiar fechas con Javascript</title><content type='html'>&lt;p&gt;Un error común al trabajar con fechas en Javascript es copiar un objeto &lt;span style="font-weight: bold; font-style: italic;"&gt;Date&lt;/span&gt; creado en una variable a otra.
&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; aa = &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/span&gt;(2007,0,31) &lt;span style="color: rgb(0, 0, 255);"&gt;//31/01/2007&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; bb = aa
bb.setFullYear(2009)  &lt;span style="color: rgb(0, 0, 255);"&gt;//esto modifica aa&lt;/span&gt;
&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;document&lt;/b&gt;&lt;/span&gt;.write(aa) &lt;span style="color: rgb(0, 0, 255);"&gt;// Sat Jan 31 2009 00:00:00&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Si, como se ve en el ejemplo, se instancia el objeto Date en la variable &lt;span style="font-style: italic;"&gt;aa&lt;/span&gt; al copiar ésta a la variable &lt;span style="font-style: italic;"&gt;bb&lt;/span&gt;, no se estará creando una nueva instanacia del objeto Date, sino que se estará creando una referencia al objeto instanciado en &lt;span style="font-style: italic;"&gt;aa&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;Para evitar esto y hacer lo que realmente se quería hacer, tener una nueva instancia del objeto Date en la variable &lt;span style="font-style: italic;"&gt;bb&lt;/span&gt; con la fecha almacenada en la variable &lt;span style="font-style: italic;"&gt;aa&lt;/span&gt;, se debe efectivamente utilizar el objeto Date.
&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family:monospace;"&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; bb = &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/span&gt;(aa.getFullYear(), aa.getMonth(), aa.getDate())&lt;/span&gt;&lt;/pre&gt;
&lt;p style="text-align: left;"&gt;Pero también, de manera más sencilla, podemos utilizar el método del objeto Date &lt;span style="font-style: italic;"&gt;getTime,&lt;/span&gt; que nos devuelve la cantidad de milisegundos que hubieron desde el 01/01/1970 hasta la fecha almacenada en la variable &lt;span style="font-style: italic;"&gt;aa&lt;/span&gt;.
&lt;/p&gt;
&lt;pre&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; bb = &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/span&gt;(aa.getTime())&lt;/pre&gt;
&lt;p&gt;De esta manera, mantenemos también la información de hora, minutos y segundos que hubiera almacenado en la instancia del objeto en &lt;span style="font-style: italic;"&gt;aa&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;Adicionalmente, les dejo aquí el código necesario para extender el objeto Date para crear el método &lt;span style="font-style: italic;"&gt;copy&lt;/span&gt;, que lleve adelante la tarea explicada.&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/span&gt;.prototype.copy = &lt;span style="color: rgb(0, 128, 128);"&gt;function&lt;/span&gt; () &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;this&lt;/span&gt;.getTime())&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;
//ejemplo&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;
var&lt;/span&gt; a1 = &lt;span style="color: rgb(128, 64, 64);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/span&gt;()&lt;span style="color: rgb(0, 128, 128);"&gt;
var&lt;/span&gt; a2 = a1.copy()&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-6286181622386979725?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/6286181622386979725/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=6286181622386979725' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6286181622386979725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6286181622386979725'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/04/copiar-fechas-con-javascript.html' title='Copiar fechas con Javascript'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-4163799423492144164</id><published>2008-03-16T21:21:00.004-03:00</published><updated>2008-03-16T22:09:08.738-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='mySQL'/><title type='text'>PHP, mySQL, UTF-8 y la madre que los...</title><content type='html'>&lt;p&gt;Ustedes sabrán disculpar el exabrupto del título, pero recien acabo de terminar de solucionar un problema que, por lo que he visto en Internte mientras buscaba informanción para lograrlo, afecta a mucha gente y hay cientos, miles de soluciones, pero ninguna me funcionaba... Y la solución era bien simple.&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;El problema&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Estoy creando un sitio basado en PHP, el servidor Apache 2.2 y como soporte de base de datos mySQL.  También utilizo la tecnología AJAX, y es aquí donde comienzan mis problemas.  Como ustedes quizás sepan los objetos que se utilizan para comunicarse con el servidor mediante AJAX, utilizan distintos grupos de caracteres dependiendo si la comunicación se realiza vía POST o vía GET.  Y, para complicarlo aún más, si utilizas el método GET, Firefox utiliza un conjunto distinto a IE.  Pero ambos coinciden en utilizar UTF-8 cuando usas el método POST.  Entonces: ¡A utilizar POST! me dije.&lt;/p&gt;&lt;p&gt;Claro, para eso tienes que setear todo como UTF-8, inclusive tus archivos .js deben grabarse en format UTF-8 o tus &lt;span style="font-style: italic;"&gt;alerts&lt;/span&gt; no se verán bien si utilizas acentos o ñ's.
&lt;/p&gt;&lt;p&gt;Hay que tener en cuenta que el conjunto de caracteres por omisión de mySQL es LATIN1, entonces tienes que setear el archivo de inicialización (my.ini o my.cnf) para que la base trabaje con UTF-8.  En el apartado &lt;span style="font-weight: bold;"&gt;[client]&lt;/span&gt; debes colocar:&lt;/p&gt;&lt;p style="font-style: italic;"&gt;default-character-set=utf8&lt;/p&gt;&lt;p&gt;y en el apartado &lt;span style="font-weight: bold;"&gt;[mysqld]&lt;/span&gt; debes colocar:&lt;/p&gt;
&lt;p style="font-style: italic;"&gt;default-character-set=utf8&lt;br/&gt;
character-set-server=utf8&lt;br/&gt;
default-collation=utf8_unicode_ci&lt;br/&gt;
collation-server=utf8_unicode_ci&lt;/p&gt;&lt;p&gt;Además debes crear las tablas con  &lt;span style="font-style: italic;"&gt;charset&lt;/span&gt; UTF-8  y &lt;span style="font-style: italic;"&gt;collation&lt;/span&gt; UTF8_UNICODE_CI.
&lt;/p&gt;&lt;p&gt;Hasta aquí anda todo perfecto, según la documentación de mySQL.  Pero cuando te conectas a la base de datos desde una ventana DOS y le hechas una mirada a las variables (SHOW VARIABLES), aparecen unas variables de las cuales no he encontrado documentación que indique como cambiarlas desde el archivo de inicialización y que son el meollo del asunto: &lt;span style="font-style: italic;"&gt;character_set_client&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;character_set_results&lt;/span&gt;.  La primera tiene el conjunto de caracteres que debe usar el servidor de la base de datos para traducir lo que el cliente le envía; y la otra contiene el conjunto de caracteres que debe utilizar el servidor para traducir lo que le envía al cliente.&lt;/p&gt;&lt;p&gt;Despues de decenas de cambios, ambas variables siempre decían LATIN1.  Esto provocaba que, al enviar información a la base de datos esta se grababa reemplazando los caracteres hispánicos dos o más combinaciones de caracteres "raros".&lt;/p&gt;&lt;p&gt;Cuando intentaba recuperar la información desde mis páginas, esta se veía correctamente.  Entonces ¿cuál era el problema?  Pues bien, el problema surgiria cuando yo intentara crear una sentencia SQL válida que intentara comparar cadenas de caracteres, pues no habría forma en que coincidieran.&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 51, 255);font-size:130%;"&gt;La solución&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Pues después de mucho leer y probar, además de los parámetros de configuración que he enunciado anteriormente, luego de conectarte a la base de datos, debes ejecutar la sentencia:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic;"&gt;SET NAMES utf8&lt;/span&gt;&lt;/p&gt;&lt;p&gt;y la felicidad volverá a tu vida.&lt;/p&gt;&lt;p&gt;Espero les sirva.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-4163799423492144164?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/4163799423492144164/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=4163799423492144164' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4163799423492144164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4163799423492144164'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/03/php-mysql-utf-8-y-la-madres-que-los.html' title='PHP, mySQL, UTF-8 y la madre que los...'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-8929672260686701540</id><published>2008-02-28T09:26:00.004-02:00</published><updated>2008-03-16T21:21:03.413-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Prototype 1.6.0.2 - Plantilla de métodos</title><content type='html'>&lt;p&gt;Si sos de los miles de desarrolladores del mundo que han adoptado, casi adictivamente, el fantástico &lt;span style="font-style: italic;"&gt;framawork&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;prototype&lt;/span&gt;, habras notado que es casi imposible recordar todo lo que tienes a tu disposición con esta herramienta.&lt;/p&gt;&lt;p&gt;Pues bien, la gente de &lt;span style="font-weight: bold;"&gt;&lt;a href="http://thinkweb2.com/projects/prototype"&gt;Perfection Kills&lt;/a&gt;&lt;/span&gt; ha aportado su granito de arena con una plantilla donde se resumen y agrupan todos los métodos más utilizados de prototype.  Puedes bajarte el PDF con la información de este enlace: &lt;a href="http://thinkweb2.com/projects/prototype/downloads/Prototype Cheat Sheet 1.6.0.2"&gt;http://thinkweb2.com/projects/prototype/downloads/Prototype Cheat Sheet 1.6.0.2&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Un excelente trabajo de estos muchachos.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-8929672260686701540?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/8929672260686701540/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=8929672260686701540' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8929672260686701540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8929672260686701540'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/02/prototype-1602-plantilla-de-mtodos.html' title='Prototype 1.6.0.2 - Plantilla de métodos'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-4239726538828322425</id><published>2008-02-14T13:31:00.003-02:00</published><updated>2008-02-14T13:41:36.294-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Como abrir ventanas evitando las solapas</title><content type='html'>&lt;p&gt;Resulta que tienes una aplicación que abre una nueva ventana del navegador cuando ejecutas en Javascript &lt;span style="font-style: italic; font-weight: bold;"&gt;window.open&lt;/span&gt;&lt;span&gt;, pero con los navegadores que tienen solapas esto no es el efecto que quieres.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;¿Cómo hacerlo? Pues lo único que tienes que hacer es utilizar el tercer parámetro de la instrucción, aquel donde le indicas las propiedades que debe tener la nueva ventana.
&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color: rgb(255, 102, 102);"&gt;window&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 153);"&gt;open&lt;/span&gt;(&lt;span style="color: rgb(51, 102, 255);"&gt;"myURL.htm"&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 255);"&gt;"_blnak"&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 255);"&gt;"scrollbars=yes"&lt;/span&gt;)
&lt;/pre&gt;

&lt;p&gt;Si no quieres alterar las propiedades normales de la ventana (tamaño, menus, etc.) la propiedad mas &lt;span style="font-style:italic;"&gt;benigna&lt;/span&gt; es justamente la que ves en el ejemplo.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-4239726538828322425?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/4239726538828322425/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=4239726538828322425' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4239726538828322425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4239726538828322425'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/02/como-abrir-ventanas-evitando-las.html' title='Como abrir ventanas evitando las solapas'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7215524994765107378</id><published>2008-01-30T15:33:00.000-02:00</published><updated>2008-01-30T15:57:43.252-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutoriales'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><title type='text'>E-Mail con ASP y CDOSYS</title><content type='html'>&lt;p&gt;CDOSYS es el remplazo del viejo CDONT que hasta Windows 2000 venía con el IIS, dejó de soportarse en la versión 5.1. A partir de Windows XP y Windows 2003, o mejor dicho de la versión IIS 5.x, está disponible el CDO (Collaboration Data Objects).&lt;/p&gt;

&lt;p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:180%;"&gt;Ejemplos&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:130%;"&gt;Caso típico (con &lt;em&gt;attach&lt;/em&gt;)&lt;/span&gt; &lt;p&gt;
&lt;p&gt;Para enviar un correo electrónico hay que seguir los siguientes pasos&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#6a5acd"&gt;&amp;lt;%&lt;/font&gt;
&lt;font color="#0000ff"&gt;'creación del objeto que enviará el mensaje&lt;/font&gt;
&lt;font color="#804040"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/font&gt; oMail = Server.&lt;font color="#008080"&gt;CreateObject&lt;/font&gt;(&lt;font color="#ff00ff"&gt;&amp;quot;CDO.Message&amp;quot;&lt;/font&gt;)

urlms = &lt;font color="#ff00ff"&gt;&amp;quot;&lt;A HREF="http://schemas.microsoft.com/cdo/configuration/&amp;quot;"&gt;http://schemas.microsoft.com/cdo/configuration/&amp;quot;&lt;/A&gt;&lt;/font&gt;
&lt;font color="#804040"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/font&gt; oMail
&lt;font color="#0000ff"&gt;'CONFIGURACION SMTP *******************************************************&lt;/font&gt;
  &lt;font color="#0000ff"&gt; 'se puedo obviar la propiedad Item, pero en .NET es obligatoria&lt;/font&gt;
   .Configuration.Fields.Item(urlms  &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;sendusing&amp;quot;&lt;/font&gt;) = &lt;font color="#ff00ff"&gt;2&lt;/font&gt;&lt;font color="#0000ff"&gt; 'enviar usando port&lt;/font&gt;
   .Configuration.Fields.Item(urlms  &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;smtpserver&amp;quot;&lt;/font&gt;) = &lt;font color="#ff00ff"&gt;&amp;quot;10.223.240.104&amp;quot;&lt;/font&gt;
   .Configuration.Fields.Item(urlms  &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;smtpserverport&amp;quot;&lt;/font&gt;) = &lt;font color="#ff00ff"&gt;25&lt;/font&gt;
   .Configuration.Fields.Item(urlms  &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;smtpusessl&amp;quot;&lt;/font&gt;) = &lt;font color="#a020f0"&gt;False&lt;/font&gt;
   .Configuration.Fields.Item(urlms  &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;smtpconnectiontimeout&amp;quot;&lt;/font&gt;) = &lt;font color="#ff00ff"&gt;60&lt;/font&gt;
  &lt;font color="#0000ff"&gt; '.Configuration.Item(lcSchema + &amp;quot;smtpauthenticate&amp;quot;) = true&lt;/font&gt;
  &lt;font color="#0000ff"&gt; '.Configuration.Item(lcSchema + &amp;quot;sendusername&amp;quot;) = &amp;quot;usuario&amp;quot; 'login&lt;/font&gt;
  &lt;font color="#0000ff"&gt; '.Configuration.Item(lcSchema + &amp;quot;sendpassword&amp;quot;) = &amp;quot;clave&amp;quot; 'password&lt;/font&gt;

   .Configuration.Fields.Update
&lt;font color="#0000ff"&gt;'FIN DE CONFIGURACION SMTP ************************************************&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'quien envía&lt;/font&gt;
   .From = &lt;font color="#ff00ff"&gt;&amp;quot;yoyoyo@mapfre.com.ar&amp;quot;&lt;/font&gt;

   .To = &lt;font color="#ff00ff"&gt;&amp;quot;vosvos@gmail.com&amp;quot;&lt;/font&gt;
  &lt;font color="#0000ff"&gt; 'para múltiples recipientes, sepárelos con un punto y coma&lt;/font&gt;
  &lt;font color="#0000ff"&gt; '.To = &amp;quot;vosvos@gmail.com; otrovosvos@server.com&amp;quot;&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'Copia carbón&lt;/font&gt;
   .CC = &lt;font color="#ff00ff"&gt;&amp;quot;otro_mail@mm.com&amp;quot;&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'copia oculta&lt;/font&gt;
   .BCC = &lt;font color="#ff00ff"&gt;&amp;quot;otro_mail.mas@mail.com.uk&amp;quot;&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'sujeto&lt;/font&gt;
   .Subject= &lt;font color="#ff00ff"&gt;&amp;quot;Prueba de e-mail via CDOSYS&amp;quot;&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'CUERPO&lt;/font&gt;
  &lt;font color="#0000ff"&gt; 'para correo html se usa .HTMLBody&lt;/font&gt;
   .TextBody = &lt;font color="#ff00ff"&gt;&amp;quot;Mi mensaje&amp;quot;&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'agregar un archivo&lt;/font&gt;
   .AddAttachment Server.MapPath(&lt;font color="#ff00ff"&gt;&amp;quot;/&amp;quot;&lt;/font&gt;) &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;\myArch.zip&amp;quot;&lt;/font&gt;

   .Send
&lt;font color="#804040"&gt;&lt;b&gt;end with&lt;/b&gt;&lt;/font&gt;

&lt;font color="#804040"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/font&gt; oMail = Nothing
&lt;font color="#6a5acd"&gt;%&amp;gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;span style="font-size:130%;"&gt;Código de caracteres especiales&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si es necesario enviar alguna página de código en especial:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#6a5acd"&gt;&amp;lt;%&lt;/font&gt;
...

&lt;font color="#804040"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/font&gt; oMail
  ...

   .From = &lt;font color="#ff00ff"&gt;&amp;quot;yoyoyo@mapfre.com.ar&amp;quot;&lt;/font&gt;
   .To = &lt;font color="#ff00ff"&gt;&amp;quot;vosvos@gmail.com&amp;quot;&lt;/font&gt;

   .Subject= &lt;font color="#ff00ff"&gt;&amp;quot;Prueba de e-mail via CDOSYS&amp;quot;&lt;/font&gt;

   &lt;font color="#804040"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/font&gt; b = .bodypart
   b.charset = &lt;font color="#ff00ff"&gt;&amp;quot;unicode-1-1-utf-7&amp;quot;&lt;/font&gt;

   .TextBody = &lt;span class="Constant"&gt;&amp;quot;El costo de la reparación será de &lt;t_5&amp;&gt;quot;&lt;/span&gt;

   .Send
&lt;font color="#804040"&gt;&lt;b&gt;end with&lt;/b&gt;&lt;/font&gt;

...
&lt;font color="#6a5acd"&gt;%&amp;gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;span style="font-size:130%;"&gt;Nombres en lugar de direccines&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para que el receptor vea los nombres en lugar de la dirección electrónica:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#6a5acd"&gt;&amp;lt;%&lt;/font&gt;
...

&lt;font color="#804040"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/font&gt; oMail
  ...

   .From = &lt;font color="#ff00ff"&gt;&amp;quot;Mi Nombre &amp;lt;yoyoyo@mapfre.com.ar&amp;gt;&amp;quot;&lt;/font&gt;
   .To = &lt;font color="#ff00ff"&gt;&amp;quot;Tu Nombre &amp;lt;vosvos@gmail.com&amp;gt;&amp;quot;&lt;/font&gt;

   .Subject= &lt;font color="#ff00ff"&gt;&amp;quot;Prueba de e-mail via CDOSYS&amp;quot;&lt;/font&gt;

   .TextBody = &lt;font color="#ff00ff"&gt;&amp;quot;Texto&amp;quot;&lt;/font&gt;

   .Send
&lt;font color="#804040"&gt;&lt;b&gt;end with&lt;/b&gt;&lt;/font&gt;

...
&lt;font color="#6a5acd"&gt;%&amp;gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;span style="font-size:130%;"&gt;Imágenes embebidas&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para agregar imágenes embebidas en el mensaje:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#6a5acd"&gt;&amp;lt;%&lt;/font&gt;
...

&lt;font color="#804040"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/font&gt; oMail
  ...

   .From = &lt;font color="#ff00ff"&gt;&amp;quot;Mi Nombre &amp;lt;yoyoyo@mapfre.com.ar&amp;gt;&amp;quot;&lt;/font&gt;
   .To = &lt;font color="#ff00ff"&gt;&amp;quot;Tu Nombre &amp;lt;vosvos@gmail.com&amp;gt;&amp;quot;&lt;/font&gt;
   .Subject= &lt;font color="#ff00ff"&gt;&amp;quot;Prueba de e-mail via CDOSYS&amp;quot;&lt;/font&gt;

  &lt;font color="#0000ff"&gt; 'parametro 1= ubicacion y nombre, 2=CID, 3=tipo de referencia (CdoReferenceTypeName)&lt;/font&gt;
   .AddRelatedBodyPart Server.MapPath(&lt;font color="#ff00ff"&gt;&amp;quot;/imagenes&amp;quot;&lt;/font&gt;) &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;\exit.gif&amp;quot;&lt;/font&gt;, &lt;font color="#ff00ff"&gt;&amp;quot;exit&amp;quot;&lt;/font&gt;, &lt;font color="#ff00ff"&gt;1&lt;/font&gt;

   .HTMLBody = &lt;font color="#ff00ff"&gt;&amp;quot;&amp;lt;b style='color:red'&amp;gt;mi imagen&amp;lt;/b&amp;gt; &amp;quot;&lt;/font&gt; _
             &amp;amp; &lt;font color="#ff00ff"&gt;&amp;quot;&amp;lt;img src='cid:exit' /&amp;gt;&amp;quot;&lt;/font&gt;

   .Send
&lt;font color="#804040"&gt;&lt;b&gt;end with&lt;/b&gt;&lt;/font&gt;

...
&lt;font color="#6a5acd"&gt;%&amp;gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;span style="font-size:130%;"&gt;Mandar una página html&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si necesitamos mandar una página de un sitio o, en caso de ser un archivo de servidor, el resultado de la misma:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#6a5acd"&gt;&amp;lt;%&lt;/font&gt;
...

&lt;font color="#804040"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/font&gt; oMail
  ...

   .From = &lt;font color="#ff00ff"&gt;&amp;quot;Mi Nombre &amp;lt;yoyoyo@mapfre.com.ar&amp;gt;&amp;quot;&lt;/font&gt;
   .To = &lt;font color="#ff00ff"&gt;&amp;quot;Tu Nombre &amp;lt;vosvos@gmail.com&amp;gt;&amp;quot;&lt;/font&gt;
   .Subject= &lt;font color="#ff00ff"&gt;&amp;quot;Prueba de e-mail via CDOSYS&amp;quot;&lt;/font&gt;

   .CreateMHTMLBody &lt;font color="#ff00ff"&gt;&amp;quot;&lt;A HREF="http://www.mapfre.com.ar/stats/stat.htm&amp;quot;"&gt;http://www.mapfre.com.ar/stats/stat.htm&amp;quot;&lt;/A&gt;&lt;/font&gt;
   .Send
&lt;font color="#804040"&gt;&lt;b&gt;end with&lt;/b&gt;&lt;/font&gt;

...
&lt;font color="#6a5acd"&gt;%&amp;gt;&lt;/font&gt;
&lt;/pre&gt;

En caso de querer mandar una página html que se encuentre en nuestra PC, simplemente debemos cambiar el protocolo y agregar el camino completo de la imagen en nuestro disco: file://c:\micarpeta\mipagina.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7215524994765107378?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7215524994765107378/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7215524994765107378' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7215524994765107378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7215524994765107378'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/01/e-mail-con-asp-y-cdosys.html' title='E-Mail con ASP y CDOSYS'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-152084410537769120</id><published>2008-01-22T12:49:00.000-02:00</published><updated>2008-01-22T13:44:16.572-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><category scheme='http://www.blogger.com/atom/ns#' term='Diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Reflejando imágenes On-Line</title><content type='html'>&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Hola! Hace mucho no posteaba en el blog de mi amigo Julio.&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Navegando por la net, me topé con esta herramienta gratuita, para generar interesantes reflexiones sobre imágenes:&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.reflectionmaker.com/"&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;http://www.reflectionmaker.com/&lt;/span&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;El único inconveniente es que solo admite imágenes con tamaño inferior a 200kb., sin embargo creo que es suficiente como para hacer un logo (o lo que se nos ocurra) bien al estilo web 2.0.
&lt;/span&gt;
&lt;br&gt;
&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Tengamos en cuenta también, que la calidad de la imagen resultante no es tan buena como si la hicieramos en alguna herramienta profesional de diseño gráfico.&lt;/span&gt;
&lt;br&gt;
&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Entre las característas, se puede elegir el tamaño de la reflexión, y el fondo o "suelo" sobre el cual se reflejará la imagen. &lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://3.bp.blogspot.com/_1fD4v2ZsQKw/R5YFSoy0YSI/AAAAAAAAAAM/PPW7q8MLNv8/s1600-h/webar2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5158316240945832226" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://3.bp.blogspot.com/_1fD4v2ZsQKw/R5YFSoy0YSI/AAAAAAAAAAM/PPW7q8MLNv8/s320/webar2.jpg" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Los métodos de entrada son, o bien subiendo la imagen que tengamos en nuestro disco, o indicando el link.&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Saludos!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-152084410537769120?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/152084410537769120/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=152084410537769120' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/152084410537769120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/152084410537769120'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/01/reflejando-imgenes-on-line.html' title='Reflejando imágenes On-Line'/><author><name>Adrian</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_1fD4v2ZsQKw/R5YQJ4y0YUI/AAAAAAAAAAY/E8kqZYjEPfY/S220/naraneo%40sar001704+avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1fD4v2ZsQKw/R5YFSoy0YSI/AAAAAAAAAAM/PPW7q8MLNv8/s72-c/webar2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-8265630631765964737</id><published>2008-01-21T14:19:00.000-02:00</published><updated>2008-01-21T14:37:50.535-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><category scheme='http://www.blogger.com/atom/ns#' term='Diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Prueba tu web en distintos navegadores</title><content type='html'>&lt;p&gt;¿Necesitas probar tu web en distintos navegadores y sistemas operativos? ¡¡Es un problema tener que hacer esto!!&lt;/p&gt;&lt;p&gt;Pues ahora no tanto. &lt;a href="http://browsershots.org/"&gt;Estos genios&lt;/a&gt; han puesto a disposición del mundo una herramienta llamada &lt;strong&gt;Geekotic,&lt;/strong&gt; que hace un análisis de tu web en pocos minutos, testeándola en todos los sistemas operativos y navegadores que selecciones.&lt;/p&gt;&lt;p&gt;Luego de unos instantes tendrás a la vista una serie de capturas de pantalla de tu sitio, con el informe correspondiente a cada una de ellas.&lt;/p&gt;&lt;p&gt;Si esto no facilita tu vida de desarrollador web... ¡Nada lo hará!&lt;/p&gt;&lt;p&gt;Bravo por los responsables de browsershots.org!!&lt;/p&gt;

&lt;center&gt;&lt;a href="http://lh4.google.es/julgon/R5TJqn-VTVI/AAAAAAAAAcw/qZtAAde05Ag/Clipboard01.jpg?imgmax=720" target="_blank"&gt;&lt;img src="http://lh4.google.es/julgon/R5TJqn-VTVI/AAAAAAAAAcw/qZtAAde05Ag/Clipboard01.jpg?imgmax=720" width="250" border="1" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-8265630631765964737?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/8265630631765964737/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=8265630631765964737' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8265630631765964737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8265630631765964737'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/01/prueba-tu-web-en-distintos-navegadores.html' title='Prueba tu web en distintos navegadores'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-4520369744297296246</id><published>2008-01-17T10:34:00.000-02:00</published><updated>2008-01-17T10:47:14.345-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alojamiento de archivos'/><category scheme='http://www.blogger.com/atom/ns#' term='Tech-News'/><title type='text'>10 Publicidades increibles</title><content type='html'>&lt;p&gt;Esto no tiene que ver con la temática de este blog, pero lo roza indirectamente. Además me ha parecido algo muy divertido para aquellos que estamos hace mucho rato ya en esto de la informática, y también para los recien llegados que verán con que nos las teniamos que ver cuando eramos jóvenes y recien comenzabamos en esto.&lt;/p&gt;&lt;p&gt;
Respecto de aquellos tiempos, hoy la tienen fácil. Que programen hoy en una Latindata de 64K de memoria (SI!! Sólo 64 K) y dos discos flexibles de 160 k (SI!! Sólo 160 K) y &lt;a href="http://es.wikipedia.org/wiki/CP/M"&gt;sistema operativo CP/M&lt;/a&gt;. Sin archivos indexados ni super motores de base de datos, ni ventanitas, ni arrastrar y soltar...&lt;/p&gt;&lt;p&gt;No se pierdan &lt;strong&gt;&lt;a href="http://www.2spare.com/item_92760.aspx"&gt;esta página&lt;/a&gt;&lt;/strong&gt;. Es buenísima.&lt;/p&gt;

&lt;center&gt;&lt;img src="http://www.2spare.com/_media/imgs/articles/a155_a7.jpg" /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-4520369744297296246?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/4520369744297296246/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=4520369744297296246' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4520369744297296246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4520369744297296246'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/01/10-publicidades-increibles.html' title='10 Publicidades increibles'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-3244701034295839503</id><published>2008-01-08T15:42:00.000-02:00</published><updated>2008-01-08T15:59:36.792-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Imagen de espera mientras se carga una imagen</title><content type='html'>&lt;p&gt;Muchas veces en nuestras páginas se cargan imágenes realmente &lt;em&gt;pesadas&lt;/em&gt; y no tenemos forma de avisar al visitante.  Aquí les dejo un truco que encontré por ahí que permite mostrar una imagen de fondo, que luego será tapada por aquella que se está leyendo:&lt;/p&gt;
&lt;pre&gt;
img {
background:  transparent url(imagen-precarga.gif) no-repeat center center;
}
&lt;/pre&gt;

&lt;p&gt;Se recomienda el uso de una pequeña imagen que indique la espera para lograr que el navegador la cargue rápidamente.&lt;/p&gt;

&lt;p&gt;Si bien es un truco interesante, encontrarán una dificultad con las imágenes transparentes, pues puede que la  imagen de fondo no sea totalmente tapada.  Pero para la mayoría de las que usamos en la web, esta técnica es útil.&lt;/p&gt;

&lt;p&gt;Otra opción sería restringir el uso de esta técnica a las imágenes que se muestran dentro de determinados elementos. En el siguiente ejemplo sólo se usará la imagen de fondo en los &lt;em&gt;tags IMG&lt;/em&gt; que sean hijos de un elemento cuya clase CSS sea &lt;em&gt;album&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;
.album img {
background:  transparent url(imagen-precarga.gif) no-repeat center center;
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-3244701034295839503?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/3244701034295839503/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=3244701034295839503' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3244701034295839503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3244701034295839503'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/01/imagen-de-espera-mientras-se-carga-una.html' title='Imagen de espera mientras se carga una imagen'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-1244014390755647228</id><published>2008-01-04T11:37:00.000-02:00</published><updated>2008-01-04T12:03:56.305-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>UNIX: comandos útilies</title><content type='html'>&lt;p&gt;Siguiendo con Unix (que me tiene ocupado por estas horas), acá les acerco algunos comandos útiles para quienes no conocen mucho esta herramienta:&lt;/p&gt;

&lt;p&gt;Ustedes deben estar familiarizados con el uso del &lt;em&gt;ls&lt;/em&gt;, un comando para ver el contenido de nuestra unidad de almacenamiento, que tiene gran cantidad de modificadores.  Si quieren ver la lista de carpetas bastará con el siguientes comando:&lt;/p&gt;

&lt;pre&gt;ls  -d */.&lt;/pre&gt;

&lt;p&gt;Si, en cambio, necesitan una lista del contenido de una carpeta pero ordenada por fecha, el siguiente comando realiza la tarea&lt;p&gt;

&lt;pre&gt;ls  -Fltr&lt;/pre&gt;

&lt;p&gt;Claro que retener estas líneas en algunos casos resulta tedioso, pero Unix nos da la posibilidad de generar &lt;i&gt;alias&lt;/i&gt; para ellas, que sean más fáciles de recordar.  Por ejemplo, en el caso anterior podríamos definir&lt;/p&gt;

&lt;pre&gt;alias ld='ls -Fltr'&lt;/pre&gt;

&lt;p&gt;y vastará con ejecutar el comando &lt;em&gt;ld&lt;/em&gt; que acabamos de crear para que Unix sepa a que nos referimos.  Claro que al terminar tu sesión esta definición se perderá, pero a no amargarse, hay una solución.  Cada vez que inicias una sesión en Unix, el sistema operativo lee un archivo que se encuentra en el &lt;em&gt;root&lt;/em&gt; de tu usuario y que esta oculto, que se llam &lt;em&gt;.login&lt;/em&gt;.  Bastará con que agregues tu &lt;em&gt;alias&lt;/em&gt; en ese archivo para que lo tengas diponible cada vez que inicies una sesión.&lt;/p&gt;

&lt;p&gt;Otra cosa que sucede muy frecuentemente es que realicemos tareas con archivos en nuestro ordenador de escritorio, que generalmente corre un Windows, y luego pasemos ese archivo a un servidor Unix mediante un cliente FTP gráfico.  ¿Cuál es el problema?  Pues que al abrir el archivo en el servidor Unix nos encontramos que tiene unos &lt;em&gt;molestos&lt;/em&gt; carcateres &lt;em&gt;CR&lt;/em&gt; de DOS.  Estos caracteres no son &lt;em&gt;digeribles&lt;/em&gt; por Unix, sobre todo si nuestro archivo es un &lt;em&gt;script&lt;/em&gt; ejecutable.&lt;/p&gt;

&lt;p&gt;La manera más rápida de quitar los &lt;em&gt;CR&lt;/em&gt; es mediante la siguiente línea&lt;/p&gt;

&lt;pre&gt;tr  -d '\015' &lt; file &gt;file2&lt;/pre&gt;

&lt;p&gt;Lo mismo hacemos si quremos extraer el &lt;em&gt;EOF&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;tr  -d '\032' &lt; file &gt;file2&lt;/pre&gt;

&lt;p&gt;Y si queremos hacer ambas cosas a un tiempo, batará con utilizar un &lt;em&gt;pipe&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;tr  -d '\015' &lt; file | tr  -d '\032' &gt;file2&lt;/pre&gt;

&lt;p&gt;Espero les sea de utilidad.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-1244014390755647228?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/1244014390755647228/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=1244014390755647228' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1244014390755647228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1244014390755647228'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2008/01/unix-comandos-tilies.html' title='UNIX: comandos útilies'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7035272101319114862</id><published>2007-12-18T08:52:00.000-03:00</published><updated>2007-12-28T16:44:18.768-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ksh'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Vectores en Korn Shell (Unix)</title><content type='html'>&lt;p&gt;Aquellos que utilizan Unix o Linux diariamente, programan muchos &lt;em&gt;scripts&lt;/em&gt; para diversas tareas. Es que uno de sus &lt;em&gt;kernels&lt;/em&gt; &lt;strong&gt;ksh&lt;/strong&gt; es de los más cómodos para trabajar. Pero pocos dan utilidad a los vectores (&lt;em&gt;arrays&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Su utilización es sencilla, simplemente se asigna a una variable con subíndice un valor y listo. Los subíndices pueden no ser consecutivos, lo que muchas veces puede complicar las cosas a la hora de querer iterarlos, no por el vector, sino por las tareas que hagas con los contenidos de los elementos vacios. Tal vez convenga utilizar una variable para ir llevando el contador de elementos.&lt;/p&gt;

&lt;pre&gt;
myVar&lt;span style="color:#804040;"&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;0&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;]&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;="&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;algo&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;
myVar&lt;span style="color:#804040;"&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;]&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;="&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;algo mas&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;
myVar&lt;span style="color:#804040;"&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;3&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;]&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;="&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;otra cosa&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;#-- otra forma (pero asina subindices consecutivos)&lt;/span&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;set &lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;-A&lt;/span&gt; &lt;span style="color:#008080;"&gt;myVar&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;algo&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;algo mas&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;otra cosa&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Pero ¿cómo los recorremos? Uno de los datos principales que necesitamos para recorrerlos es el subíndice máximo del vector, y algo que pocos conoces es la sentencia para obtener ese valor: &lt;strong&gt;${#myVar[@]}&lt;/strong&gt;, que devuelve el subíndice máximo que se utilizó para asignar un elemento al vector, &lt;strong&gt;no la cantidad de elementos que componen el mismo.&lt;/strong&gt; En el ejemplo anterior, la sentencia retornará 3 para la primera parte del ejemplo y 2 para la segunda parte (&lt;em&gt;set -A...&lt;/em&gt;) ya que los subíndices comienzan por cero.&lt;/p&gt;

&lt;p&gt;Así, la forma de recorrer el vector sería:&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#008080;"&gt;i&lt;/span&gt;=&lt;span style="color:#ff00ff;"&gt;0&lt;/span&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt; i &lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;-le&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;${&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;myVar&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;[&lt;/span&gt;@&lt;span style="color:#a020f0;"&gt;]&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;}&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;]&lt;/b&gt;&lt;/span&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;
        &lt;span style="color:#008080;"&gt;var&lt;/span&gt;=&lt;span style="color:#a020f0;"&gt;${&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;myVar&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;[&lt;/span&gt;i&lt;span style="color:#a020f0;"&gt;]&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;}&lt;/span&gt;
        ...
&lt;span style="color:#804040;"&gt;&lt;b&gt;done&lt;/b&gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Nótese en el ejemplo que las llaves (&lt;strong&gt;{}&lt;/strong&gt;) rodean al elemento solicitado. Esta es la forma de acceder a un dato guardado en un elemento requerido del vector.&lt;/p&gt;

&lt;p&gt;De esta forma nos aseguramos de recorrer el vector hasta su último elemento aunque alguno de sus subíndice no haya sido asignado. Pero ¿cómo sabemos cuantos elementos fueron asignados?. La respuesta está en esta simple instrucción:&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#0000ff;"&gt;#-- retorna el numer de elementos asignados&lt;/span&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt; &lt;/span&gt;&lt;span style="color:#a020f0;"&gt;${&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;myVar&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;[&lt;/span&gt;*&lt;span style="color:#a020f0;"&gt;]&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;}&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Por otra parte, si quisieramos ver todos los elementos del vector en una lista vastará con: &lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt; &lt;/span&gt;&lt;span style="color:#a020f0;"&gt;${&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;myVar&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;[&lt;/span&gt;*&lt;span style="color:#a020f0;"&gt;]&lt;/span&gt;&lt;span style="color:#a020f0;"&gt;}&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;# MUESTRA  &lt;b&gt;algo algo mas otra cosa&lt;/b&gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;lo que no es muy útil si tenemos en cuenta que el separador de campos por omisión que utiliza Unix es el espacio en blanco, con lo cual perderíamos la capacidad de saber donde comienza y donde termina cada elemento. Esto tiene una fácil solución cambiando el valor del separador de campo que se encuentra en la variable de entorno FS.&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://confronte.com.ar" class="cft_afil type:468_60 afil:344337 popup:no" rel="nofollow"&gt; Confronte.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7035272101319114862?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7035272101319114862/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7035272101319114862' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7035272101319114862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7035272101319114862'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/12/vectores-en-korn-shell-unix.html' title='Vectores en Korn Shell (Unix)'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-5038322415534723845</id><published>2007-10-29T17:36:00.000-03:00</published><updated>2007-10-29T17:53:04.335-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Tablas: Insertar filas y celdas dinámicamente</title><content type='html'>&lt;p&gt;Recientemente, corrigiendo unas páginas &lt;span style="font-weight: bold;"&gt;muy IE&lt;/span&gt;, me tope con un problemilla que nunca tuve antes en este asunto de tener todo &lt;span style="font-style: italic;"&gt;cross-browser&lt;/span&gt;, porque -sinceramente- con el mercado que tenían los otros navegadores, en mi empresa sólo escribíamos para IE.&lt;/p&gt;
&lt;p&gt;El temas es que me encontré con un código que creaba dinámicamente filas y celdas en una tabla utilizando los métodos &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;insertRow&lt;/span&gt;&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;insertCell&lt;/span&gt;&lt;/span&gt;.  Cuando lo probé en Firefox falló y pensé, inicialmente, que no existían con esos nombre los métodos.  Pero no fue así.&lt;/p&gt;&lt;p&gt;Para graficarlo mejor, el código IE es algo así:&lt;/p&gt;

&lt;pre&gt;
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; myTable = &lt;span style="color: rgb(204, 51, 204);"&gt;document&lt;/span&gt;.getElementById(&lt;span style="color: rgb(51, 102, 255);"&gt;'myTable'&lt;/span&gt;);
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; oRow = myTable.insertRow();
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; oCell = oRow.insertCell();
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; oCell.innerHTML = &lt;span style="color: rgb(51, 51, 255);"&gt;'contenid de la celda'&lt;/span&gt;;
&lt;/pre&gt;

&lt;p&gt;Para que este sea cross-browser se debe escribir así:&lt;/p&gt;

&lt;pre&gt;
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; myTable = &lt;span style="color: rgb(204, 51, 204);"&gt;document&lt;/span&gt;.getElementById(&lt;span style="color: rgb(51, 51, 255);"&gt;'myTable'&lt;/span&gt;);
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; oRow = myTable.insertRow(&lt;span style="color: rgb(255, 0, 0);"&gt;-1&lt;/span&gt;);
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; oCell = oRow.insertCell(&lt;span style="color: rgb(255, 0, 0);"&gt;-1&lt;/span&gt;);
&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;var&lt;/span&gt; oCell.innerHTML = &lt;span style="color: rgb(51, 51, 255);"&gt;'contenid de la celda'&lt;/span&gt;;
&lt;/pre&gt;

&lt;p&gt;Donde -1 indica al DOM que debe agregar la fila o la celda al final.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-5038322415534723845?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/5038322415534723845/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=5038322415534723845' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5038322415534723845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5038322415534723845'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/10/tablas-insertar-filas-y-celdas.html' title='Tablas: Insertar filas y celdas dinámicamente'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-4220111344408971126</id><published>2007-08-27T11:32:00.000-03:00</published><updated>2007-08-27T11:41:55.879-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><title type='text'>Libro gratis sobre AJAX.NET</title><content type='html'>&lt;p&gt;Desde ya hace un tiempo, en el sitio de Microsof, está disponible para bajar gratuitamente el buen libro sobre AJAX.NET de &lt;a style="font-weight: bold;" href="http://www.solidq.com/na/MentorDetail.aspx?Id=40"&gt;Dino Esposito&lt;/a&gt;.  Para quienes le interese pueden bajarlo &lt;a href="http://download.microsoft.com/download/8/6/9/869052F5-403D-4B34-BFC4-E61FD28D53A1/0735623457.exe"&gt;desde este enlace&lt;/a&gt;.  El libro se llama &lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Atlas for AJAX development&lt;/span&gt;.
&lt;/p&gt;&lt;p&gt;Lamentablemente para los hispanoparlantes, el libro esta escrito en inglés, pero los que ya hace un tiempo largo que estamos en esto del desarrollo, esto no es un impedimento.&lt;/p&gt;&lt;p&gt;No se lo pierdan, es una buena opción y gratis.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-4220111344408971126?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/4220111344408971126/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=4220111344408971126' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4220111344408971126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4220111344408971126'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/08/libro-gratis-sobre-ajaxnet.html' title='Libro gratis sobre AJAX.NET'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-6610112015446482834</id><published>2007-07-24T23:22:00.000-03:00</published><updated>2007-07-24T23:23:47.105-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Servidor web ASP.NET sin IIS</title><content type='html'>&lt;p&gt;Puede que te haya pasado lo que a mi.  Tuve instalado un Windows XP Home y ahora un Windows Vista Basic y en ambos, como también en otras versiones Vista, no se ha incluido el Internet Information Server, necesario para correr aplicaciones ASP o ASP.NET a medida que las estamos desarrollando.&lt;/p&gt;

&lt;p&gt;Si has andado por ahí, has leido que esxiste Cassini Web Server, un desarrollo que pretende sustituir al IIS, aunque muchas veces es imposible hacerlo arrancar pues tiene conflicto con todos los puertos que le indicas, incluido el 80.  También puedes configurar Apache con mod_mono, pero es complicado y, además, la Fundación Apache desaconseja su uso.&lt;/p&gt;

&lt;p&gt;Entonces instalas tu Visual Studio Net que te permite probar las apliaciones con un servidor propio en el puerto 49608.  Pues bien, este servidor se encuentra en la carpeta de la versión 2 de Net y puede ser arrancado ya que es una aplicación ejecutable.  Acá va como hacerlo:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Abre una ventana DOS con CMD&lt;/li&gt;&lt;li&gt;Navega hasta llegar a la carpeta &lt;span style="font-weight: bold;"&gt;Microsoft.NET\Framework\v2.0.50727&lt;/span&gt;, generalmente en la carpeta Windows de la undad C:&lt;/li&gt;&lt;li&gt;Ejecuta &lt;span style="font-weight: bold;"&gt;webdev.webserver /port:81 /path:"c:\www" /vpath:"/"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Esta aplicación tiene tres parámetros: port, path y vpath,  de los cuales sólo path es obligatorio&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;port&lt;/span&gt; :  puerto que estará "escuchando" el servidor&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;path&lt;/span&gt; : carpeta donde se encontrarán las aplicaciones web&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;vpath&lt;/span&gt; : nombre virtual de la carpeta de las aplicaciones web&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Una vez iniciado el servidor, en nuestra barra de tareas verán un pequeño icono (medio feo para mi gusto) desde donde podrán obtener alguna infomación del servidor y apagarlo desde allí.&lt;/p&gt;

&lt;p&gt;Espero que les sea útil esta información.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-6610112015446482834?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/6610112015446482834/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=6610112015446482834' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6610112015446482834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6610112015446482834'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/07/servidor-web-aspnet-sin-iis.html' title='Servidor web ASP.NET sin IIS'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-6662336805310051207</id><published>2007-07-24T22:53:00.000-03:00</published><updated>2007-12-28T16:44:32.744-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Servidor web ASP.NET sin IIS</title><content type='html'>&lt;p&gt;Puede que te haya pasado lo que a mi. Tuve instalado un Windows XP Home y ahora un Windows Vista Basic y en ambos, como también en otras versiones Vista, no se ha incluido el Internet Information Server, necesario para correr aplicaciones ASP o ASP.NET a medida que las estamos desarrollando.&lt;/p&gt;&lt;p&gt;Si has andado por ahí, has leido que esxiste Cassini Web Server, un desarrollo que pretende sustituir al IIS, aunque muchas veces es imposible hacerlo arrancar pues tiene conflicto con todos los puertos que le indicas, incluido el 80. También puedes configurar Apache con mod_mono, pero es complicado y, además, la Fundación Apache desaconseja su uso.&lt;/p&gt;&lt;p&gt;Entonces instalas tu Visual Studio Net que te permite probar las apliaciones con un servidor propio en el puerto 49608. Pues bien, este servidor se encuentra en la carpeta de la versión 2 de Net y puede ser arrancado ya que es una aplicación ejecutable. Acá va como hacerlo:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Abre una ventana DOS con CMD&lt;/li&gt;&lt;li&gt;Navega hasta llegar a la carpeta &lt;span style="FONT-WEIGHT: bold"&gt;Microsoft.NET\Framework\v2.0.50727&lt;/span&gt;, generalmente en la carpeta Windows de la undad C:&lt;/li&gt;&lt;li&gt;Ejecuta &lt;span style="FONT-WEIGHT: bold"&gt;webdev.webserver /port:81 /path:"c:\www" /vpath:"/"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="FONT-WEIGHT: bold"&gt;
&lt;/span&gt;

&lt;p&gt;
&lt;a class="cft_afil type:468_60 afil:344337 popup:no" href="http://confronte.com.ar/" rel="nofollow"&gt;Confronte.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-6662336805310051207?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/6662336805310051207/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=6662336805310051207' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6662336805310051207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6662336805310051207'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/07/servidor-web-aspnet-sin-iis_24.html' title='Servidor web ASP.NET sin IIS'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-2003908660108590945</id><published>2007-07-17T14:33:00.000-03:00</published><updated>2007-07-17T15:10:43.025-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Expresiones Regulares IV – Caracteres especiales</title><content type='html'>&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;El asterisco (*)&lt;/p&gt;

&lt;p&gt;Este símbolo  es utilizado para indicar que pretendemos encontrar cero o más ocurrencias del dato previo a él:&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; texto = &lt;span style="color: rgb(255, 0, 255);"&gt;'abc1'&lt;/span&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;if&lt;/span&gt;( /^&lt;span style="color: rgb(106, 90, 205);"&gt;\w&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;3&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;*$/.test(texto) ) &lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;
alert(IsFound)
&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;El ejemplo anterior devolverá verdadero para cualquier ocurrencia de 3 cualesquiera caracteres seguidos de cero o más dígitos.&lt;/p&gt;

&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;La barra invertida&lt;/p&gt;

&lt;p&gt;Este carácter se utiliza para preceder a ciertos caracteres y darles un sentido especial.  Por ejemplo, para buscar caracteres de tabulación utilizaremos la expresión &lt;span style="font-style: italic;"&gt;\t&lt;/span&gt;.  A continuación agrego una lista de carateres especiales y su reprepresntación dentro de las expresiones regulares:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\t&lt;/span&gt; = tabulación&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\n&lt;/span&gt; = nueva línea&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\f&lt;/span&gt; = salto de formulario&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\r&lt;/span&gt; = retorno de carro&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\w&lt;/span&gt; = cualquier carácter ASCII&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\W&lt;/span&gt; = cualquier carácter no ASCII&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\d&lt;/span&gt; = cualquier dígito ASCII&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\D&lt;/span&gt; = cualquier dígito no ASCII&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\s&lt;/span&gt; = cualquier espacio en blanco&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;\S&lt;/span&gt; = cualquier carácter que no sea un espacio en blanco&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La barra invertida también se utiliza para que caracteres especiales de expresiones regulares, sean interpretados como caracteres comunes.  Por ejemplo, si quisieramos encontrar en un texto el signo &lt;span style="font-weight: bold;"&gt;$&lt;/span&gt; debemos utilizar &lt;span style="font-weight: bold;"&gt;\$&lt;/span&gt;&lt;/p&gt;&lt;p&gt;


&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Los Corchetes&lt;/p&gt;

&lt;p&gt;Los corchetes ( [ ] ) se utilizan para crear clases de caracteres.  Estas clases están conformadas por grupos literales de caracteres.  Por ejemplo &lt;span style="font-style: italic;"&gt;/[baco]/&lt;/span&gt; retornará verdadero si cualquier carácter &lt;span style="font-style: italic;"&gt;b&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;a&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;c&lt;/span&gt; u &lt;span style="font-style: italic;"&gt;o&lt;/span&gt; es encontrado en la cadena testeada.&lt;/p&gt;

&lt;pre&gt;
/[baco]/.test("abcd");  &lt;span style="color: rgb(0, 0, 255);"&gt;// verdadero&lt;/span&gt;

/[baco]/.test("lmnj");  &lt;span style="color: rgb(0, 0, 255);"&gt;// falso&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Adicionalmente, los integrantes de estas clases pueden estar precedidos por el signo ^ que establece la negación de lo buscado.  Por ejemplo:&lt;/p&gt;
&lt;pre&gt;
/[^baco]/.test("abcd");  &lt;span style="color: rgb(0, 0, 255);"&gt;// falso&lt;/span&gt;

/[^baco]/.test("lmnj");  &lt;span style="color: rgb(0, 0, 255);"&gt;// verdadero&lt;/span&gt;
&lt;/pre&gt;

&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Los paréntesis&lt;/p&gt;

&lt;p&gt;Los paréntesis pueden utilizarse con dos finalidades: Agrupar clases ( &lt;span style="font-weight: bold;"&gt;[ ]&lt;/span&gt; ) o referirse a subexpresiones previas dentro de una expresión.&lt;/p&gt;

&lt;pre&gt;
([09][a-z)
&lt;/pre&gt;

&lt;p&gt;En este modelo se buscará un 0 o un 9 seguido de uno o más caracteres de a a z en minúsculas.&lt;/p&gt;

&lt;p&gt;Al agregarse los paréntesis a una expresión, JavaScript toma nota de la posición del contenido teniendo en cuenta las aperturas de los paréntesis, comenzando por el número 1:&lt;/p&gt;

&lt;pre&gt;
/^([ab](c)?)+$/
&lt;/pre&gt;

&lt;p&gt;En la expresión anterior JavaScript sabe que &lt;span style="font-style: italic;"&gt;[ab](c)?&lt;/span&gt; es el contenido de 1 y &lt;span style="font-style: italic;"&gt;c&lt;/span&gt; es el contenido de 2.  Para referirse a esas posiciones, preceda al dígito de posición con una barra invertida, por ejemplo &lt;span style="font-style: italic;"&gt;\1&lt;/span&gt;.  También puede utilizarse el signo &lt;span style="font-style: italic;"&gt;$&lt;/span&gt;, por ejemplo &lt;span style="font-style: italic;"&gt;$1&lt;/span&gt;&lt;/p&gt;

&lt;pre&gt;
alert(&lt;span style="color: rgb(255, 0, 255);"&gt;"javascript"&lt;/span&gt;.replace(&lt;span style="color: rgb(255, 0, 255);"&gt;/java(.*)/&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;'action$1'&lt;/span&gt;));
&lt;/pre&gt;

&lt;p&gt;En el ejemplo anterior, se reemplaza la palabra java por action y luego le adhiere cualquier otro texto que estuviera detrás de java, resultado en actionscript.&lt;/p&gt;

&lt;pre&gt;
re = &lt;font color="#ff00ff"&gt;/(\w+)\s(\w+)/&lt;/font&gt;;
&lt;font color="#ff00ff"&gt;&amp;quot;Julio Gonzalez&amp;quot;&lt;/font&gt;.replace(re, &lt;font color="#ff00ff"&gt;&amp;quot;$2, $1&amp;quot;&lt;/font&gt;);  &lt;font color="#0000ff"&gt;// resultado: Gonzalez, Julio&lt;/font&gt;
&lt;/pre&gt;


&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;El signo &lt;span style="font-style: italic;"&gt;OR&lt;/span&gt; ( | )&lt;/p&gt;

&lt;p&gt;Este signo representa a &lt;span style="font-style: italic;"&gt;OR&lt;/span&gt;&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; texto = &lt;span style="color: rgb(255, 0, 255);"&gt;"abc"&lt;/span&gt;
/a|b/.test(texto) &lt;span style="color: rgb(0, 0, 255);"&gt;// verdadero&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;La expresión anterior devolverá verdadero si texto contiene una &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; o una &lt;span style="font-style: italic;"&gt;b&lt;/span&gt;.&lt;/p&gt;


&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;El signo más (+)&lt;/p&gt;

&lt;p&gt;Este signo es utilizaado para encontrar una o más ocurrencias del item precedente.&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color: rgb(0, 128, 128);"&gt;var&lt;/span&gt; texto = &lt;span style="color: rgb(255, 0, 255);"&gt;"abc"&lt;/span&gt;
/^&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;+$/.&lt;span style="color: rgb(255, 0, 255);"&gt;"1234"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;// verdadero&lt;/span&gt;
/^&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;+$/.&lt;span style="color: rgb(255, 0, 255);"&gt;"abcde9"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;// verdadero&lt;/span&gt;
/^&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;+$/.&lt;span style="color: rgb(255, 0, 255);"&gt;"abcde"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;// falso&lt;/span&gt;
&lt;/pre&gt;

&lt;p style="font-weight: bold; color: rgb(153, 0, 0);"&gt;El signo de interrogación (&lt;span style="font-style: italic;"&gt;?&lt;/span&gt;)&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;p&gt;Este signo es utilizado para indicar que se deben encontrar cero o más ocurrencias del item previo.&lt;/p&gt;

&lt;pre&gt;
/^&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;2&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;?$/.test(&lt;span style="color: rgb(255, 0, 255);"&gt;"123"&lt;/span&gt;)  &lt;span style="color: rgb(0, 0, 255);"&gt;// verdadero&lt;/span&gt;
/^&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;{&lt;/span&gt;2&lt;span style="color: rgb(0, 128, 128);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;\d&lt;/span&gt;?$/.test(&lt;span style="color: rgb(255, 0, 255);"&gt;"123789"&lt;/span&gt;)  &lt;span style="color: rgb(0, 0, 255);"&gt;// falso&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Este código retornará verdadero cuando encuentre exáctamente 2 dígitos y, opcionalmente, un tercer dígito.&lt;/p&gt;

&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align="top" marginwidth="0" marginheight="0" src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;amp;cid=7195" frameborder="0" width="468" scrolling="no" height="60" alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;"&gt;
&lt;a href="http://www.ciberbanner.com/" target="_new"&gt;
ciberbanner.com intercambio de banners&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-2003908660108590945?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/2003908660108590945/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=2003908660108590945' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/2003908660108590945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/2003908660108590945'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/07/expresiones-regulares-iv-caracteres.html' title='Expresiones Regulares IV – Caracteres especiales'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-3456049661495839154</id><published>2007-07-17T12:53:00.000-03:00</published><updated>2007-07-17T13:00:58.643-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Aplicaciones AJAX listas para usar</title><content type='html'>&lt;p&gt;¡ Y grátis !&lt;/p&gt;
&lt;p&gt;
Hemos encontrado dos estupendos sitios donde  bajar aplicaciones AJAX realmente interesantes, de código abierto.  Una de ellos es &lt;a href="http://www.ajaxrain.com/index.php"&gt;AJAX RAIN&lt;/a&gt; y el otro es &lt;a href="http://www.smashingmagazine.com/2007/06/20/ajax-javascript-solutions-for-professional-coding/"&gt;Smashing Magazine&lt;/a&gt;.  Hay cientos de aplicaciones.  No están muy comentadas, pero las imágenes que sirven de enlace hacen bastante entendible de que se trata.&lt;/p&gt;&lt;p&gt;Para no perdérselos.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-3456049661495839154?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/3456049661495839154/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=3456049661495839154' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3456049661495839154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3456049661495839154'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/07/aplicaciones-ajax-listas-para-usar.html' title='Aplicaciones AJAX listas para usar'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7105676877654111671</id><published>2007-06-07T11:16:00.000-03:00</published><updated>2007-06-07T12:17:44.243-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Expresiones regulares III</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Validación de un número telefónico&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Supongamos que debes validar un número telefónico que tiene código de área, característica y resto del número. Utilizamos un sólo campo de entrada de datos y solicitamos al usuario que lo ingrese en el formato NNN-NNN-NNNN (donde N representa a cada dígito), sabiendo que el código de área nunca comienza con un 1 o un 0. La expresión que realizará el control sería: &lt;p&gt;&lt;/p&gt;
&lt;pre&gt;
(/^[2-9]&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;{&lt;/span&gt;&lt;/span&gt;2&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;}&lt;/span&gt;&lt;/span&gt;-&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;{&lt;/span&gt;&lt;/span&gt;3&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;}&lt;/span&gt;&lt;/span&gt;-&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;{&lt;/span&gt;&lt;/span&gt;4&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;}&lt;/span&gt;&lt;/span&gt;$/.test(&lt;span style="color:#ff00ff;"&gt;'222-333-4444'&lt;/span&gt;);
&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;^[2-9]&lt;/b&gt; controlará que el primer grupo de dígitos comience con los digitos 2 a 9.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;\d{2}&lt;/b&gt; indica que el primer dígito del el primer grupo esté seguido por dos dígitos más.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;-&lt;/b&gt; indica en que posición deben ir el guión.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;\d{3}&lt;/b&gt; indica que al guión anterior deben seguirle 3 dígitos.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;-&lt;/b&gt; indica en que posición deben ir el guión.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;\d{4}$&lt;/b&gt; indica que al guión deben anterior seguirle 4 dígitos, y que éste es el final del número ($)&lt;/p&gt;

&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Limitar el tamaño del dato a controlar&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Con expresiones puedes regular el tamaño de los datos que debe entrar el usuario. La siguiente expresión retorna &lt;em&gt;true&lt;/em&gt; si el número testeado consta de dos dígitos:&lt;/p&gt;
&lt;pre&gt;
&lt;span style="color:#ff00ff;"&gt;document&lt;/span&gt;.write(/^&lt;span style="color:#6a5acd;"&gt;\d\d&lt;/span&gt;$/.test(22));
&lt;/pre&gt;
&lt;p&gt;Simplemente decimos que debe comenzar con un dígito (&lt;strong&gt;^\d&lt;/strong&gt;) y a éste sólo le puede seguir otro dígito (&lt;strong&gt;\d&lt;/strong&gt;). Esta expresión también la podemos escribir utilizando las llaves (&lt;strong&gt;{}&lt;/strong&gt;):&lt;/p&gt;
&lt;pre&gt;
&lt;span style="color:#ff00ff;"&gt;document&lt;/span&gt;.write(/^&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;{&lt;/span&gt;&lt;/span&gt;2&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;}&lt;/span&gt;&lt;/span&gt;$/.test(22));
&lt;/pre&gt;
&lt;p&gt;El número encerrado entre las llaves especifica exáctamente la cantidad de dígitos que se deben ingresar. Sin embargo, puede tratarse de una cantidad variable de dígitos lo que se espera:&lt;/p&gt;
&lt;pre&gt;&lt;span style="color:#ff00ff;"&gt;document&lt;/span&gt;.write(/^&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;{&lt;/span&gt;&lt;/span&gt;2,4&lt;span style="color:#ff0000;"&gt;&lt;span style="color:red;"&gt;}&lt;/span&gt;&lt;/span&gt;$/.test(222));&lt;/pre&gt;
&lt;p&gt;En este caso, son dos los números encerrados entre las llaves, separados por una coma, lo que indica al testeador que se espera un número de dos dígitos como mínimo y cuatro dígitos como máximo.&lt;/p&gt;


&lt;span style="color:#990000;"&gt;&lt;strong&gt;Ver también&lt;/strong&gt;&lt;/span&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://web-ar.blogspot.com/2007/05/expresiones-regulares-en-javascript.html"&gt;Expresiones regulares en Javascript &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://web-ar.blogspot.com/2007/06/expresiones-regulares-ii-validacin-de.html"&gt;Expresiones regulares II - Validación de números&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;


&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align="top" marginwidth="0" marginheight="0" src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;amp;cid=7195" frameborder="0" width="468" scrolling="no" height="60" alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;


&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;"&gt;
&lt;a href="http://www.ciberbanner.com/" target="_new"&gt;
ciberbanner.com intercambio de banners&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7105676877654111671?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7105676877654111671/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7105676877654111671' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7105676877654111671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7105676877654111671'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/06/expresiones-regulares-iii.html' title='Expresiones regulares III'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-3291848756067667755</id><published>2007-06-07T10:48:00.000-03:00</published><updated>2007-06-07T11:14:47.854-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Nació COMET</title><content type='html'>&lt;p&gt;Si ya te habías aprendido y, tal vez, has puesto en práctica todo ese rollo del &lt;a href="http://es.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt;... Te tengo malas noticias (bah, son buenas, pero según como se mire): se está comenzando a utilizar una ¿nueva? técnica denominada &lt;a href="http://es.wikipedia.org/wiki/Comet"&gt;COMET&lt;/a&gt;, la cual ya implementa el &lt;em&gt;framework&lt;/em&gt; &lt;a href="http://alex.dojotoolkit.org/?p=545"&gt;Dojo&lt;/a&gt;, que consiste en hacer algo similar a AJAX: mostrar información sin refrescar toda la página.&lt;/p&gt;&lt;p&gt;Con AJAX, el navegador hace solicitudes al servidor de páginas web para refrescar información en determinadas partes de la página que está utilizando esta tecnología. El navegador solicita la información, el servidor la envía y se corta la comunicación.&lt;/p&gt;&lt;p&gt;En el caso de Comet, se establece una comunicación con el servidor y esta continua "viva" durante todo el tiempo que sea necesario, &lt;strong&gt;y es el servidor quien envía información&lt;/strong&gt;, aun sin habersela solicitado. Esta es una técnica ya conocida que se denominaba &lt;strong&gt;&lt;em&gt;push&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Ya hay sitios que están utilizando esta técnica: &lt;a href="http://www.gmail.com"&gt;GTalk&lt;/a&gt; en el GMail, y &lt;a href="http://es.wikipedia.org/wiki/Meebo"&gt;Meebo&lt;/a&gt; son dos buenos ejemplos.&lt;/p&gt;&lt;p&gt;Si pensaste que ya todo estaba inventado... Queda mucho más por inventar... por suerte.&lt;/p&gt;

&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align="top" marginwidth="0" marginheight="0" src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;amp;cid=7195" frameborder="0" width="468" scrolling="no" height="60" alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;


&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;"&gt;
&lt;a href="http://www.ciberbanner.com/" target="_new"&gt;
ciberbanner.com intercambio de banners&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-3291848756067667755?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/3291848756067667755/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=3291848756067667755' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3291848756067667755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3291848756067667755'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/06/naci-comet.html' title='Nació COMET'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-1328665937687244513</id><published>2007-06-01T14:17:00.000-03:00</published><updated>2007-06-01T14:47:57.819-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Expresiones regulares II - Validación de números</title><content type='html'>&lt;p&gt;Siguiendo con esta entrega sobre el uso expresiones regulares en la validación de datos en Javascript, veremos ahora como validar números.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Validación de un entero&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;span style="color:#008080;"&gt;var&lt;/span&gt; myNum = 15;
&lt;span style="color:#008080;"&gt;var&lt;/span&gt; bFound = /^&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;+$/.test(myNum);
&lt;span style="color:#ff00ff;"&gt;document&lt;/span&gt;.write(bFound);
&lt;/pre&gt;

&lt;p&gt;En el &lt;em&gt;script&lt;/em&gt; que vemos arriba, el símbolo &lt;span style="color:#ff0000;"&gt;^&lt;/span&gt; que se testeará el valor desde el comienzo y el símbolo &lt;span style="color:#ff0000;"&gt;$&lt;/span&gt;
indica que se continuará hasta el final del valor. &lt;strong&gt;&lt;span style="color:#cc0000;"&gt;\d&lt;/span&gt;&lt;/strong&gt; establece que buscaremos sólo dígitos numéricos y, finalmente, el símbolo &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;+&lt;/span&gt;&lt;/strong&gt; establece que es válido encontrar más de un dígito numérico. Si este último signo, el control de número fallaría puesto que le estaríamos diciendo que controle un valor que comienza y termina con el primer dígito.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Validación de números con decimales&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En el ejemplo anterior, si el número tuviera decimales, la validación retornaría &lt;strong&gt;&lt;em&gt;false&lt;/em&gt;&lt;/strong&gt; puesto que la expresión regular no adminte otra cosa que dígitos numéricos.&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#ff00ff;"&gt;document&lt;/span&gt;.write(/^&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;+&lt;span style="color:#6a5acd;"&gt;\.&lt;/span&gt;?&lt;span style="color:#6a5acd;"&gt;\d&lt;/span&gt;*$/.test(&lt;span style="color:#ff00ff;"&gt;'15.22'&lt;/span&gt;));
&lt;/pre&gt;

&lt;p&gt;En este ejemplo veremos como detectar el punto (o coma) decimal.&lt;/p&gt;&lt;p&gt;Observemos:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;^\d+&lt;/strong&gt;&lt;/span&gt; como en el ejemplo anterior indica que se debe revisar desde el comienzo del valor y que deberá encontrar sólo dígitos numéricos, y uno o más.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;\.?&lt;/span&gt;&lt;/strong&gt; indica que se puede encontrar un punto decimal (para paises con como, reemplazarlo), y el signo &lt;strong&gt;?&lt;/strong&gt; indica que puede faltar, lo cual hace que los valores enteros también sean válidos.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;\d*$&lt;/span&gt;&lt;/strong&gt; finalmente, indicamos que después del punto decimal se pueden encontar cero o más dígitos numéricos hasta el final del valor.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://web-ar.blogspot.com/2007/05/expresiones-regulares-en-javascript.html"&gt;Expresiones regulares en Javascript (I)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-1328665937687244513?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/1328665937687244513/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=1328665937687244513' title='11 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1328665937687244513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1328665937687244513'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/06/expresiones-regulares-ii-validacin-de.html' title='Expresiones regulares II - Validación de números'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-1175897571682998564</id><published>2007-06-01T11:22:00.000-03:00</published><updated>2007-06-01T11:27:56.055-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech-News'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>netvibes.com</title><content type='html'>&lt;p&gt;Recientemente &lt;a href="http://www.seomoz.org/"&gt;SEOmoz&lt;/a&gt; otorgó los premios a las mejores Web 2.0.  Entre otras, &lt;strong&gt;&lt;a href="http://www.netvibes.com"&gt;netvibes&lt;/a&gt;&lt;/strong&gt; recibió el premio a la mejor página de inicio y me parece que lo merece largamente.  Es de diseño sencillo y muy clara.  Realmente sorprendente con la velocidad que obtiene la información que necesito.  Más que recomendable para aquellos que les gustan estas cosas&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-1175897571682998564?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/1175897571682998564/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=1175897571682998564' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1175897571682998564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/1175897571682998564'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/06/netvibescom.html' title='netvibes.com'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7988494940110630267</id><published>2007-06-01T11:06:00.000-03:00</published><updated>2007-07-12T14:47:08.200-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech-News'/><category scheme='http://www.blogger.com/atom/ns#' term='Diseño'/><title type='text'>digilicious.cl</title><content type='html'>&lt;p&gt;10 diseñadores chilenos se juntaron para hacer &lt;a href="http://www.digilicious.cl/"&gt;www.digilicious.cl&lt;/a&gt;, un blog de
diseño digital de actualización diaria con temas que van desde diseño
web hasta el motion graphics, pasando por el 3d, la publicidad, lo
audiovisual y la gráfica impresa.&lt;/p&gt;

&lt;p&gt;En este sitio he encontrado una interesante guia de &lt;a href="http://www.digilicious.cl/2007/05/24/43-errores-que-no-deberias-cometer-cuando-disenes-un-sitio/"&gt;43 errores que NO debes cometer&lt;/a&gt; al diseñar un sitio web. Claro que es el criterio de estos amigos chilenos, pero a mi me pareció bastante interesante y lo recomiendo fervientemente.&lt;/p&gt;

&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe marginwidth="0" marginheight="0" hspace="0" vspace="0" src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" alt="ciberbanner.com intercambio de banners" align="top" frameborder="0" height="60" scrolling="no" width="468"&gt;&amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;gt;&lt;/iframe&gt;


&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;"&gt;
&lt;a href="http://www.ciberbanner.com/" target="_new"&gt;
ciberbanner.com intercambio de banners&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7988494940110630267?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7988494940110630267/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7988494940110630267' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7988494940110630267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7988494940110630267'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/06/digiliciouscl.html' title='digilicious.cl'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7198696545890970601</id><published>2007-05-29T17:06:00.000-03:00</published><updated>2007-05-29T17:23:33.106-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Prototype'/><title type='text'>Version Beta de la Scriptaculous</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;La última version de la librería scriptaculous (1.7.0) arroja un error de memoria al utilizarse con la versión final de la lib. prototype (1.5.1)
Para solventar este error, se creo una versión beta (1.7.1) de esta libreria compatible con la mencionada anteriormente.
También, posee optimizaciones de velocidad y estabilidad.

&lt;/span&gt;
&lt;span style="font-family:trebuchet ms;"&gt;La descarga esta disponible de esta página: &lt;/span&gt;&lt;a href="http://mir.aculo.us/2007/5/25/script-aculo-us-1-7-1-beta-3"&gt;&lt;span style="font-family:trebuchet ms;"&gt;http://mir.aculo.us/2007/5/25/script-aculo-us-1-7-1-beta-3&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7198696545890970601?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7198696545890970601/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7198696545890970601' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7198696545890970601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7198696545890970601'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/version-beta-de-la-scriptaculous.html' title='Version Beta de la Scriptaculous'/><author><name>Adrian</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_1fD4v2ZsQKw/R5YQJ4y0YUI/AAAAAAAAAAY/E8kqZYjEPfY/S220/naraneo%40sar001704+avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-8709507817116496053</id><published>2007-05-16T10:50:00.000-03:00</published><updated>2007-05-16T11:40:24.535-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Expresiones regulares en Javascript</title><content type='html'>&lt;p&gt;En Javascript se pueden utilizar expresiones regulares para controlar el ingreso a datos, aunque por la complegidad de las mismas, muchos progamadores no las utilizan. Aquellos que estén familiarizados con el editor &lt;a href="http://es.wikipedia.org/wiki/Vi"&gt;VI&lt;/a&gt; de &lt;a href="http://es.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; o el &lt;a href="http://es.wikipedia.org/wiki/Gvim"&gt;gVim&lt;/a&gt;, que es la versión para Windows, no tienen mayores problemas para utilizar las expresiones regulares. Estas expresiones, también, son conocidas por aquellos que manejan el editor en linea de Unix llamado &lt;em&gt;&lt;a href="http://es.wikipedia.org/wiki/SED_%28Unix%29"&gt;sed&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Acá intentare dejarles algunas de las que más utilizo, aunque debo decirles que he visto algunas realmente complicadad pero bien efectivas.&lt;/p&gt;

&lt;p&gt;Una de las formas de utilización de las expresiones regulares es con el método test. Una forma simple de su utilización la muestra el siguiente ejemplo. El navegador imprimirá true si la palabra &lt;em&gt;web&lt;/em&gt; se encuentra en el texto &lt;em&gt;web ar&lt;/em&gt;.&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#ff00ff"&gt;document&lt;/font&gt;.write(/web/.test(&lt;font color="#ff00ff"&gt;'web ar'&lt;/font&gt;));
&lt;/pre&gt;

&lt;p&gt;Pero comencemos a complicar las cosas. Las expresiones regulares tienen algunos caracteres reservados que hacen las veces de modificadores en su forma de actuar. Entre ellos tenemos el signo &lt;strong&gt;^&lt;/strong&gt; y el signo &lt;strong&gt;$&lt;/strong&gt; que indican el rango de caracteres en que se buscará. El signo &lt;strong&gt;^&lt;/strong&gt; indica "&lt;em&gt;comenzar desde el principio&lt;/em&gt;" y &lt;strong&gt;$&lt;/strong&gt; significa "&lt;em&gt;revisar hasta el final&lt;/em&gt;". En el siguiente ejemplo se buscará si un string comienza con una letra determinada:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#008080"&gt;&lt;b&gt;//Retornara true&lt;/b&gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;var&lt;/font&gt; bFound = /^j/.test(&lt;font color="#ff00ff"&gt;'julio'&lt;/font&gt;);
alert(bFound);
&lt;/pre&gt;

&lt;p&gt;En el siguiente ejemplo, el signo $ hará que se revise si la cadena pasada como parámetro a test termina con 
el caracter indicado:&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#008080"&gt;&lt;b&gt;//retornará true&lt;/b&gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;var&lt;/font&gt; bFound = /o$/.test(&lt;font color="#ff00ff"&gt;'julio'&lt;/font&gt;);
alert (bFound);

&lt;font color="#008080"&gt;&lt;b&gt;//retornará false&lt;/b&gt;&lt;/font&gt;
&lt;font color="#0000ff"&gt;var&lt;/font&gt; bFound = /d$/.test(&lt;font color="#ff00ff"&gt;'julio'&lt;/font&gt;);
alert (bFound);
&lt;/pre&gt;

&lt;p&gt;Espero que se vaya entendiendo.  Seguiré en próximas entregas, pero para asustarlos les dejo aquí una función para controlar una dirección de correo electrónico (advierto que se puede mejorar).&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#0000ff"&gt;function&lt;/font&gt; checkMail(txMail)
&lt;font color="#0000ff"&gt;{&lt;/font&gt;
   &lt;font color="#0000ff"&gt;var&lt;/font&gt; filter  = &lt;font color="#ff00ff"&gt;/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/&lt;/font&gt;;
   &lt;font color="#0000ff"&gt;if&lt;/font&gt; ( ! filter.test(txMail) )
   &lt;font color="#0000ff"&gt;{&lt;/font&gt;
     alert(&lt;font color="#ff00ff"&gt;'Dirección de e-mail incorrecta'&lt;/font&gt;)
     &lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;false&lt;/font&gt;
   &lt;font color="#0000ff"&gt;}&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;true&lt;/font&gt;
&lt;font color="#0000ff"&gt;}&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;
&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-8709507817116496053?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/8709507817116496053/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=8709507817116496053' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8709507817116496053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/8709507817116496053'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/expresiones-regulares-en-javascript.html' title='Expresiones regulares en Javascript'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-5157459671721588152</id><published>2007-05-16T10:37:00.000-03:00</published><updated>2007-05-16T10:48:26.332-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Reemplazo de carcateres en Javascript</title><content type='html'>&lt;p&gt;En Javascript todo texto es un objeto de la clase &lt;em&gt;&lt;strong&gt;String&lt;/strong&gt;&lt;/em&gt;. Esta clase tiene un método poco utilizado pero por demás interesante a la hora de reemplazar unos caracteres por otros. Ese método es &lt;em&gt;&lt;strong&gt;replace&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;El método toma dos parámetros: una expresión regular o un objeto &lt;em&gt;string&lt;/em&gt;, y un objeto &lt;em&gt;string&lt;/em&gt; que contiene los caracteres de reemplazo.&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#008080;"&gt;&lt;b&gt;//Reemplaza todas las j y o con d&lt;/b&gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; myStrg = &lt;span style="color:#ff00ff;"&gt;'Julio Gonzalez'&lt;/span&gt;;
&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; myStrg2 = myStrg.replace(/[jo]/gi,&lt;span style="color:#ff00ff;"&gt;'d'&lt;/span&gt;);
alert(myStrg2);
&lt;/pre&gt;

&lt;p&gt;En en ejemplo, la expresión regular tiene dos modificadores &lt;em&gt;&lt;strong&gt;g&lt;/strong&gt;&lt;/em&gt;, que indica que el cambio será global, e &lt;em&gt;&lt;strong&gt;i&lt;/strong&gt;&lt;/em&gt;, que indica que no se hará diferencia entre mayúsculas y minúsculas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-5157459671721588152?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/5157459671721588152/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=5157459671721588152' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5157459671721588152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5157459671721588152'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/reemplazo-de-carcateres-en-javascript.html' title='Reemplazo de carcateres en Javascript'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-2394181428161483855</id><published>2007-05-09T00:29:00.000-03:00</published><updated>2007-05-09T00:56:22.285-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Creacion on-line de gif animados de tipo "Loading..."</title><content type='html'>&lt;div align="left"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Les dejo un link bastante interesante, util para aquellos que no se deciden por cual animación poner en sus pantallas de espera comunmente llamadas "Loading".&lt;/span&gt;
&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Podemos elegir entre bastantes tipos de indicadores, color de icono y color de fondo o fondo transparente. &lt;/span&gt;
&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;&lt;/span&gt;
&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;
Ejemplos:&lt;/span&gt; &lt;/div&gt;&lt;div align="left"&gt;
&lt;/div&gt;&lt;p align="center"&gt;&lt;img src="http://www.ajaxload.info/cache/ff/ff/ff/00/80/ff/24-1.gif" /&gt;&lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://www.ajaxload.info/cache/ff/ff/ff/00/00/ff/8-1.gif" /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Link: &lt;a href="http://www.ajaxload.info/"&gt;AjaxLoad&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-2394181428161483855?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/2394181428161483855/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=2394181428161483855' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/2394181428161483855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/2394181428161483855'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/creacion-on-line-de-gif-animados-de.html' title='Creacion on-line de gif animados de tipo &quot;Loading...&quot;'/><author><name>Adrian</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_1fD4v2ZsQKw/R5YQJ4y0YUI/AAAAAAAAAAY/E8kqZYjEPfY/S220/naraneo%40sar001704+avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-6140104649717555297</id><published>2007-05-08T13:46:00.000-03:00</published><updated>2007-05-15T14:31:29.828-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>El ComboBox de VB.NET (II)</title><content type='html'>&lt;p&gt;Siguiendo con la clase ComboBox y su falta de la propiedad TAG para almacenar objetos, tal como lo hacíamos en VB6, acá les muestro como almacenar gran cantidad de datos en cada opción.&lt;/p&gt;

&lt;p&gt;Cuando rellenamos un ComboBox “&lt;em&gt;manualmente&lt;/em&gt;”:&lt;/p&gt;

&lt;pre&gt;
myCombo.ItemsAdd(&lt;span style="color:#cc0000;"&gt;“Texto a mostrar”&lt;/span&gt;)
&lt;/pre&gt;

&lt;p&gt;Lo que en realidad estamos haciendo es agregando un objeto de tipo STRING, mediante el método Add. Este método acepta como parámetro un objeto de cualquier tipo y muestra como opción el resultado del método ToString del objeto.&lt;/p&gt;

&lt;p&gt;Teniendo en cuenta esto, podemos crear nuestra propia clase para almacenar datos en el item, siempre teniendo cuidado de sobreescribir el método ToString para mostrar lo que queremos mostrar.&lt;/p&gt;

&lt;p&gt;Primero creamos la clase&lt;/p&gt;
&lt;pre&gt;
&lt;font color="#2e8b57"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Class&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;myClass&lt;/font&gt;
    &lt;font color="#2e8b57"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/font&gt; myID &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/font&gt;
    &lt;font color="#2e8b57"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/font&gt; myText &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;

    /* constructor */
   &lt;font color="#804040"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/font&gt;(&lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; ID &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/font&gt;, &lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; tx &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;)
      myID = ID
      myText = tx
   &lt;font color="#804040"&gt;&lt;b&gt;End Sub&lt;/b&gt;&lt;/font&gt;

   &lt;font color="#804040"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Property&lt;/b&gt;&lt;/font&gt; Text() &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;
      &lt;font color="#804040"&gt;&lt;b&gt;Get&lt;/b&gt;&lt;/font&gt;
         Text = myText
      &lt;font color="#804040"&gt;&lt;b&gt;End Get&lt;/b&gt;&lt;/font&gt;
      &lt;font color="#804040"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/font&gt;(&lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; tx &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;)
         myText = tx
      &lt;font color="#804040"&gt;&lt;b&gt;End Set&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;End Property&lt;/b&gt;&lt;/font&gt;


   &lt;font color="#804040"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Property&lt;/b&gt;&lt;/font&gt; ID() &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;
      &lt;font color="#804040"&gt;&lt;b&gt;Get&lt;/b&gt;&lt;/font&gt;
         ID = myID
      &lt;font color="#804040"&gt;&lt;b&gt;End Get&lt;/b&gt;&lt;/font&gt;
      &lt;font color="#804040"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/font&gt;(&lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; id &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/font&gt;)
         myID = id
      &lt;font color="#804040"&gt;&lt;b&gt;End Set&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;End Property&lt;/b&gt;&lt;/font&gt;

   &lt;font color="#804040"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Overrides&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/font&gt; ToString() &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;
      ToString = myText
   &lt;font color="#804040"&gt;&lt;b&gt;End Function&lt;/b&gt;&lt;/font&gt;
&lt;font color="#2e8b57"&gt;&lt;b&gt;End Class&lt;/b&gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;Cómo utilizamos esta clase, pues bien, para ingresar los datos en el combo&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#804040"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/font&gt;.myCombo
   .Items.Add(&lt;font color="#804040"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/font&gt; myClass( &lt;font color="#ff00ff"&gt;-1&lt;/font&gt;, “”))
   .Items.Add(&lt;font color="#804040"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/font&gt; myClass( &lt;font color="#ff00ff"&gt;2&lt;/font&gt;, “Dato con nro. 2”))
   .Items.Add(&lt;font color="#804040"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/font&gt; myClass( &lt;font color="#ff00ff"&gt;23&lt;/font&gt;, “Dato con nro. 23”))
&lt;font color="#804040"&gt;&lt;b&gt;End With&lt;/b&gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;Para rescatar los datos del combo tenemos que transformar el valor obtenido al formato correcto:&lt;/p&gt;

&lt;pre&gt;
myVar = &lt;font color="#2e8b57"&gt;&lt;b&gt;Ctype&lt;/b&gt;&lt;/font&gt;(&lt;font color="#804040"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/font&gt;.myCombo.SelectedItem, &lt;font color="#804040"&gt;&lt;b&gt;myClass&lt;/b&gt;&lt;/font&gt;)
&lt;/pre&gt;

&lt;p&gt;Y luego podemos acceder a los valores mediante las propiedades de la clase&lt;/p&gt;

&lt;pre&gt;
myVar.Text
myVar.ID
&lt;/pre&gt;

&lt;p&gt;Sencillo, ¿no?&lt;/p&gt;

&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-6140104649717555297?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/6140104649717555297/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=6140104649717555297' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6140104649717555297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6140104649717555297'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/el-combobox-de-vbnet-ii.html' title='El ComboBox de VB.NET (II)'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7487215442774393799</id><published>2007-05-05T21:49:00.000-03:00</published><updated>2007-05-15T14:34:03.586-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>El ComboBox de VB.NET</title><content type='html'>&lt;p&gt;Conocido es, por aquellos que desarrollamos en VB6, y migramos a VB.NET que la clase &lt;strong&gt;ComboBox&lt;/strong&gt; ha cambiado respecto de su antecesor. Una de las cosas que ha perdido es la propidad &lt;em&gt;TAG&lt;/em&gt; que nos permitía almecenar datos adicionales a los mostrados al usuario.&lt;/p&gt;&lt;p&gt;Generalmente el ComboBox es llenado desde la lectura de una tabla de una base de datos, dese la cual mostrábamos la descripción al usuario y en la propiead &lt;em&gt;TAG&lt;/em&gt; almacenabamos el código de esa descripción, que es lo que realmente le interesa a nuestro sistema y para nuestra base de datos relacional.&lt;/p&gt;&lt;p&gt;En VB.NET la clase ComboBox tiene una propiedad, &lt;em&gt;DataSource&lt;/em&gt;, que nos permite llenar los &lt;em&gt;items&lt;/em&gt; del objeto directamente con un objeto &lt;em&gt;DataTable&lt;/em&gt; o &lt;em&gt;DataSet&lt;/em&gt;, previamente llenado con la lectura a una base de datos. Adicionalmente debemos indicar, en la propiedad &lt;em&gt;DisplayMember&lt;/em&gt;, que columna de la tabla será vista por el usuario y, de forma opcional, podemos indicar otra columna de la tabla en la propiedad &lt;em&gt;ValueMember&lt;/em&gt;, a fin de obtener su valor, al seleccionarse una opción, en la propiedad &lt;em&gt;SelectedValue&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;Pero ¿qué hacemos si necesitamos rescatar más datos? Pues hay un truco poco conocido. Supongamos que nuestro objeto &lt;em&gt;DataTable&lt;/em&gt;, con el que llenáramos el ComboBox tenía las siguientes columnas: ID, DESCRIPCION, COD_INTERNO (en ese orden). Cuando rescatamos la propiedad &lt;em&gt;Items&lt;/em&gt; podemos utilizar subíndices que indiquen la posición de la columna cuyo valor queremos rescatar, teniendo en cuenta que el subíndice cero apunta a la primera columna, en nuestro ejemplo ID.&lt;/p&gt;&lt;p&gt;Acá les dejo una pequeña rutina que mustra como hacer esto:&lt;/p&gt;
&lt;pre&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'****************************************************************************&lt;/b&gt;&lt;/font&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'* BUSCA UN ELEMENTO EN UN COMBO QUE FUE LLENADO CON UN DATASOURCE&lt;/b&gt;&lt;/font&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'* Parámetros&lt;/b&gt;&lt;/font&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'*    cmb         objeto combobox&lt;/b&gt;&lt;/font&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'*    txtToFind   texto a encontrar&lt;/b&gt;&lt;/font&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'*    colPos      posicion de la columa a comparar en el datasource&lt;/b&gt;&lt;/font&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'****************************************************************************&lt;/b&gt;&lt;/font&gt;
&lt;font color="#804040"&gt;&lt;b&gt;Function&lt;/b&gt;&lt;/font&gt; SearchInComboBox(&lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; cmb &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; ComboBox, _
                          &lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; txtToFind &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;, _
                          &lt;font color="#804040"&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; colPos &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/font&gt; = &lt;font color="#ff00ff"&gt;0&lt;/font&gt;) _
                          &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/font&gt; I &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/font&gt; cmb
      &lt;font color="#804040"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/font&gt; I = &lt;font color="#ff00ff"&gt;0&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;To&lt;/b&gt;&lt;/font&gt; .Items.Count - &lt;font color="#ff00ff"&gt;1&lt;/font&gt;
         &lt;font color="#804040"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/font&gt; .Items(I)(colPos).ToString() = txtToFind &lt;font color="#804040"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/font&gt;
            &lt;font color="#804040"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/font&gt; I
         &lt;font color="#804040"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/font&gt;
      &lt;font color="#804040"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/font&gt; I
   &lt;font color="#804040"&gt;&lt;b&gt;End With&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;Return&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;-1&lt;/font&gt;
&lt;font color="#804040"&gt;&lt;b&gt;End Function&lt;/b&gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;Con esta rutina podemos ubicar un elemento en el ComboBox basándonos en cualquier
columna del origen de dato que lo llenó. La rutina retorna el índice del elemento o
menos uno si no lo encontrase.&lt;/p&gt;
&lt;p&gt;¿Cómo se utiliza?&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#804040"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/font&gt;.myComboBox.SelectedIndex = SearchInComboBox(&lt;font color="#804040"&gt;&lt;b&gt;Me&lt;/b&gt;&lt;/font&gt;.myComboBox, &lt;font color="#ff00ff"&gt;&amp;quot;53&amp;quot;&lt;/font&gt;, &lt;font color="#ff00ff"&gt;0&lt;/font&gt;)
&lt;/pre&gt;

&lt;p&gt;En este ejemplo pedimos que se seleccione el elemento cuyo ID es 53, el tercer parámetro podríamos obviarlo puesto que la columna que deseamos comparar ocupa la primera posición (índice 0).&lt;/p&gt;&lt;p&gt;En &lt;a href="http://www.thescarms.com/dotNet/bindcombobox.aspx"&gt;este enlace&lt;/a&gt; podrán encontrar un ejemplo de cómo llenar un combobox a partir de un objeto DataSet, sin tener que leer una tabla de una base de datos.&lt;/p&gt;

 &lt;!-- Begin BidVertiser code --&gt;
&lt;P&gt;
&lt;SCRIPT LANGUAGE="JavaScript1.1" SRC="http://bdv.bidvertiser.com/BidVertiser.dbm?pid=60394&amp;bid=140716"&gt;&lt;/SCRIPT&gt;
&lt;noscript&gt;&lt;a href="http://www.bidvertiser.com"&gt;affiliate program&lt;/a&gt;&lt;/noscript&gt;
&lt;/P&gt;
&lt;!-- End BidVertiser code --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-7487215442774393799?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/7487215442774393799/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=7487215442774393799' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7487215442774393799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/7487215442774393799'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/el-combobox-de-vbnet.html' title='El ComboBox de VB.NET'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-288047217251970438</id><published>2007-05-03T15:54:00.000-03:00</published><updated>2007-05-15T14:55:46.585-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>Tips para el TreeView</title><content type='html'>&lt;p&gt;Estoy empezando a trabajar con una vieja aplicación hecha en Visual Basic 6, para convertirla en Visual Basic .Net y uno de los primeros problemas con los que me he topado es con el uso del control TreeView, que difiere un poco con el viejo VB6, en cuanto a su llenado y en cuanto a encontrar un nodo dentro del "&lt;em&gt;arbol&lt;/em&gt;" con el sólo dato de su clave de acceso.&lt;/p&gt;

&lt;p&gt;Voy a dejar aquí dos ejemplos, el primero de como llenar un &lt;strong&gt;TreeView&lt;/strong&gt; a partir de un objeto &lt;strong&gt;DataTable&lt;/strong&gt;, que contiene la lectura de una tabla de mi base de datos. Y el segundo ejemplo es como encontrar un nodo conociendo su clave (ahora &lt;strong&gt;NAME&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Para el primer ejemplo, suponemos que tienes una conexión establecida a una base de datos, que puede ser mySQL, y que en ella tenemos una tabla que contiene todas las opciones de menú y con ella llenaremos el TreeView.

De esta tabla &lt;span style="color:#660000;"&gt;&lt;em&gt;menuKey&lt;/em&gt;&lt;/span&gt; es el "nombre del menú" (su clave), &lt;span style="color:#990000;"&gt;&lt;em&gt;menuDescription&lt;/em&gt;&lt;/span&gt; es el texo que aparecerá a la vista del usuario del TreeView, y &lt;span style="color:#990000;"&gt;&lt;em&gt;menuKeyParent&lt;/em&gt;&lt;/span&gt; es el "nombre del menú" del cual "cuelga" el menú descripto en esta fila.&lt;/p&gt;

&lt;p&gt;Para esta tarea, también, me valgo del objeto &lt;strong&gt;DataView&lt;/strong&gt; que permite filtrar los datos del &lt;em&gt;DataTable&lt;/em&gt;. Además, observese que la función &lt;em&gt;&lt;span style="color:#3333ff;"&gt;InsertTVMenuItems&lt;/span&gt;&lt;/em&gt; es llamada recursivamente. Sobre esto sólo hay que tener en cuenta la cantidad de llamadas recursivas que se van a hacer sin haber retornado (&lt;em&gt;return&lt;/em&gt;) de ellas, puesto que en cada llamada el programa creará nuevas variables locales, independientes de las ya creadas, con el consecuente consumo de memoria. Obviamente, cada retorno provoca la liberación de recursos.&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#008080;"&gt;&lt;b&gt;'rellena el tree view&lt;/b&gt;&lt;/span&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; RellenaTreeView1()
   &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; Itm &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; TreeNode()
   &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; adapter &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; MySqlDataAdapter()
   &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; data &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataTable()
   &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; Sql &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;

   System.Windows.Forms.Cursor.Current = Cursors.WaitCursor

   TreeView1.Nodes.Clear()
   TreeView1.Refresh()

   Sql = &lt;span style="color:#ff00ff;"&gt;"SELECT menuKey,"&lt;/span&gt;
   Sql = Sql &amp;amp; &lt;span style="color:#ff00ff;"&gt;"menuDescription,"&lt;/span&gt;
   Sql = Sql &amp;amp; &lt;span style="color:#ff00ff;"&gt;"menuKeyParent"&lt;/span&gt;
   Sql = Sql &amp;amp; &lt;span style="color:#ff00ff;"&gt;" FROM Menu"&lt;/span&gt;
   Sql = Sql &amp;amp; &lt;span style="color:#ff00ff;"&gt;" ORDER BY menuDescription"&lt;/span&gt;
   adapter.SelectCommand = &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; MySqlCommand(Sql, dbConn)
   adapter.Fill(data)

   &lt;span style="color:#804040;"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; data.Rows.Count = &lt;span style="color:#ff00ff;"&gt;0&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
      data.Dispose()
      adapter.Dispose()
      System.Windows.Forms.Cursor.Current = Cursors.Default
      &lt;span style="color:#804040;"&gt;&lt;b&gt;Exit Sub&lt;/b&gt;&lt;/span&gt;
   &lt;span style="color:#804040;"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/span&gt;

   &lt;span style="color:#008080;"&gt;&lt;b&gt;'comienzo con "0" que es el menuKeyParent que cuelga del root del treeview&lt;/b&gt;&lt;/span&gt;
   InsertTVMenuItems(&lt;span style="color:#ff00ff;"&gt;"0"&lt;/span&gt;, &lt;span style="color:#ff00ff;"&gt;Nothing&lt;/span&gt;, data)

   &lt;span style="color:#008080;"&gt;&lt;b&gt;'libero recursos&lt;/b&gt;&lt;/span&gt;
   data.Dispose()
   adapter.Dispose()
   System.Windows.Forms.Cursor.Current = Cursors.Default
&lt;span style="color:#804040;"&gt;&lt;b&gt;End Sub&lt;/b&gt;&lt;/span&gt;
&lt;span style="color:#804040;"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/span&gt; InsertTVMenuItems(&lt;span style="color:#804040;"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; keyParent &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;, _
                              &lt;span style="color:#804040;"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; nodoPadre &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; TreeNode, _
                               &lt;span style="color:#804040;"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/span&gt; data &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataTable)

   &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; dataFilter &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataView

   &lt;span style="color:#008080;"&gt;&lt;b&gt;'Crear un DataView con los Nodos que dependen del Nodo padre pasado como parámetro.&lt;/b&gt;&lt;/span&gt;
   dataFilter = &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; DataView(data)

   dataFilter.RowFilter = &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Format&lt;/span&gt;(&lt;span style="color:#ff00ff;"&gt;"menuKeyParent ='{0}'"&lt;/span&gt;, keyParent.ToString())

   &lt;span style="color:#008080;"&gt;&lt;b&gt;'Agregar al TreeView los nodos Hijos que se han obtenido en el DataView.&lt;/b&gt;&lt;/span&gt;
   &lt;span style="color:#804040;"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/span&gt; dataRowCurrent &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; DataRowView &lt;span style="color:#804040;"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/span&gt; dataFilter

      &lt;span style="color:#804040;"&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;/span&gt; nuevoNodo &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;New&lt;/b&gt;&lt;/span&gt; TreeNode
      &lt;span style="color:#804040;"&gt;&lt;b&gt;With&lt;/b&gt;&lt;/span&gt; nuevoNodo
         .Text = dataRowCurrent(&lt;span style="color:#ff00ff;"&gt;"menuDescription"&lt;/span&gt;).ToString().&lt;span style="color:#0000ff;"&gt;Trim&lt;/span&gt;()
         .Name = dataRowCurrent(&lt;span style="color:#ff00ff;"&gt;"menuKey"&lt;/span&gt;).ToString().&lt;span style="color:#0000ff;"&gt;Trim&lt;/span&gt;()
      &lt;span style="color:#804040;"&gt;&lt;b&gt;End With&lt;/b&gt;&lt;/span&gt;

      &lt;span style="color:#008080;"&gt;&lt;b&gt;'si el parámetro nodoPadre es nulo es porque es la primera llamada, son los Nodos&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color:#008080;"&gt;&lt;b&gt;'del primer nivel que no dependen de otro nodo.&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color:#804040;"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/span&gt; nodoPadre &lt;span style="color:#804040;"&gt;&lt;b&gt;Is&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;Nothing&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/span&gt;
         TreeView1.Nodes.Add(nuevoNodo)
      &lt;span style="color:#804040;"&gt;&lt;b&gt;Else&lt;/b&gt;&lt;/span&gt;
         &lt;span style="color:#008080;"&gt;&lt;b&gt;'se añade el nuevo nodo al nodo padre.&lt;/b&gt;&lt;/span&gt;
         nodoPadre.Nodes.Add(nuevoNodo)
      &lt;span style="color:#804040;"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/span&gt;

      &lt;span style="color:#008080;"&gt;&lt;b&gt;'Llamada recurrente al mismo método para agregar los Hijos del Nodo recién agregado.&lt;/b&gt;&lt;/span&gt;
      InsertTVMenuItems(dataRowCurrent(&lt;span style="color:#ff00ff;"&gt;"menuKey"&lt;/span&gt;).ToString(), nuevoNodo, data)
   &lt;span style="color:#804040;"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/span&gt; dataRowCurrent
&lt;span style="color:#804040;"&gt;&lt;b&gt;End Sub&lt;/b&gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Sencillo, ¿no?&lt;/p&gt;

&lt;p&gt;Bueno, ahora que tenemos nuestro TreeView llenito de datos, se nos viene en ganas de encontrar uno cuya clave (Name) sea X. Para ello definimos una variable privada a nivel de formulario donde almacenaremos el nodo encontrado durante la búsqueda.&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;Public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;Class&lt;/b&gt;&lt;/span&gt; myForm
   &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/span&gt; myNode &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/span&gt; TreeNode
&lt;/pre&gt;

&lt;p&gt;Luego escribimos el procedimiento que hará la búsqueda, que también opera recursivamente&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#008080"&gt;&lt;b&gt;'busca un nodo en el treeview&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/font&gt; SearchNodeRecursive(&lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; nodes &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; TreeNodeCollection, &lt;font color="#804040"&gt;&lt;b&gt;ByVal&lt;/b&gt;&lt;/font&gt; key &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/font&gt;)
      &lt;font color="#804040"&gt;&lt;b&gt;For&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Each&lt;/b&gt;&lt;/font&gt; n &lt;font color="#2e8b57"&gt;&lt;b&gt;As&lt;/b&gt;&lt;/font&gt; TreeNode &lt;font color="#804040"&gt;&lt;b&gt;In&lt;/b&gt;&lt;/font&gt; nodes
         &lt;font color="#804040"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/font&gt; n.Name.&lt;font color="#0000ff"&gt;Trim&lt;/font&gt;() = key.&lt;font color="#0000ff"&gt;Trim&lt;/font&gt;() &lt;font color="#804040"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/font&gt;
            myNode = n
            &lt;font color="#804040"&gt;&lt;b&gt;Exit Sub&lt;/b&gt;&lt;/font&gt;
         &lt;font color="#804040"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/font&gt;
         SearchNodeRecursive(n.Nodes, key)
      &lt;font color="#804040"&gt;&lt;b&gt;Next&lt;/b&gt;&lt;/font&gt;
   &lt;font color="#804040"&gt;&lt;b&gt;End Sub&lt;/b&gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;Y por último hacemos la llamada al procedimiento SearchNodeRecursive&lt;/p&gt;

&lt;pre&gt;
&lt;font color="#804040"&gt;&lt;b&gt;Private&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;/font&gt; myProc()
      myNode = &lt;font color="#ff00ff"&gt;Nothing&lt;/font&gt;
      SearchNodeRecursive(TreeView1.Nodes, &lt;font color="#ff00ff"&gt;&amp;quot;clave_a_buscar&amp;quot;&lt;/font&gt;)
      &lt;font color="#804040"&gt;&lt;b&gt;If&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;IsNothing&lt;/font&gt;(myNode) &lt;font color="#804040"&gt;&lt;b&gt;Then&lt;/b&gt;&lt;/font&gt;
         &lt;font color="#0000ff"&gt;MsgBox&lt;/font&gt;(&lt;font color="#ff00ff"&gt;&amp;quot;No encontrado&amp;quot;&lt;/font&gt;)
      &lt;font color="#804040"&gt;&lt;b&gt;Else&lt;/b&gt;&lt;/font&gt;
         &lt;font color="#0000ff"&gt;MsgBox&lt;/font&gt;(myNode.Text.&lt;font color="#0000ff"&gt;Trim&lt;/font&gt;())
      &lt;font color="#804040"&gt;&lt;b&gt;End If&lt;/b&gt;&lt;/font&gt;
&lt;font color="#804040"&gt;&lt;b&gt;End Sub&lt;/b&gt;&lt;/font&gt;
&lt;/pre&gt;

&lt;p&gt;De nuevo... tengan en cuenta la cantidad de llamadas recursivas, sobre todo si el programa se instalará en PC's con escasa memoria.&lt;/p&gt;

&lt;!-- Begin BidVertiser code --&gt;
&lt;p&gt;
&lt;script language="JavaScript1.1" src="http://bdv.bidvertiser.com/BidVertiser.dbm?pid=60394&amp;amp;bid=140716"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://www.bidvertiser.com"&gt;affiliate program&lt;/a&gt;&lt;/noscript&gt;
&lt;/p&gt;
&lt;!-- End BidVertiser code --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-288047217251970438?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/288047217251970438/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=288047217251970438' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/288047217251970438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/288047217251970438'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/05/tips-para-el-treeview.html' title='Tips para el TreeView'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-135314555028921303</id><published>2007-04-26T09:32:00.000-03:00</published><updated>2007-05-08T14:00:43.320-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>ShadedBorder - Esquinas redondeadas con sombra</title><content type='html'>&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;RUZEE.ShadedBorder es una libreria pequeña en tamaño, pero de gran utilidad que redondea esquinas y produce efectos de sombra al mejor estilo photoshop.&lt;/span&gt;
&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;
&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Alguna de las características de esta libreria:&lt;/span&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Solo Javascript, &lt;strong&gt;no utiliza imagenes externas&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Esquinas redondeadas.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Sombras.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Efectos Glow.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Bordes de diferentes tamaños.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Anti-Aliasing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Soporte de On-hover (salvo para IE6)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Deshabilitar alguna esquina.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Cambio de borders "on-the-fly"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Transparencia real.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;strong&gt;Cross-Browser: Firefox, Internet Explorer (&gt;=6.0), Safari, Opera (&gt;=9.0)&lt;/strong&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;strong&gt;Pequeño tamaño (7.7KB descomprimido)&lt;/strong&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;No depende de librerías externas.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;LINK: &lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;&lt;a href="http://www.ruzee.com/blog/shadedborder"&gt;http://www.ruzee.com/blog/shadedborder&lt;/a&gt;&lt;/span&gt;


&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-135314555028921303?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/135314555028921303/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=135314555028921303' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/135314555028921303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/135314555028921303'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/04/shadedborder-esquinas-redondeadas-con.html' title='ShadedBorder - Esquinas redondeadas con sombra'/><author><name>Adrian</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp3.blogger.com/_1fD4v2ZsQKw/R5YQJ4y0YUI/AAAAAAAAAAY/E8kqZYjEPfY/S220/naraneo%40sar001704+avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-5297558155279018196</id><published>2007-04-24T15:23:00.000-03:00</published><updated>2007-04-24T17:20:18.735-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>BullZip.com</title><content type='html'>&lt;p&gt;La compañía &lt;a href="http://www.bullzip.com"&gt;Bullzip.com&lt;/a&gt; que comercializa soft a través de Internet, tiene en su web una serie de productos gratuitos para hacernos la vida más fácil en nuestro ordenador personal. Entre ellos&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bullzip.com/products/pdf/info.php"&gt;&lt;strong&gt;PDF Printer&lt;/strong&gt;&lt;/a&gt; que genera una impresora virtual de modo tal que cualquier aplicación que emita informes por impresora, puede hacerlo sobre PDF Printer y generar así un archivo PDF con distintas calidades: pantalla, impresora, ebook, etc. Adminte encriptacion de 128/40 bits, marcas de agua y otras particularidades bastante atractivas.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bullzip.com/products/a2m/info.php"&gt;&lt;strong&gt;Access To MySQL&lt;/strong&gt;&lt;/a&gt; una pequeña pero excelente aplicación para volcar tablas de bases de datos MS Access a mySQL.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bullzip.com/products/exm/info.php"&gt;&lt;strong&gt;Express Menu&lt;/strong&gt;&lt;/a&gt; un complemento para el menú inicial de Windows, que nos permite tener un segundo menú, fácil de crear y de navegar.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Desde ya, la comunidad da las gracias a gente como esta que nos permite tener buenos productos por una mínima donación, la cual sugiero que hagan para que ellos sigan desarrollando aplicaciones graturitas.&lt;/p&gt;

&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-5297558155279018196?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/5297558155279018196/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=5297558155279018196' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5297558155279018196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5297558155279018196'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/04/bullzipcom.html' title='BullZip.com'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-4062428223774427317</id><published>2007-04-24T15:15:00.000-03:00</published><updated>2007-04-24T15:23:27.221-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tech-News'/><title type='text'>Colaborador</title><content type='html'>&lt;p&gt;En esta ardua tarea (aunque no lo parezca) de crear y mantener actualizado un blog, he logrado que un excelente pensador y entusiasta buceador en estas cosas de la informática, haya accedido a colaborar escribiendo sus propias entradas en este blog.  Su nombre es NESTOR Adrian Araneo, ciudadano de la república de Lanús, como yo.&lt;/p&gt;&lt;p&gt;Espero que los datos que aporte sean útiles para todos ustedes.&lt;/p&gt;&lt;p&gt;Bienvenido, NESTOR!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-4062428223774427317?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/4062428223774427317/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=4062428223774427317' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4062428223774427317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/4062428223774427317'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/04/colaborador.html' title='Colaborador'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-6309122755002326519</id><published>2007-04-23T16:45:00.000-03:00</published><updated>2007-05-15T10:14:34.343-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Lectura dinámica de hojas de estilo</title><content type='html'>&lt;p&gt;Para aquellos que gustan de escribir hojas de estilo separadas para cada navegador, acá va un código Javascript que, manipulando el DOM nos perpite cargar una hoja de estilo e insertarla en la sección &lt;strong&gt;HEAD&lt;/strong&gt; del documento.&lt;/p&gt;

&lt;pre&gt;
&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;var&lt;/b&gt;&lt;/span&gt; cssNode = document.createElement(&lt;span style="color:#ff00ff;"&gt;'link'&lt;/span&gt;)
cssNode.type = &lt;span style="color:#ff00ff;"&gt;'text/css'&lt;/span&gt;
cssNode.rel = &lt;span style="color:#ff00ff;"&gt;'stylesheet'&lt;/span&gt;
cssNode.href = &lt;span style="color:#ff00ff;"&gt;'http://www.somedomain.com/styles/FireFox.css'&lt;/span&gt;
cssNode.media = &lt;span style="color:#ff00ff;"&gt;'screen'&lt;/span&gt;
cssNode.title = &lt;span style="color:#ff00ff;"&gt;'dynamicLoadedSheet'&lt;/span&gt;
document.getElementsByTagName(&lt;span style="color:#ff00ff;"&gt;"head"&lt;/span&gt;)[0].appendChild(cssNode)
&lt;/pre&gt;

&lt;p&gt;.&lt;/p&gt;


&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align="top" marginwidth="0" marginheight="0" src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;amp;cid=7195" frameborder="0" width="468" scrolling="no" height="60" alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;


&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;"&gt;
&lt;a href="http://www.ciberbanner.com/" target="_new"&gt;
ciberbanner.com intercambio de banners&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-6309122755002326519?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/6309122755002326519/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=6309122755002326519' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6309122755002326519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6309122755002326519'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/03/lectura-dinmica-de-hojas-de-estilo.html' title='Lectura dinámica de hojas de estilo'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-3603426780754241391</id><published>2007-04-14T10:53:00.000-03:00</published><updated>2007-04-24T17:21:58.997-03: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='Cross-Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>EJS TreeGrid</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_kB8M3IJSpXo/RiDfjTBvdWI/AAAAAAAAAM4/Ewf4KaQIAQk/s1600-h/ejt.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5053284579405690210" style="FLOAT: right" alt="" src="http://3.bp.blogspot.com/_kB8M3IJSpXo/RiDfjTBvdWI/AAAAAAAAAM4/Ewf4KaQIAQk/s200/ejt.jpg" border="0" /&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="http://www.treegrid.com/TreeGrid4_5/Html/EJSTreeGrid.html"&gt;EJS TreeGrid&lt;/a&gt; (&lt;em&gt;Editable JavaScript TreeGrid&lt;/em&gt;) es un componente escrito en DHTML y Javascript diseñado para mostrar y/o manipular datos en grilla, tabla o árbol, sobre todo para gran cantidad de datos, de hecho, en la página del autor hay un &lt;a href="http://www.treegrid.com/TreeGrid4_5/Html/Example1M.html"&gt;ejemplo de 1 millón de filas&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Compatible con Internet Explorer 5.0+, Gecko (Mozilla 1.0+, Mozilla Firefox 1.0+, Netscape Navigator 6.0+, Camino 1.0+, K-Meleon 1.0+), Opera 7.60+, KHTML (Konqueror 3.0+, Safari 1.2+).&lt;/p&gt;&lt;p&gt;Entre las particularidades más importantes esta el procesamiento de datos en árbol (&lt;em&gt;tree&lt;/em&gt;), fórmulas avanzadas en sus celdas y similares a MS Excel, varios tipos de paginación para mostrar miles de filas (millones, según su autor) utilizando AJAX, filtros especiales similares a Excel y filas de agrupamiento automático, desplazamiento de filas por arrastre (drag&amp;amp;drop), y muchas otras particularidades que lo hace un producto más que interesante y que facilita mucho las cosas a los diseñadores de páginas.&lt;/p&gt;&lt;p&gt;Desafortunadamente no es gratis y tampoco barato en su versión personal, pero no es para nada inalcanzable para una empresa y su costo lo vale en las horas de diseño que le ahorrará a sus desarrolladores.&lt;/p&gt;

&lt;p&gt;
&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-3603426780754241391?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/3603426780754241391/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=3603426780754241391' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3603426780754241391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/3603426780754241391'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/04/ejs-treegrid.html' title='EJS TreeGrid'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_kB8M3IJSpXo/RiDfjTBvdWI/AAAAAAAAAM4/Ewf4KaQIAQk/s72-c/ejt.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-6070357455807670638</id><published>2007-03-23T12:23:00.000-03:00</published><updated>2007-04-24T17:22:20.319-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery Corner</title><content type='html'>&lt;p&gt;&lt;a href="http://www.malsup.com/jquery/corner/"&gt;jQuery Corner&lt;/a&gt; o cómo ser original en materia de bordes para tus aplicaciones web.&lt;/p&gt;&lt;p&gt;Es que estos chicos se levantaron una mañana cansados de tanto borde redondeado y se pusiero a crear estos fantásticos &lt;em&gt;scripts&lt;/em&gt; que nos hacercan la posibilidad de innovar en nuestras páginas.&lt;/p&gt;&lt;p&gt;Se tratra de un agregado para el &lt;em&gt;framework&lt;/em&gt; de &lt;a href="http://es.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/a&gt; &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;, escrito originalmente por &lt;a href="http://methvin.com/jquery/jq-corner.html"&gt;Dave Methvin&lt;/a&gt; y que la gente de &lt;a href="http://www.malsup.com/"&gt;malsup&lt;/a&gt; ha extendido.  Sencillamente asombroso.&lt;/p&gt;&lt;p&gt;En este mismo sitio, &lt;a href="http://www.malsup.com/jquery"&gt;malsup.com&lt;/a&gt;, encontraran otras cositas igual de útiles e interesantes.&lt;/p&gt;


&lt;p&gt;&lt;!-- Codigo ciberbanner.com --&gt;
&lt;iframe align=top width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no 
src="http://www.ciberbanner.com/banner.php?op=viewbanner&amp;cid=7195" 
alt="ciberbanner.com intercambio de banners"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;font size="1" face="Arial, Helvetica, sans-serif"&gt;
&lt;a href="http://www.ciberbanner.com/" TARGET="_new"&gt;
ciberbanner.com intercambio de banners&lt;/font&gt;&lt;/a&gt;

&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-6070357455807670638?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/6070357455807670638/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=6070357455807670638' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6070357455807670638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/6070357455807670638'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/03/jquery-corner.html' title='jQuery Corner'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-5500964849550850771</id><published>2007-03-23T11:47:00.000-03:00</published><updated>2007-04-16T12:10:35.940-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Cross-Browser'/><title type='text'>Liberty Javascript Basic Library</title><content type='html'>&lt;a href="http://aka-fotos.de/web/?javascript/liberty"&gt;&lt;img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 300px; CURSOR: hand" alt="" src="http://aka-fotos.de/web/files/21/graphics/liberty_logo.gif" border="0" /&gt;&lt;/a&gt;
&lt;p&gt;Bueno... esto ya se está poniendo tedioso (denso... como se dice en mi país). &lt;a href="http://aka-fotos.de/web/?javascript/liberty"&gt;Liberty Javascript Basic Library&lt;/a&gt;, otro &lt;em&gt;framework&lt;/em&gt;, este -como dice su autor- basado en &lt;a href="http://www.prototypejs.org"&gt;Prototype&lt;/a&gt;, con agreagados interesantes que bien podrían haber sido una extensión para la librería inspiradora. Pero bueno... tendremos que lidiar con otro entorno de trabajo.&lt;/p&gt;
&lt;p&gt;Tal vez, en no mucho tiempo, alguien se encargará de juntar todas estas prestaciones en un sóla librería, que bien podría ser Prototype extendia.&lt;/p&gt;

&lt;!-- BEGIN SPAIN BPATH BANNER EXCHANGE CODE --&gt;
&lt;script src="http://ads47.bpath.com/gif.cfm?ID=8124&amp;Page=0&amp;Ver=40"&gt;&lt;/script&gt;
&lt;!-- END SPAIN BPATH BANNER EXCHANGE CODE --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626801945195814956-5500964849550850771?l=web-ar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web-ar.blogspot.com/feeds/5500964849550850771/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626801945195814956&amp;postID=5500964849550850771' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5500964849550850771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626801945195814956/posts/default/5500964849550850771'/><link rel='alternate' type='text/html' href='http://web-ar.blogspot.com/2007/03/liberty-javascript-basic-library.html' title='Liberty Javascript Basic Library'/><author><name>Julio González Seara</name><uri>http://www.blogger.com/profile/09010083181274624227</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626801945195814956.post-7425018453854498742</id><published>2007-03-23T11:27:00.000-03:00</published><updated>2007-04-16T12:14:11.607-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/
