<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">Esteban Zavala&amp;#39;s Blog</title><subtitle type="html">Notas, apuntes, articulos sobre tecnologia .Net en general</subtitle><id>http://geeks.ms/blogs/ezavala/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.ms/blogs/ezavala/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.ms/blogs/ezavala/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2007-06-12T22:03:00Z</updated><entry><title>NetTwit: Cliente para Twitter usando WCF</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/11/19/nettwit-cliente-para-twitter-usando-wcf.aspx" /><id>/blogs/ezavala/archive/2008/11/19/nettwit-cliente-para-twitter-usando-wcf.aspx</id><published>2008-11-20T00:05:23Z</published><updated>2008-11-20T00:05:23Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/twitter_3663DD04.jpg"&gt;&lt;img title="twitter" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="111" alt="twitter" src="http://geeks.ms/blogs/ezavala/twitter_thumb_38512C0D.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;La comunidad &lt;a href="http://www.netaweb.com.do"&gt;Netaweb 2.0&lt;/a&gt;, como parte de su restructuración tiene como planes realizar una serie de proyectos “Open-Source” alojados en &lt;a href="http://www.codeplex.com"&gt;CodePlex&lt;/a&gt; para el uso y aprendizaje de las nuevas tecnologías que nos ofrece Microsoft.&lt;/p&gt;  &lt;p&gt;En esta ocacion le toca el turno a &lt;a href="http://www.codeplex.com/NetTwit"&gt;NetTwit&lt;/a&gt;, siendo este no más un cliente rico, amigable y flexible para &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt;, usando las API que ofrece el servicio e integrando otros servicios que se integran con &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/NetTwit"&gt;NetTwit&lt;/a&gt; estaba basado en Windows Communication Foundation (WCF) (tomando como base el desarrollo que hicieron los chicos de &lt;a href="http://www.codeplex.com/vertigotwitter"&gt;Vertigo Software&lt;/a&gt; y haciendole a la vez algunas mejoras) y Windows Presentation Foundation (WPF), siendo WCF la plataforma base para la implementación de las API de Twitter y WPF como la capa de presentación del cliente, el proyecto tiene como propósito aprender y entender la arquitectura de Windows Communication Foundation (WCF), no solamente a los miembros de la Comunidad &lt;a href="http://www.netaweb.com.do"&gt;NetaWeb 2.0&lt;/a&gt; sino a cualquier entusiasta interesado en colaborar y aprender.&lt;/p&gt;  &lt;p&gt;¿Qué es NetaWeb 2.0?&lt;/p&gt;  &lt;p&gt;NetaWeb 2.0 es la más grande comunidad de desarrolladores profesionales de República Dominicana y el Caribe, teniendo en su cartera más de 1800 miembros registrados, la comunidad está enfocada en todo lo concerniente al desarrollo de software usando la tecnología .NET.&lt;/p&gt;  &lt;p&gt;¿Qué es Twitter?&lt;/p&gt;  &lt;p&gt;Tal como dice &lt;a href="http://es.wikipedia.org/wiki/Twitter"&gt;Wikipedia&lt;/a&gt;, &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt; es un servicio gratuito de &lt;a href="http://es.wikipedia.org/wiki/Microblogging"&gt;microblogging&lt;/a&gt;, que hace las veces de &lt;a href="http://es.wikipedia.org/wiki/Redes_sociales"&gt;red social&lt;/a&gt; y que permite a sus usuarios enviar micro-entradas (también denominadas &amp;quot;tweets&amp;quot;) basadas en texto, con una longitud máxima de 140 caracteres, donde se responde a la pregunta &lt;i&gt;¿Qué estás haciendo?. &lt;/i&gt;El envío de estos mensajes se puede realizar tanto por la web de &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt;, como vía &lt;a href="http://es.wikipedia.org/wiki/Servicio_de_mensajes_cortos"&gt;SMS&lt;/a&gt; (Short Message Service) desde un teléfono móvil, desde programas de mensajería instantánea, o incluso desde cualquier aplicación de terceros.&lt;/p&gt;  &lt;p&gt;Pueden ver más información del proyecto en los links:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/NetTwit"&gt;http://www.codeplex.com/NetTwit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.twitter.com/estebanx"&gt;http://www.twitter.com/estebanx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=117877" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Coding" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Coding/default.aspx" /><category term="Microsoft" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Microsoft/default.aspx" /><category term="Tools" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Tools/default.aspx" /><category term="NetTwit" scheme="http://geeks.ms/blogs/ezavala/archive/tags/NetTwit/default.aspx" /><category term="WPF" scheme="http://geeks.ms/blogs/ezavala/archive/tags/WPF/default.aspx" /><category term="WCF" scheme="http://geeks.ms/blogs/ezavala/archive/tags/WCF/default.aspx" /><category term="NetaWeb" scheme="http://geeks.ms/blogs/ezavala/archive/tags/NetaWeb/default.aspx" /></entry><entry><title>Haz tus queries a HTML con LINQ To HTML</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/09/25/haz-tus-queries-a-html-con-linq-to-html.aspx" /><id>/blogs/ezavala/archive/2008/09/25/haz-tus-queries-a-html-con-linq-to-html.aspx</id><published>2008-09-25T12:37:34Z</published><updated>2008-09-25T12:37:34Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Problema&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Desde hace varios meses cada domingo envió más de 250 SMS vía &lt;a href="http://www.orange.com.do"&gt;Orange&lt;/a&gt; a distintos celulares de diferentes compañías telefónicas,&amp;nbsp; &lt;a href="http://www.orange.com.do"&gt;Orange&lt;/a&gt; tienen una aplicación web que me permite agregar contactos y a la vez con estos agregarlo a listas de contactos para poder enviarle lo mensajes, sucede que los números que no pertenecen a &lt;a href="http://www.orange.com.do"&gt;Orange&lt;/a&gt; no se pueden enviar y a la vez se quedan en los estados&amp;nbsp; “Numero Invalido”, “Pendiente”, “Expirado” y “Fallido”, hasta aquí vamos bien, la aplicación web me provee una opción para ver el histórico de mensajes enviado, el problema consiste en que el histórico no me provee una opción para filtrar los números que están en los estados “Numero Invalido”, “Pendiente”, “Expirado” y “Fallido”.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;strong&gt;Solución&lt;/strong&gt;&amp;nbsp;&lt;/u&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Dada esta problemática decidí por mi cuenta poder hacer consultas al html que genera la aplicación&lt;/p&gt; &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/Aplicacion_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="385" alt="Aplicacion" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/Aplicacion_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;Tome solamente del código html el table donde están los campos que necesito para poder hacerle más adelante consulta con Linq y lo guarde en el disco C: con el nombre geeksPhones.html&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;Entendiendo el esquema del archivo guardado&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;El archivo guardado tiene el siguiente esquema para la primera fila: &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/esquemafirstrow_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="95" alt="esquemafirstrow" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/esquemafirstrow_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Esta primera fila realmente no nos interesa la que si nos va a interesar es a partir de la segunda fila en adelante que tendrá el mismo código repetitivo de los 1546 mensajes enviados:  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/secondrow_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="87" alt="secondrow" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/secondrow_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Diseño de nuestra aplicacion&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Como todos sabemos HTML se deriva del GML (Standard Generalized Markup Language - Lenguaje de Marcación Estándar Generalizada), que tambien xml se deriva del GML, entonces&amp;nbsp; decidi convertir el HTML en XML y esto se hizo posible usando el componente &lt;a href="http://www.codeplex.com/htmlagilitypack/"&gt;htmlagilitypack&lt;/a&gt; y la vez parsiando ese html con mi Extension Methods ToXMLDocument();&lt;/p&gt; &lt;table style="background-color:#2c3838;"&gt;  &lt;tr&gt; &lt;td&gt;&lt;pre class="code"&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;  &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public static &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XDocument &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;ToXMLDocument(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;this &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;HtmlDocument &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;doc)
        {
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;using &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;StringWriter &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;strWriter = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;new &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;StringWriter&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;())
            {
                doc.OptionOutputAsXml = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;true&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;;
                doc.Save(strWriter);
                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;return &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XDocument&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Parse(strWriter.GetStringBuilder().ToString());
            }
        }&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Tenemos tambien la clase Phone:&lt;br /&gt;&lt;/p&gt;
&lt;table style="background-color:#2c3838;"&gt;

&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public class &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Phones
    &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;{
        &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public string &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;SendDate { &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;get&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;set&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public string &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;Phone { &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;get&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;set&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public string &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;EndDate { &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;get&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;set&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public &lt;/span&gt;&lt;span style="background:#2c3838;color:#f2c53c;"&gt;Status &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;Status { &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;get&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;set&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;; }
    }&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Y finalmente el Enum Status:&lt;/p&gt;
&lt;table style="background-color:#2c3838;"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;pre class="code"&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;public enum &lt;/span&gt;&lt;span style="background:#2c3838;color:#f2c53c;"&gt;Status
    &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;{
        None = 0, &lt;/span&gt;&lt;span style="background:#2c3838;color:#a4f29f;"&gt;//Siempre uso este como valor Default
        &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;Recibido = 1,
        Pendiente = 2,
        NumeroInvalido = 3,
        Fallido = 4,
        Expirado = 5
    }&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Definido ya estos elementos entonces use el siguiente Linq Query para poder leer el html y convertirlo en una Lista genérica de tipo Phone:&lt;/p&gt;
&lt;table style="background-color:#2c3838;"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;pre class="code"&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;HtmlAgilityPack.&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;HtmlDocument &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;doc = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;new &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;HtmlAgilityPack.&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;HtmlDocument&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#a4f29f;"&gt;
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;doc.Load(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;@&amp;quot;C:\geeksphones.html&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;);
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XDocument &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;xmlDoc = doc.ToXMLDocument();
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;List&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Phones&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;gt; query = (&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;d &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;xmlDoc.Descendants(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;table&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                         &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;let &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tbody = d.Element(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;tbody&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                         &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;let &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tr = tbody.Element(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;tr&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                         &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select new
                         &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;{

                             SendDate = (&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;s &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tbody.Descendants(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;td&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                                         &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;s
                                             &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;into &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempsenddate
                                             &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;where &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempsenddate.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;).Value == &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;5%&amp;quot; &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; &lt;br /&gt;                                                   tempsenddate.HasElements == &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;false &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt; &lt;br /&gt;                                                   &amp;amp;&amp;amp; tempsenddate.Value.Length &amp;gt; 18
                                             &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempsenddate.Value
                                         ).ToArray(),
                             Status = (&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;status &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tbody.Descendants(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;td&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;status
                                           &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;into &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempstatus
                                           &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;where &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempstatus.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;).Value == &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;3%&amp;quot; &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; tempstatus.HasElements == &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;false &lt;br /&gt;                                                 &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; tempstatus.Value.Length &amp;gt; 3 &amp;amp;&amp;amp; tempstatus.Value.Length &amp;lt;= 15
                                           &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempstatus.Value).ToArray(),

                             PhoneNumber = (&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;p &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tbody.Descendants(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;td&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                                            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;p
                                                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;into &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempPhoneNumber
                                                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;where &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempPhoneNumber.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;).Value == &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;5%&amp;quot; &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; &lt;br /&gt;                                                     tempPhoneNumber.HasElements == &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;false &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; tempPhoneNumber.Value.Length == 10
                                                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempPhoneNumber.Value).ToArray(),
                             ReceiveDate = (&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;r &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tbody.Descendants(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;td&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)
                                            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;r
                                                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;into &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempReceive
                                                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;where &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempReceive.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;).Value == &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;3%&amp;quot; &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; &lt;br /&gt;                                                      tempReceive.HasElements == &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;false &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;&amp;amp;&amp;amp; tempReceive.Value.Length == 19 &lt;br /&gt;                                                      || tempReceive.Value.Length == 3
                                                &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempReceive.Value).ToArray()
                         }
                             &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;into &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;tempPhone
                             &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;i &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Enumerable&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Range(0, tempPhone.PhoneNumber.Count())
                             &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;select new &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Phones&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;()
                             {
                                 Phone = tempPhone.PhoneNumber[i],
                                 EndDate = tempPhone.ReceiveDate[i],
                                 SendDate = tempPhone.SendDate[i],
                                 Status = (&lt;/span&gt;&lt;span style="background:#2c3838;color:#f2c53c;"&gt;Status&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Enum&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Parse(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;typeof&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f2c53c;"&gt;Status&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;), tempPhone.Status[i].Replace(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;, &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;))
                             }
                        ).ToList();&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Explicación del Query&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Básicamente lo que queremos de nuestro HTML es saber la fecha de envió, el número de teléfono, el estatus del mensaje y la fecha de recepción, entonces para obtenerlo correctamente tenemos que: 
&lt;p&gt;&lt;b&gt;SendDate&lt;/b&gt;: solamente se llenara cuando el elemento (td) tenga el atributo width en 5%, no tenga más elementos hijos y la longitud del valor del elemento sea igual a 19 caracteres. 
&lt;p&gt;&lt;b&gt;Status:&lt;/b&gt; para que pueda tener los datos correctos se debe cumplir la condición de que el elemento (td) tenga el atributo width = 3%, el elemento no tenga más elementos hijos y la longitud del valor del elemento este en un rango de 3 hasta 15 caracteres. 
&lt;p&gt;&lt;b&gt;PhoneNumber: &lt;/b&gt;para obtener los números correctamente se debe cumplir las condiciones de que el elemento (td) tenga el atributo width = 5%, el elemento no tenga más elementos hijos y la longitud del valor del elemento sea igual a 10 caracteres debido a que los números en mi país tiene un total de 10 caracteres. 
&lt;p&gt;&lt;b&gt;ReceiveDate:&lt;/b&gt; para obtener la fecha de recibido correctamente se debe cumplir las condiciones de que el elemento (td) tenga el atributo width=3%, el elemento no tenga más elemento hijos y la longitud del elemento sea igual a 18 caracteres o a 3 caracteres ya que cuando el mensaje se queda en el estatus expirado la fecha sale con los caracteres “---“. 
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/linqToHtml_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="418" alt="linqToHtml" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/linqToHtml_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Descargas &lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Codigo Linq To HTML &lt;a href="http://geeks.ms/files/folders/101361/download.aspx"&gt;aqui&lt;/a&gt;.&lt;br /&gt;Archivo geekPhones.html &lt;a href="http://geeks.ms/files/folders/101362/download.aspx"&gt;aqui&lt;/a&gt;. (este archivo es necesario ponerlo en el disco C:\)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Plus&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dentro de la aplicación también encontraran un Tab llamado leer imágenes el cual tiene la funcionalidad de leer las imágenes de una dirección web dada y mostrar el largo y el ancho de la imagen. 
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/LinqToHTMLImg_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="418" alt="LinqToHTMLImg" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToHTML_C11E/LinqToHTMLImg_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; 
&lt;p&gt;y el Codigo para esto es:&lt;/p&gt;
&lt;table style="background-color:#2c3838;"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;pre class="code"&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt; HtmlAgilityPack.&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;HtmlWeb &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;hweb = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;new &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;HtmlAgilityPack.&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;HtmlWeb&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;string &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;strUrl = @textBox1.Text;
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Uri &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;url = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;new &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Uri&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;(strUrl);
            HtmlAgilityPack.&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;HtmlDocument &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;doc = hweb.Load(strUrl);
            


            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;var &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;xdoc = doc.ToXMLDocument();
            &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;var &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;imgs = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;from &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;x &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;in &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;xdoc.Descendants()
                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;let &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;width = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;int&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Parse((x.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;) ?? &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;new &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XAttribute&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XName&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Get(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;), &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)).Value.TrimEnd(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;#39;%&amp;#39;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;))
                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;let &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;height = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;int&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Parse((x.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;) ?? &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;new &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XAttribute&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XName&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Get(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;), &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)).Value.TrimEnd(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;#39;%&amp;#39;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;))
                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;let &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;metrica = &lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;Math&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Sqrt(width * height)
                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;where &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;x.Name.LocalName == &lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;img&amp;quot;
                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;orderby &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;metrica &lt;/span&gt;&lt;span style="background:#2c3838;color:#f8e4a3;"&gt;descending
                       select new
                       &lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;{
                           Src = x.Attribute(&lt;/span&gt;&lt;span style="background:#2c3838;color:#f5a781;"&gt;XName&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;.Get(&lt;/span&gt;&lt;span style="background:#2c3838;color:#ef6581;"&gt;&amp;quot;src&amp;quot;&lt;/span&gt;&lt;span style="background:#2c3838;color:#dcdccc;"&gt;)).Value,
                           Width = width,
                           Height = height
                       };&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Espero que le haya sido de utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=101363" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Controles" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Controles/default.aspx" /><category term="Coding" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Coding/default.aspx" /><category term="Tools" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Tools/default.aspx" /><category term="Linq" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Linq/default.aspx" /></entry><entry><title>LINQ TO SQL Performance</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/07/29/linq-to-sql-performance.aspx" /><id>/blogs/ezavala/archive/2008/07/29/linq-to-sql-performance.aspx</id><published>2008-07-29T20:24:00Z</published><updated>2008-07-29T20:24:00Z</updated><content type="html">&lt;table cellspacing="0" cellpadding="1"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToSQLPerformance_D3D0/linq_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="240" alt="linq" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToSQLPerformance_D3D0/linq_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&amp;nbsp;&lt;/td&gt; &lt;td&gt; &lt;p&gt;LINQ o Language integrated query es un lenguaje de consultas integrado al lenguaje que fue introducido en las nuevas versiones de Visual Studio 2008, LINQ nos permite una sintaxis estándar para consultar diferentes fuentes de datos, sea SQL, XML u objetos en memoria.  &lt;p&gt;Antes del framework 3.5, los desarrolladores típicamente usábamos ADO para consultar alguna que otra base de datos relacional, es decir si queríamos conectarnos y consultar alguna tabla usábamos las librerías de ADO específicamente &lt;b&gt;System.Data.SqlClient. &lt;/b&gt;Si queríamos traer datos de la manera más rápida posible, entonces usábamos DataReaders, pero la responsabilidad del mantenimiento de la Data estaba a cargo del Desarrollador, y si el performance no era una de nuestras prioridades entonces optábamos por usar Datasets.  &lt;p&gt;Luego de una conversación con mi amigo &lt;a href="http://danylive.blogspot.com" target="_blank"&gt;Dany Paredes&lt;/a&gt;, discutíamos acerca del Performance de LINQ TO SQL, para mi entender desarrollar con LINQ TO SQL es bastante rápido el desarrollo y todo eso, pero que ¿tal el performance?, decidí hacer las pruebas por mí mismo.  &lt;p&gt;Escribí una Aplicación de Consola, para probar que tal el performance de LINQ TO SQL, ADO Datasets y ADO Datareader. La aplicación contiene 3 métodos los cuales cada uno de ellos consultan la tabla Customer de la base de datos northwind que contiene 91 registros 10,000 veces. En el caso para popular el Datareader cree una clase llamada clCustomer.  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;table cellspacing="0" cellpadding="0" bgcolor="#2a2a2a"&gt;  &lt;tr&gt; &lt;td&gt;&lt;pre class="code"&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Collections&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Data&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Data&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;SqlClient&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Text&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Configuration&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;using &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Linq&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;



&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;namespace &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;LinqToSqlTest
&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{
    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public class &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;Program
    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public static string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;myconnectionstring &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#a31515;"&gt;@&amp;quot;Data Source=.;Initial Catalog=northwind;User Id=sa;Password=sa;&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;

        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;static void &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Main&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;string&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[] &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;args&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;)
        {
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;

            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Now&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;GetDataFromDatasets&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Now&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Tiempo&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Usando Datasets&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);

            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Now&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;GetDataFromLinqToSQL&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Now&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Tiempo&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Usando LINQ TO SQL&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);


            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Now&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;GetDataFromDataReaders&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Now&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Tiempo&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;start&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;endTime&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Usando DataReaders&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);

            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;Console&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ReadLine&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
        }

        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/span&gt;&lt;span style="background:#2a2a2a;color:magenta;"&gt;Traer los datos desde LINQ TO SQL
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;private static void &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;GetDataFromLinqToSQL&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;()
        {
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;LinqToSqlTestDataContext &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;LinqToSqlTestDataContext&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;var &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;query &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Customers&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;

            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;for &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;int &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= 0; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;&amp;lt; 10000; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;++)
            {
                &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;query&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToList&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            }
        }

        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/span&gt;&lt;span style="background:#2a2a2a;color:magenta;"&gt;Metodo para Traer los datos en un reader
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;private static void &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;GetDataFromDataReaders&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;()
        {
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlConnection &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlConnection&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;myconnectionstring&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;query &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;select [CustomerID], [CompanyName], [ContactName], [ContactTitle], &amp;quot; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;+
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;[Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]  from [dbo].[Customers]&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlCommand &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;command &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlCommand&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;query&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Open&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;clCustomer &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;clCustomer&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;for &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;int &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= 0; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;&amp;lt; 10000; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;++)
            {
                &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlDataReader &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;command&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ExecuteReader&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;while &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Read&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;())
                {
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;CustomerID &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;CompanyName &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;CompanyName&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ContactName &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;ContactName&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ContactTitle &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;ContactTitle&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Address &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Address&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;City &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Region &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Region&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;PostalCode &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;PostalCode&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Country &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Phone &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Phone&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
                    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;sp&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Fax &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;[&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;Fax&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;].&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();

                }
                &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;rdr&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Close&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            }
        }

        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/span&gt;&lt;span style="background:#2a2a2a;color:magenta;"&gt;Metodo para traer los resultados en un Dataset
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;private static void &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;GetDataFromDatasets&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;()
        {
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlConnection &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlConnection&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;myconnectionstring&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;query &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;select [CustomerID], [CompanyName], [ContactName], [ContactTitle], &amp;quot; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;+
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;[Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]  from [dbo].[Customers]&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;;
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlCommand &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;command &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlCommand&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;query&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;con&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlDataAdapter &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;da &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;SqlDataAdapter&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;command&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;DataSet &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ds &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;new &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;DataSet&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;for &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;int &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= 0; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;&amp;lt; 10000; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;i&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;++)
            {
                &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;da&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Fill&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ds&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
            }
        }

        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;private static void &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Tiempo&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;dt1&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#964ec0;"&gt;DateTime &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;dt2&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;, &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;message&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;)
        {
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;time &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;= ((&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;dt2&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Ticks &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;- &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;dt1&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Ticks&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;) / 10000000.0).&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ToString&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;();
            &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;System&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;Console&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;.&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;(&lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;message &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;+ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot;: &amp;quot; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;+ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;time &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;+ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#e84d4d;"&gt;&amp;quot; Segundos&amp;quot;&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;);
        }
    }

    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public class &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#eba707;"&gt;clCustomer
    &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;CustomerID &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;CompanyName &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ContactName &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;ContactTitle &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Address &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;City &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Region &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;PostalCode &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Country &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Phone &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }
        &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;public string &lt;/span&gt;&lt;span style="background:#2a2a2a;color:white;"&gt;Fax &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;{ &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;get&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; &lt;/span&gt;&lt;span style="background:#2a2a2a;color:#76d071;"&gt;set&lt;/span&gt;&lt;span style="background:#2a2a2a;color:#dfdfdf;"&gt;; }

    }
}
&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="2"&gt;
&lt;p&gt;¿Cuáles fueron los resultados? 
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToSQLPerformance_D3D0/linqtosqlScreen_8.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="336" alt="linqtosqlScreen" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/LinqToSQLPerformance_D3D0/linqtosqlScreen_thumb_3.jpg" width="640" border="0" /&gt;&lt;/a&gt; 
&lt;ul&gt;
&lt;li&gt;Datasets (29.313 segundos) 
&lt;li&gt;LINQ TO SQL (18.629 segundos) 
&lt;li&gt;DataReaders (18.037 segundos)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Así que tenemos que LINQ TO SQL es mas rápido que un Dataset y ligeramente más lento que un DataReader. 
&lt;p&gt;Si quieres puedes probarlo tu mismo copiando el código y creando un Linq To Sql Class llamado northwind.dbml. Solamente es necesario la tabla Customers. 
&lt;p&gt;Espero que les sea de utilidad.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=93076" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="SQL" scheme="http://geeks.ms/blogs/ezavala/archive/tags/SQL/default.aspx" /><category term="Coding" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Coding/default.aspx" /><category term="Performance" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Performance/default.aspx" /><category term="Linq" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Linq/default.aspx" /></entry><entry><title>{Evento: Desarollo de Aplicaciones Web con Prototype + Ajax + WCF}</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/05/08/evento-desarollo-de-aplicaciones-web-con-prototype-ajax-wcf.aspx" /><id>/blogs/ezavala/archive/2008/05/08/evento-desarollo-de-aplicaciones-web-con-prototype-ajax-wcf.aspx</id><published>2008-05-08T03:08:00Z</published><updated>2008-05-08T03:08:00Z</updated><content type="html">&lt;h5 align="center"&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/EventoDesarollodeAplicacionesWebconProto_12420/communitylaunch_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="134" alt="communitylaunch" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/EventoDesarollodeAplicacionesWebconProto_12420/communitylaunch_thumb.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/h5&gt;&lt;br /&gt;
&lt;p&gt;Hola amigos, este mes vamos a estar dando el evento “Desarrollo de Aplicaciones Web con Prototype + Ajax + WCF” todo esto tiene que ver con los “Heroes Community launch” que estamos celebrando en nuestra País República Dominicana. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Primera tanda:&lt;br /&gt;27 de Mayo, 6:00 p.m., salón 204-205 &lt;/strong&gt;&lt;b&gt;&lt;br /&gt;&lt;strong&gt;Tema:&lt;/strong&gt;&lt;/b&gt; Desarrollo de aplicaciones Web con Prototype, Ajax y Windows communication Foundation &lt;br /&gt;&lt;strong&gt;Lugar:&lt;/strong&gt; Universidad Iberoamericana (UNIBE)&lt;br /&gt;&lt;strong&gt;Speaker:&lt;/strong&gt; &lt;a href="http://geeks.ms/blogs/ezavala/"&gt;Esteban Zavala&lt;/a&gt; &amp;amp; Mayreni Vargas &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Segunda tanda:&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;Tema:&lt;/strong&gt; Visual Studio 2008 &amp;amp; SQL 2008: Coming together&lt;br /&gt;&lt;strong&gt;Lugar:&lt;/strong&gt; Universidad Iberoamericana (UNIBE)&lt;br /&gt;&lt;strong&gt;Speaker:&lt;/strong&gt; Ismael Mendez &amp;amp; &lt;a href="http://msmvps.com/blogs/hminaya/Default.aspx"&gt;Hector Minaya&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Para los primero 50 en llegar: &lt;/strong&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;1 kit de developers para training &lt;br /&gt;1 Windows Vista Ultimate (de evaluación, por 1 año) &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Rifaremos: &lt;/strong&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;20 Libros de Linq &lt;br /&gt;5 Vouchers para exámenes de certificación con un 40% de descuento en los mismos y 5 Vouchers mas si dices que viste esto en geeks.ms :P&lt;br /&gt;5 kits de lanzamiento, incluyen Windows server 2008 trial de 1 año, SQL Server 2008 Developer, Visual Studio 2008 Standard Full. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=85065" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Noticias" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Noticias/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Eventos/default.aspx" /><category term="Heroes" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Heroes/default.aspx" /><category term="Heroes Community Launch" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Heroes+Community+Launch/default.aspx" /></entry><entry><title>Search Commands For Office 2007</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/04/29/search-commands-for-officer-2007.aspx" /><id>/blogs/ezavala/archive/2008/04/29/search-commands-for-officer-2007.aspx</id><published>2008-04-29T15:02:00Z</published><updated>2008-04-29T15:02:00Z</updated><content type="html">&lt;table class="" cellspacing="0" cellpadding="1"&gt;

&lt;tr&gt;
&lt;td class=""&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SearchCommandsOffice2007_9315/searchcommands_4.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="220" alt="searchcommands" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SearchCommandsOffice2007_9315/searchcommands_thumb_1.png" width="640" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=""&gt;Microsoft Office 2007 ha sustituido los menús convencionales y ha integrado una nueva tecnología llamada Ribbon, esta tecnología tiene la particularidad que combina los menús y las herramientas en un solo lugar para así tener un fácil acceso a las opciones que nos brinda office. &lt;br /&gt;&lt;br /&gt;Sin embargo, hemos visto como en nuestras lugares de trabajo, familiares, amigos, se han quejado, reprochándonos (tal como si fuera un empleado de Microsoft) que no encuentran las opciones que estaban acostumbrados a usar.&lt;br /&gt;&lt;br /&gt;Debido a esto Microsoft Office Labs ha lanzando un nueva herramienta que se integra con Office 2007 English version, específicamente con Word, Excel y Power Point llamada Search Commands, esta nos ayuda a encontrar comandos, opciones, asistentes y galerías, simplemente escribiendo la opción y esta traerá una lista de las posibles opciones. &lt;br /&gt;&lt;br /&gt;Pueden ver más información enlace: &lt;br /&gt;&lt;a href="http://www.officelabs.com/projects/searchcommands/Pages/default.aspx" target="_blank"&gt;http://www.officelabs.com/projects/searchcommands/Pages/default.aspx&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=84469" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Utilidades" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Utilidades/default.aspx" /><category term="Microsoft" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Microsoft/default.aspx" /><category term="Tools" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Tools/default.aspx" /><category term="Office" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Office/default.aspx" /></entry><entry><title>Por fin me llego mi {Heroes Community Launch Kit}</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/03/26/por-fin-me-llego-mi-heroes-community-launch-kit.aspx" /><id>/blogs/ezavala/archive/2008/03/26/por-fin-me-llego-mi-heroes-community-launch-kit.aspx</id><published>2008-03-26T11:30:44Z</published><updated>2008-03-26T11:30:44Z</updated><content type="html">&lt;table cellspacing="0" cellpadding="1"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/silhouette_1_thumb_2.gif"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="181" alt="silhouette_1_thumb" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/silhouette_1_thumb_thumb.gif" width="80" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt; &lt;p&gt;Luego de varias semanas de espera, por fin he recibido el {Heroes Community Launch Kit} y asi poder ser un {Heroe} mas de las comunidades Microsoft.&lt;/p&gt; &lt;p&gt;Dicho Kit contiene:&lt;/p&gt; &lt;p&gt;1 {Exclusive} Windows Server 2008 Deep technical “event-in-a-box”  &lt;p&gt;- 5 Windows Server 2008 Enterprise Edition DVDs  &lt;p&gt;- 5 Visual Studio Standard DVDs  &lt;p&gt;- 5 SQL Server 2008 CTP5 DVDs and a NFR voucher for SQL Server 2008 Enterprise redeemable when SQL Server 2008 is Generally Available (GA)  &lt;p&gt;- 2 Full bit DVDs of Vista Ultimate SP1 NFR&amp;nbsp; &lt;p&gt;- 3 Vouchers for a Free 1 year subscription to &lt;b&gt;TechNet Plus&lt;/b&gt;  &lt;p&gt;- 1 WS08 Application Readiness Resource kit enhanced with Solutions Accelerator modules  &lt;p&gt;- Microsoft Learning Solutions 40% off Exam Vouchers  &lt;p&gt;- 1 SQL Server 2008 Technical Readiness kit&amp;nbsp; &lt;p&gt;- 1 .NET 3.5 Dev Resource Kit  &lt;p&gt;- 1 AMD “Virtualization for Dummies” Handbook  &lt;p&gt;- 40% off &lt;b&gt;TechNet Plus Subscriptions&lt;/b&gt; with Full Bit/No Technical Time Bomb Product Download/Eval for All of your attendees  &lt;p&gt;- Heroes {Community} Launch Poster  &lt;p&gt;- CPLS&amp;nbsp; Certification Poster  &lt;p&gt;&amp;nbsp; &lt;p&gt;Luego publicaremos los lugares en la Republica Dominicana donde se daran los eventos para poder repartir el material, dichos eventos seran impartidos por la nueva comunidad de desarrollo que vamos a lanzar que se llamara &lt;a href="http://dotnetlab.net/" target="_blank"&gt;DotNetLab&lt;/a&gt;.  &lt;p&gt;Saludos&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/photo-01_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="180" alt="photo-01" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/photo-01_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/photo-02_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="180" alt="photo-02" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/photo-02_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/photo-03_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="180" alt="photo-03" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/PorfinmellegomiHeroesCommunityLaunchKit_E459/photo-03_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=81691" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Eventos" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Eventos/default.aspx" /><category term="DotnetLab" scheme="http://geeks.ms/blogs/ezavala/archive/tags/DotnetLab/default.aspx" /><category term="Heroes" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Heroes/default.aspx" /><category term="Microsoft" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Microsoft/default.aspx" /><category term="Heroes Community Launch" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Heroes+Community+Launch/default.aspx" /></entry><entry><title>¿Estas contento con Windows Vista SP1? Pues elimina los archivos basura</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/03/24/191-estas-contento-con-windows-vista-sp1-pues-elimina-los-archivos-basura.aspx" /><id>/blogs/ezavala/archive/2008/03/24/191-estas-contento-con-windows-vista-sp1-pues-elimina-los-archivos-basura.aspx</id><published>2008-03-24T11:44:40Z</published><updated>2008-03-24T11:44:40Z</updated><content type="html">&lt;table cellspacing="0" cellpadding="1"&gt;  &lt;tr&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/EstascontentoconWindowsVistaSP1Pueselimi_6CB8/windows-vista-logo-1_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="145" alt="windows-vista-logo-1" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/EstascontentoconWindowsVistaSP1Pueselimi_6CB8/windows-vista-logo-1_thumb.jpg" width="198" border="0" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td&gt; &lt;p&gt;Cuando uno instala el Service Pack 1 en nuestras computadoras,&amp;nbsp; este no elimina algunos archivos de la antigua version de Windows Vista de nuestro disco duro. Esto es a causa de que estos archivos podrian ser requerido en caso de que decidamos desinstalar el Service pack 1.&lt;/p&gt; &lt;p&gt;Logicamente estos archivos ocupan un importante espacio en nuestro disco duro, en mi caso personal 1.2 GB, entonces si estas sastifecho (como yo) con los resultados obtenidos con el Service Pack 1 y no tienes interes alguno en un futuro de desinstalarlo, entonces porque no reclamas el espacio que estos archivos ocupan en tu disco duro.&lt;/p&gt; &lt;p&gt;Para reclamar este espacio basta solamente seguir los siguientes pasos:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Inicio -&amp;gt; Abrir el command prompt escribiendo cmd en el start search  &lt;li&gt;En el command prompt escribir vsp1cln.exe (Vista SP1 Cleaner).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Estos nos tomara algunos minutos (dependiendo de la maquina) para remover los archivos de la antigua version&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt; &lt;td&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/EstascontentoconWindowsVistaSP1Pueselimi_6CB8/vsp1cln_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="349" alt="vsp1cln" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/EstascontentoconWindowsVistaSP1Pueselimi_6CB8/vsp1cln_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2"&gt;Esta accion hace que el Windows Vista Service pack 1 se quede de forma permanente en tu computadora. Y el espacio extra nos sirve para ocuparlo con archivos importantes.&lt;br /&gt;&lt;br /&gt;Para ejecutar el Vista Sp1 Cleaner no necesitas estar conectado a internet y no podras en un futuro eliminar el Service pack 1, asi que si lo ejecutas es bajo riezgo propio.&lt;br /&gt;&lt;br /&gt;Espero que le sea de utilidad.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=81565" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Utilidades" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Utilidades/default.aspx" /><category term="Windows" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Windows/default.aspx" /></entry><entry><title>Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx" /><id>/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx</id><published>2008-03-11T15:01:14Z</published><updated>2008-03-11T15:01:14Z</updated><content type="html">&lt;p&gt;Despues de pasar muchas horas pensando, debuggiando y buscandole la vuelta a una solucion que consistia en hacerle una auditoria a una base de datos SQL 2005, pudimos desarrollar una herramienta llamada &lt;a href="http://geeks.ms/blogs/ezavala/archive/2008/02/22/sqltablehistory-utilidad-para-hacerle-auditoria-a-tus-tablas.aspx" target="_blank"&gt;SQLTableHistory&lt;/a&gt; esta herramienta nos da la facilidad de que podemos seleccionar las tablas que queremos auditar.&lt;/p&gt; &lt;p&gt;Pero navegando me encontre con una excelente solucion hecha por &lt;a href="http://weblogs.asp.net/jgalloway/default.aspx" target="_blank"&gt;Jon Galloway&lt;/a&gt;, en la cual consiste en crear un solo script y que este se encarge de crear los triggers necesarios para cada tabla de la base de datos seleccionada, la diferencia con &lt;a href="http://geeks.ms/blogs/ezavala/archive/2008/02/22/sqltablehistory-utilidad-para-hacerle-auditoria-a-tus-tablas.aspx" target="_blank"&gt;SQLTableHistory&lt;/a&gt; es que con nuestra herramienta podemos seleccionar las tablas que queremos que se le haga su respectiva auditoria y con la solucion presentada en este blog.&lt;/p&gt; &lt;p&gt;Aqui un ejemplo de como se verian los datos con la solucion de Jon Galloway&lt;/p&gt; &lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2342/2222787578_3123122640_o.png" alt="" /&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Con esta informacion podemos hacer reportes de una manera sencilla tales como:&lt;/p&gt; &lt;li&gt;Cuales tablas han sufridos cambios recientemente.  &lt;li&gt;Cuales tablas no sufrieron cambios el pasado año.  &lt;li&gt;Cuales tablas jamaz han sufrido cambios.  &lt;li&gt;Mostrar todos los cambios a las tablas por un usuario y periodo especifico.  &lt;li&gt;Mostrar las tablas mas activas en un determinado periodo.  &lt;p&gt;Con estas herramientas es posible volver al estado anterior de la tabla y volver en un punto especifico, claro esta ya depende de las nuevas extensiones que ustedes le hagan.&lt;/p&gt; &lt;p&gt;Aqui os dejo el script completo que crea la tabla de auditoria y corre el script para crear los triggers a todas las tablas de la base de datos.&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;USE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; MYDATABASE&lt;font color="#008000"&gt;--Ponerle el nombre de la base de datos que va hacer auditada&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;IF&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;EXISTS(&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:green;"&gt;INFORMATION_SCHEMA.TABLES&lt;/span&gt; &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; TABLE_NAME&lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;Audit&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; Audit&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;AuditID [int]&lt;span style="color:blue;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt;1&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;Type&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;char&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;TableName &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;PrimaryKeyField &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1000&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;PrimaryKeyValue &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1000&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;FieldName &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;OldValue &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1000&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;NewValue &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1000&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;UpdateDate &lt;span style="color:blue;"&gt;datetime&lt;/span&gt; &lt;span style="color:blue;"&gt;DEFAULT&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;GetDate&lt;/span&gt;&lt;span style="color:gray;"&gt;()),&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;UserNamevarchar&lt;span style="color:gray;"&gt;(&lt;/span&gt;128&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @sql &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;8000&lt;span style="color:gray;"&gt;),&lt;/span&gt; @TABLE_NAMEsysname&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;NOCOUNT&lt;/span&gt; &lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;MIN&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;TABLE_NAME&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;FROM&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:green;"&gt;INFORMATION_SCHEMA.Tables&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;WHERE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;TABLE_TYPE&lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;BASE TABLE&amp;#39;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;AND&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; TABLE_NAME&lt;span style="color:gray;"&gt;!=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;sysdiagrams&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;AND&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; TABLE_NAME&lt;span style="color:gray;"&gt;!=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;Audit&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;WHILE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @TABLE_NAMEIS &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(&lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;#39;IF OBJECT_ID (&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;_ChangeTracking&amp;#39;&amp;#39;, &amp;#39;&amp;#39;TR&amp;#39;&amp;#39;) IS NOT NULL DROP TRIGGER &amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;_ChangeTracking&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @sql &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;create trigger &amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;_ChangeTracking on &amp;#39;&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39; for insert, update, delete&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;as&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;declare @bit int ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@field int ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@maxfield int ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@char int ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@fieldname varchar(128) ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@TableName varchar(128) ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@PKCols varchar(1000) ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@sql varchar(2000), &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@UpdateDate varchar(21) ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@UserName varchar(128) ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@Type char(1) ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@PKFieldSelect varchar(1000),&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@PKValueSelect varchar(1000)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @TableName = &amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;-- date and user&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @UserName = system_user ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@UpdateDate = convert(varchar(8), getdate(), 112) + &amp;#39;&amp;#39; &amp;#39;&amp;#39; + convert(varchar(12), getdate(), 114)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;-- Action&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if exists (select * from inserted)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if exists (select * from deleted)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @Type = &amp;#39;&amp;#39;U&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;else&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @Type = &amp;#39;&amp;#39;I&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;else&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @Type = &amp;#39;&amp;#39;D&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;-- get list of columns&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select * into #ins from inserted&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select * into #del from deleted&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;-- Get primary key columns for full outer join&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select@PKCols = coalesce(@PKCols + &amp;#39;&amp;#39; and&amp;#39;&amp;#39;, &amp;#39;&amp;#39; on&amp;#39;&amp;#39;) + &amp;#39;&amp;#39; i.&amp;#39;&amp;#39; + c.COLUMN_NAME + &amp;#39;&amp;#39; = d.&amp;#39;&amp;#39; + c.COLUMN_NAME&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;fromINFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;INFORMATION_SCHEMA.KEY_COLUMN_USAGE c&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;where pk.TABLE_NAME = @TableName&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;andCONSTRAINT_TYPE = &amp;#39;&amp;#39;PRIMARY KEY&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;andc.TABLE_NAME = pk.TABLE_NAME&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;andc.CONSTRAINT_NAME = pk.CONSTRAINT_NAME&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;-- Get primary key fields select for insert&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @PKFieldSelect = coalesce(@PKFieldSelect+&amp;#39;&amp;#39;+&amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;) + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; + COLUMN_NAME + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;fromINFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;INFORMATION_SCHEMA.KEY_COLUMN_USAGE c&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;where pk.TABLE_NAME = @TableName&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;andCONSTRAINT_TYPE = &amp;#39;&amp;#39;PRIMARY KEY&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;andc.TABLE_NAME = pk.TABLE_NAME&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;andc.CONSTRAINT_NAME = pk.CONSTRAINT_NAME&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @PKValueSelect = coalesce(@PKValueSelect+&amp;#39;&amp;#39;+&amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;) + &amp;#39;&amp;#39;convert(varchar(100), coalesce(i.&amp;#39;&amp;#39; + COLUMN_NAME + &amp;#39;&amp;#39;,d.&amp;#39;&amp;#39; + COLUMN_NAME + &amp;#39;&amp;#39;))&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;from INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;INFORMATION_SCHEMA.KEY_COLUMN_USAGE c&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;where&amp;nbsp; pk.TABLE_NAME = @TableName&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;and CONSTRAINT_TYPE = &amp;#39;&amp;#39;PRIMARY KEY&amp;#39;&amp;#39;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;and c.TABLE_NAME = pk.TABLE_NAME&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;and c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if @PKCols is null&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;raiserror(&amp;#39;&amp;#39;no PK on table %s&amp;#39;&amp;#39;, 16, -1, @TableName)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;return&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @field = 0, @maxfield = max(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;while @field &amp;lt; @maxfield&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @field = min(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName and ORDINAL_POSITION &amp;gt; @field&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @bit = (@field - 1 )% 8 + 1&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @bit = power(2,@bit - 1)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @char = ((@field - 1) / 8) + 1&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;if substring(COLUMNS_UPDATED(),@char, 1) &amp;amp; @bit &amp;gt; 0 or @Type in (&amp;#39;&amp;#39;I&amp;#39;&amp;#39;,&amp;#39;&amp;#39;D&amp;#39;&amp;#39;)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;begin&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @fieldname = COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName and ORDINAL_POSITION = @field&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = &amp;#39;&amp;#39;insert Audit (Type, TableName, PrimaryKeyField, PrimaryKeyValue, FieldName, OldValue, NewValue, UpdateDate, UserName)&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39; select &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; + @Type + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; + @TableName + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @PKFieldSelect&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @PKValueSelect&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,convert(varchar(1000),d.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39;)&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,convert(varchar(1000),i.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39;)&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; + @UpdateDate + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39; + @UserName + &amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39; from #ins i full outer join #del d&amp;#39;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + @PKCols&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39; where i.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39; &amp;lt;&amp;gt; d.&amp;#39;&amp;#39; + @fieldname &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39; or (i.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39; is null and&amp;nbsp; d.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39; is not null)&amp;#39;&amp;#39; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;select @sql = @sql + &amp;#39;&amp;#39; or (i.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39; is not null and&amp;nbsp; d.&amp;#39;&amp;#39; + @fieldname + &amp;#39;&amp;#39; is null)&amp;#39;&amp;#39; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;exec (@sql)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;end&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @sql&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;(&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;@sql&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; @TABLE_NAME&lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;MIN&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;TABLE_NAME&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:green;"&gt;INFORMATION_SCHEMA.Tables&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;WHERE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; TABLE_NAME&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt; @TABLE_NAME&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;AND&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; TABLE_TYPE&lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;BASE TABLE&amp;#39;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;AND&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; TABLE_NAME&lt;span style="color:gray;"&gt;!=&lt;/span&gt; &lt;span style="color:red;"&gt;&amp;#39;sysdiagrams&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:gray;font-family:&amp;#39;Courier New&amp;#39;;"&gt;AND&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; TABLE_NAME&lt;span style="color:gray;"&gt;!=&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;#39;Audit&amp;#39;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;END&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Para mas informacion:&lt;/li&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/jgalloway/archive/2008/01/27/adding-simple-trigger-based-auditing-to-your-sql-server-database.aspx" target="_blank"&gt;Jon Galloway&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sql-server-performance.com/articles/audit/ddl_triggers_p1.aspx"&gt;SQL Server 2005&amp;#39;s DDL triggers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.simple-talk.com/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/"&gt;Nigel Rivett&amp;#39;s SQL Server Auditing triggers&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Espero que les sea de utilidad!!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=79612" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Utilidades" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Utilidades/default.aspx" /><category term="SQL" scheme="http://geeks.ms/blogs/ezavala/archive/tags/SQL/default.aspx" /><category term="Coding" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Coding/default.aspx" /></entry><entry><title>What's new in Internet Explorer 8 Beta 1</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/03/06/what-s-new-in-internet-explorer-8-beta-1.aspx" /><id>/blogs/ezavala/archive/2008/03/06/what-s-new-in-internet-explorer-8-beta-1.aspx</id><published>2008-03-06T14:30:00Z</published><updated>2008-03-06T14:30:00Z</updated><content type="html">&lt;p&gt;Ayer Microsoft anuncio al mundo en la conferencia &lt;a href="http://visitmix.com/2008/default.aspx" target="_blank"&gt;MIX08&lt;/a&gt; en las vegas la publicacion del primer Beta de Internet explorer 8 para desarrolladores y dise&amp;#241;adores Web. Este primer Beta no trae muchos cambios en la apariencia pero si introduce un nuevo motor de renderizado basado en normas y estandares de la industria entre otras caracteristicas. Entre la que se destacan nuevas &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/DevelopersNew.htm" target="_blank"&gt;herramientas para los desarrolladores&lt;/a&gt; , activities y webslides.&lt;/p&gt;  &lt;p&gt;Como pueden ver la UI del explorer no han habido cambios significativos, la primera vez que corremos el explorer nos saldra la ventana de Setup para configurar nuestro explorer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/WhatsnewinInternetExplorer8Beta1_85AE/firsttime.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="480" alt="firsttime" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/WhatsnewinInternetExplorer8Beta1_85AE/firsttime_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Activities&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Activities son nuevas vias que nos brinda internet explorer 8 a los desarrolladores para usar servicios de otros portales web eliminando asi la necesidad de copiar y pegar informacion hacia otro website, me explico anteriormente uno necesitaba copiar una direccion y encontrar la localizacion de dicha direccion en live maps, ahora con activities en IE8 simplemente seleccionamos el texto que contiene la direccion, entonces nos saldra un menu donde estaran las opciones posibles que podriamos hacer con el texto seleccionado, en este caso seleccionamos &amp;quot;Map with live maps&amp;quot; y esta nos brinda un preview del resultado de la opcion seleccionada. Microsoft nos brinda tambien la posibilidad de agregar nuevos activity providers para mas info &lt;a href="http://ie.microsoft.com/activities/en-en/Default.aspx" target="_blank"&gt;http://ie.microsoft.com/activities/en-en/Default.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/WhatsnewinInternetExplorer8Beta1_85AE/activities.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="480" alt="activities" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/WhatsnewinInternetExplorer8Beta1_85AE/activities_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Video&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:dfc0a4fe-74e6-44e7-a612-32f0fb173a60" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;div&gt;&lt;embed src="http://images.video.msn.com/flash/soapbox1_1.swf" quality="high" width="432" height="364" wmode="transparent" type="application/x-shockwave-flash" flashvars="c=v&amp;amp;v=206b79c0-1f85-4354-bd50-c2c8fc2f67ac&amp;amp;from=writer"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Webslides&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Los Webslides es otra de las nuevas caracteristicas de IE8 permitiendo esta suscribirse a las actualizaciones de un website. Una de los casos donde es bastante util es en ebay. Con los webslides podemos ver de manera facil y si estar actualizando la ventana de ebay los cambios que esta teniendo el producto al cual nos hemos suscribido. La misma caracteristica tambien se puede usar en facebook y otros portales.&lt;/p&gt;  &lt;p&gt;Video&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c5008461-e010-47e1-af93-3ed3b73eb83b" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;div&gt;&lt;embed src="http://images.video.msn.com/flash/soapbox1_1.swf" quality="high" width="432" height="364" wmode="transparent" type="application/x-shockwave-flash" flashvars="c=v&amp;amp;v=b82d21e7-1ae9-49ef-bc74-650d8410d8f4&amp;amp;from=writer"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Este primer beta del internet explorer esta orientado mas como dije al principio a dise&amp;#241;adores y desarrolladores web, muchos portales no se podran ver de manera correcta debido a los cambios en el motor de renderizacion que nos trae IE8. Gracias a Dios y a Microsoft se creo la opcion para emular el IE7 y usar el motor anterior al IE8. Asi que hay que esperar los nuevos cambios y retos que nos traera microsoft con el internet explorer y no desesperarze y juzgar antes de tiempo como han hechos &lt;a href="http://www.bits20.com/403/internet-explorer-8-decepcion-total.html" target="_blank"&gt;muchos&lt;/a&gt; que ya han catalogado al internet explorer 8 como una decepcion total, al parecer se les ha olvidado el significado de Beta y se dejan llevar por el odio despiadado hacia microsoft dejando asi de ser objectivos :P, espero que tambien analizen otras &lt;a href="http://www.google.com/" target="_blank"&gt;compa&amp;#241;ias&lt;/a&gt; donde a mi entender tienen una pecera de &lt;a href="http://es.wikipedia.org/wiki/Betta_splendens" target="_blank"&gt;Pez Beta&lt;/a&gt; estando casi todos sus productos por mas de 2 y 3 a&amp;#241;os en fase beta.&lt;/p&gt;  &lt;p&gt;&lt;img height="180" src="http://www.acuariofiliacanaria.com/gallery/albums/album71/macho_joven_cola_de_velo.jpg" width="240" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Saludos y bendiciones!!! ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=77829" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author></entry><entry><title>SQLTableHistory utilidad para hacerle auditoria a tus tablas</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/02/22/sqltablehistory-utilidad-para-hacerle-auditoria-a-tus-tablas.aspx" /><id>/blogs/ezavala/archive/2008/02/22/sqltablehistory-utilidad-para-hacerle-auditoria-a-tus-tablas.aspx</id><published>2008-02-22T16:14:20Z</published><updated>2008-02-22T16:14:20Z</updated><content type="html">  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;SQLTableHistory es una utilidad que hicimos junto a un compa&amp;#241;ero que nos permite llevar un rastro de auditoria de tablas especificas que podemos seleccionar desde la aplicacion, mantiendo asi un registro de cada accion(insertar, actualizar, eliminar) que involucre las tablas que se le quiera hacer la auditoria.          &lt;br /&gt;          &lt;br /&gt;&lt;strong&gt;&lt;u&gt;Requerimientos &lt;/u&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;.Net Framework 3.5 &lt;strong&gt;&lt;/strong&gt;&lt;/li&gt;              &lt;li&gt;Sql Server 2000-2005                &lt;p&gt;&lt;/p&gt;             &lt;/li&gt;           &lt;/ul&gt;           &lt;strong&gt;&lt;u&gt;Arquitectura&lt;/u&gt;&lt;/strong&gt;&lt;/strong&gt;           &lt;p&gt;La aplicacion consta de de una sola tabla llamada AUDIT donde guarda cada uno de los registros de las tablas, guardando asi el nombre de la tabla, nombre de la columna que fue afectada el valor anterior y el valor nuevo de la columna, el usuario de la transaccion, fecha y&amp;#160; asi tambien el tipo de transaccion que fue realizada(insertar, actualizar, eliminar).&lt;/p&gt;          &lt;p&gt;Para ser posible esto, la utilidad nos crea tres triggers por cada una de las tablas, uno para insertar, actualizar e eliminar.&lt;/p&gt;          &lt;div&gt;           &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SQLTableHistoryutilidadparahacerleaudito_9230/tableaudit_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="217" alt="tableaudit" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SQLTableHistoryutilidadparahacerleaudito_9230/tableaudit_thumb.jpg" width="359" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;         &lt;/div&gt;          &lt;p&gt;Script:&lt;/p&gt;          &lt;p&gt;Tabla Audit:&lt;/p&gt;          &lt;p&gt;/****** Object:&amp;#160; Default [DF_Audit_Date]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/22/2008 19:27:40 ******/           &lt;br /&gt;IF&amp;#160; EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N&amp;#39;[dbo].[DF_Audit_Date]&amp;#39;) AND type = &amp;#39;D&amp;#39;)            &lt;br /&gt;BEGIN            &lt;br /&gt;ALTER TABLE [dbo].[Audit] DROP CONSTRAINT [DF_Audit_Date] &lt;/p&gt;          &lt;p&gt;END           &lt;br /&gt;GO            &lt;br /&gt;/****** Object:&amp;#160; Table [dbo].[Audit]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/22/2008 19:27:40 ******/            &lt;br /&gt;IF&amp;#160; EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N&amp;#39;[dbo].[Audit]&amp;#39;) AND OBJECTPROPERTY(id, N&amp;#39;IsUserTable&amp;#39;) = 1)            &lt;br /&gt;DROP TABLE [dbo].[Audit]            &lt;br /&gt;GO            &lt;br /&gt;/****** Object:&amp;#160; Table [dbo].[Audit]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/22/2008 19:27:40 ******/            &lt;br /&gt;SET ANSI_NULLS ON            &lt;br /&gt;GO            &lt;br /&gt;SET QUOTED_IDENTIFIER ON            &lt;br /&gt;GO            &lt;br /&gt;IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N&amp;#39;[dbo].[Audit]&amp;#39;) AND OBJECTPROPERTY(id, N&amp;#39;IsUserTable&amp;#39;) = 1)            &lt;br /&gt;BEGIN            &lt;br /&gt;CREATE TABLE [dbo].[Audit](            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [AuditID] [int] IDENTITY(1,1) NOT NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Table] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Column] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [OldValue] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [NewValue] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [UserID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Date] [datetime] NOT NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Type] [int] NOT NULL,            &lt;br /&gt; CONSTRAINT [PK_Audit] PRIMARY KEY CLUSTERED             &lt;br /&gt;(            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [AuditID] ASC            &lt;br /&gt;)            &lt;br /&gt;)            &lt;br /&gt;END            &lt;br /&gt;GO            &lt;br /&gt;/****** Object:&amp;#160; Default [DF_Audit_Date]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/22/2008 19:27:40 ******/            &lt;br /&gt;IF Not EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N&amp;#39;[dbo].[DF_Audit_Date]&amp;#39;) AND type = &amp;#39;D&amp;#39;)            &lt;br /&gt;BEGIN            &lt;br /&gt;ALTER TABLE [dbo].[Audit] ADD&amp;#160; CONSTRAINT [DF_Audit_Date]&amp;#160; DEFAULT (getdate()) FOR [Date] &lt;/p&gt;          &lt;p&gt;END           &lt;br /&gt;GO&lt;/p&gt;          &lt;p&gt;&amp;#160;&lt;/p&gt;          &lt;p&gt;Tabla AuditType:&lt;/p&gt;          &lt;p&gt;/****** Object:&amp;#160; Table [dbo].[AuditType]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/22/2008 19:35:13 ******/           &lt;br /&gt;IF&amp;#160; EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N&amp;#39;[dbo].[AuditType]&amp;#39;) AND OBJECTPROPERTY(id, N&amp;#39;IsUserTable&amp;#39;) = 1)            &lt;br /&gt;DROP TABLE [dbo].[AuditType]            &lt;br /&gt;GO            &lt;br /&gt;/****** Object:&amp;#160; Table [dbo].[AuditType]&amp;#160;&amp;#160;&amp;#160; Script Date: 02/22/2008 19:35:13 ******/            &lt;br /&gt;SET ANSI_NULLS ON            &lt;br /&gt;GO            &lt;br /&gt;SET QUOTED_IDENTIFIER ON            &lt;br /&gt;GO            &lt;br /&gt;IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N&amp;#39;[dbo].[AuditType]&amp;#39;) AND OBJECTPROPERTY(id, N&amp;#39;IsUserTable&amp;#39;) = 1)            &lt;br /&gt;BEGIN            &lt;br /&gt;CREATE TABLE [dbo].[AuditType](            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [AuditTypeID] [int] NOT NULL,            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Name] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,            &lt;br /&gt; CONSTRAINT [PK_AuditType] PRIMARY KEY CLUSTERED             &lt;br /&gt;(            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [AuditTypeID] ASC            &lt;br /&gt;)            &lt;br /&gt;)            &lt;br /&gt;END            &lt;br /&gt;GO&lt;/p&gt;          &lt;p&gt;Y debemos tener estos tres valores por default en nuestra base de datos:           &lt;br /&gt;INSERT [dbo].[AuditType] ([AuditTypeID], [Name]) VALUES (1, convert(text, N&amp;#39;Agregar&amp;#39; collate SQL_Latin1_General_CP1_CI_AS))            &lt;br /&gt;INSERT [dbo].[AuditType] ([AuditTypeID], [Name]) VALUES (2, convert(text, N&amp;#39;Remover&amp;#39; collate SQL_Latin1_General_CP1_CI_AS))            &lt;br /&gt;INSERT [dbo].[AuditType] ([AuditTypeID], [Name]) VALUES (3, convert(text, N&amp;#39;Modificar&amp;#39; collate SQL_Latin1_General_CP1_CI_AS))&lt;/p&gt;          &lt;p&gt;           &lt;br /&gt;&lt;strong&gt;Clases&lt;/strong&gt;&lt;/p&gt;          &lt;p&gt;Usando Linq to SQL y a la vez el Designer, tenemos las siguientes clases:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SQLTableHistoryutilidadparahacerleaudito_9230/clasese_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="480" alt="clasese" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SQLTableHistoryutilidadparahacerleaudito_9230/clasese_thumb.jpg" width="549" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;Donde:&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;SysTable&lt;/strong&gt;: es la clase que contiene todas las tablas de nuestra base de datos seleccionada, se conecta a la tabla sys.tables&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Table&lt;/strong&gt;: clase que contiene el schema de las tablas, se conecta a la tabla INFORMATION_SCHEMA.TABLES&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Trigger: &lt;/strong&gt;es la clase que contiene los triggers de la base de datos, se usa la tabla del sistema sys.triggers&lt;/p&gt;          &lt;p&gt;&lt;strong&gt;Column: &lt;/strong&gt;clase que contiene el schema de las columnas de cada tabla de nuestra base de datos, para obtener esto se usa la tabla del sistema INFORMATION_SCHEMA.COLUMNS&lt;/p&gt;          &lt;p&gt;Si se fijan para todo esto usamos tablas del sistema, ya que estas nos pueden proveer el schema de las tablas y poder asi crear los triggers de una manera dinamica.&lt;/p&gt;          &lt;p&gt;Deben configurar el archivo app.config en la cadena de conexion y espeficiar el connectionstring correspondiente a su base de datos... en un futuro lo pondre para que se pueda hacer de manera mas dinamica.&lt;/p&gt;          &lt;p&gt;Si les interesa pueden descargar el codigo fuente y asi poder echarle una &lt;a href="http://geeks.ms/files/folders/73645/download.aspx" target="_blank"&gt;miradita al codigo&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;Preview de la utilidad:&lt;/p&gt;          &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SQLTableHistoryutilidadparahacerleaudito_9230/app_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="385" alt="app" src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/SQLTableHistoryutilidadparahacerleaudito_9230/app_thumb.jpg" width="640" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;Espero que les sea de utilidad.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt; &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=73646" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author></entry><entry><title>Instalar Windows Vista SP1 desde Windows Update</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/02/13/instalar-windows-vista-sp1-desde-windows-update.aspx" /><id>/blogs/ezavala/archive/2008/02/13/instalar-windows-vista-sp1-desde-windows-update.aspx</id><published>2008-02-14T01:01:22Z</published><updated>2008-02-14T01:01:22Z</updated><content type="html">&lt;p&gt;Con la llegada de Windows Vista Service pack microsoft corregira muchos de los errores reportados por un gran numero de usuarios (entre los que me incluyo), tales como:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Escalabilidad&lt;/li&gt;    &lt;li&gt;Seguridad&lt;/li&gt;    &lt;li&gt;Rendimiento&lt;/li&gt;    &lt;li&gt;Soporte de nuevos estandares&lt;/li&gt;    &lt;li&gt;otros&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Para mas detalle pueden ver la entrada que hizo Joshua Saenz en este &lt;a href="http://geeks.ms/blogs/vista-tecnica/archive/2008/02/13/windows-vista-sp1-i-de-iii.aspx" target="_blank"&gt;enlace&lt;/a&gt;. Pero para tener todas estas nuevas bondades que nos trae nuestro amigo Vista y poder descargarlo desde Windows update tenemos que esperar hasta mediados de marzo.&lt;/p&gt;  &lt;p&gt;Si tienes la fiebre como yo de poder tener el Service pack 1 instalado desde ya, hemos visto esta entrada en el blog &lt;a href="http://gabriel.lozano-moran.name/blog/PermaLink,guid,df569cd6-3118-4b9b-9814-9fbae4c8f59d.aspx" target="_blank"&gt;The .Net Aficionado&lt;/a&gt; en la cual se publico una porcion de codigo que nos habilita la descarga via Windows Update del Service pack 1. Puedes copiar y pegar este codigo en un archivo .cmd y correrlo (logicamente si lo corres es bajo riesgo propio)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;@echo off &lt;/p&gt;  &lt;p&gt;reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\VistaSp1 /f &amp;gt; NUL 2&amp;gt;&amp;amp;1    &lt;br /&gt;reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\WindowsUpdate\VistaSP1 /f &amp;gt; NUL 2&amp;gt;&amp;amp;1 &lt;/p&gt;  &lt;p&gt;reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\VistaSp1 /v Beta1 /t REG_SZ /d dcf99ef8-d784-414e-b411-81a910d2761d /f    &lt;br /&gt;IF NOT %errorlevel% == 0 ( goto ERROR) &lt;/p&gt;  &lt;p&gt;:SUCCESS    &lt;br /&gt;@echo.     &lt;br /&gt;echo ===========================================================     &lt;br /&gt;echo&amp;#160; Windows Vista SP1 registry key has been set successfully.     &lt;br /&gt;echo&amp;#160; Please check for updates in Windows Update.     &lt;br /&gt;echo ===========================================================     &lt;br /&gt;@echo.     &lt;br /&gt;goto END &lt;/p&gt;  &lt;p&gt;:ERROR    &lt;br /&gt;@echo.     &lt;br /&gt;echo ===========================================================     &lt;br /&gt;echo&amp;#160; FAILED to set Windows Vista SP1 registry keys.     &lt;br /&gt;echo&amp;#160; Please run this script by right clicking and selecting     &lt;br /&gt;echo&amp;#160; &amp;quot;Run as Administrator&amp;quot;.     &lt;br /&gt;echo ===========================================================     &lt;br /&gt;@echo.     &lt;br /&gt;goto END &lt;/p&gt;  &lt;p&gt;:END    &lt;br /&gt;pause&lt;/p&gt;  &lt;p&gt;Espero que les sea de utilidad.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=71357" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author></entry><entry><title>Microsoft ofrece $44.600 millones de dólares por Yahoo</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/02/01/microsoft-ofrece-44-6-billones-por-yahoo.aspx" /><id>/blogs/ezavala/archive/2008/02/01/microsoft-ofrece-44-6-billones-por-yahoo.aspx</id><published>2008-02-01T17:24:04Z</published><updated>2008-02-01T17:24:04Z</updated><content type="html">&lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;Luego de la &lt;a href="http://geeks.ms/blogs/ezavala/archive/2008/01/29/msdn-tour-asp-net-provider-amp-linq-santo-domingo.aspx"&gt;presentaci&amp;#243;n&lt;/a&gt; sobre LINQ, despertamos y lo primero que vemos es una tremenda noticia, microsoft ofrece por yahoo la modica suma de &lt;a href="http://money.cnn.com/news/newsfeeds/articles/prnewswire/NYF04001022008-1.htm" target="_blank"&gt;$44.600 millones de d&amp;#243;lares.&lt;/a&gt; lo referente a 31 d&amp;#243;lares por acci&amp;#243;n, un 62% del valor que ten&amp;#237;an los t&amp;#237;tulos a d&amp;#237;a de ayer.           &lt;br /&gt;          &lt;br /&gt;Es una tremenda oferta ya que todos hemos podido ver como en los ultimos meses las acciones de yahoo se han desplomado, esta oferta ha provocado que las acciones de yahoo suban en mas de un 59%.           &lt;br /&gt;          &lt;br /&gt;Creo la posible fusion entre yahoo y microsoft, provocaria un fuerte binomio que atentaria con la supremacia total que tiene google en la red.           &lt;br /&gt;          &lt;br /&gt;Esperemos a ver como se desenvuelve esta noticia.&lt;/td&gt;        &lt;td&gt;&lt;img height="172" src="http://delirius.com.ar/wp-content/uploads/2007/05/yahoo_microsoft.jpg" width="285" alt="" /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=68366" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author></entry><entry><title>MSDN Tour ASP.NET Provider &amp; Linq Santo Domingo</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2008/01/29/msdn-tour-asp-net-provider-amp-linq-santo-domingo.aspx" /><id>/blogs/ezavala/archive/2008/01/29/msdn-tour-asp-net-provider-amp-linq-santo-domingo.aspx</id><published>2008-01-29T18:07:28Z</published><updated>2008-01-29T18:07:28Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="10" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/fondo1.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/fondo1.gif" width="486" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="35" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/logo.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/logo.gif" width="138" /&gt;&lt;img height="35" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/fondo2.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/fondo2.gif" width="269" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="1" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" width="1" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="198" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/top_msdn.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/top_msdn.jpg" width="486" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="49" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/top_msdnTour.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/top_msdnTour.jpg" width="486" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="40" alt="http://www.microsoft.com/costarica/envios/imagestnb/aspnetlinq.jpg" src="http://www.microsoft.com/costarica/envios/imagestnb/aspnetlinq.jpg" width="486" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;#191;Qu&amp;#233; es ASP .NET Provider?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Probablemente uno de los mayores beneficios que puede dar &lt;b&gt;ASP .NET&lt;/b&gt; es el sistema de profiles, el cual permite mantener la data sobre los visitantes a su Web Site (sea este an&amp;#243;nimo o no). El sistema an&amp;#243;nimo de Profiles que es provisto por &lt;b&gt;ASP.NET 2.0&lt;/b&gt; puede ser utilizado en la mayor&amp;#237;a de los Websites.     &lt;br /&gt;ASP.NET 2.0 usa un modelo llamado &lt;b&gt;&amp;quot;Provider Model&amp;quot;&lt;/b&gt; que permite el reemplazo o la extensi&amp;#243;n de su implementaci&amp;#243;n para ajustarse al dise&amp;#241;o y especificaciones de su WebSite. En esta secci&amp;#243;n veremos ejemplos concretos de c&amp;#243;mo poner a trabajar esta importante herramienta la cual le ahorrar&amp;#225; muchas horas de programaci&amp;#243;n con la implementaci&amp;#243;n de dicho modelo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;#191;Qu&amp;#233; es &amp;quot;LINQ&amp;quot;?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Modelo de programaci&amp;#243;n y dise&amp;#241;o alrededor de la unificaci&amp;#243;n de acceso de datos.    &lt;br /&gt;LINQ apunta a reducir la complejidad para los desarrolladores y ayudar a aumentar su productividad a trav&amp;#233;s de un conjunto de extensiones para lenguajes de programaci&amp;#243;n de &lt;b&gt;Visual Basic&lt;/b&gt; y C#, as&amp;#237; como &lt;b&gt;Microsoft .NET Framework&lt;/b&gt; que proporcionan consultas integradas a objetos, bases de datos y datos XML. Al utilizar &lt;b&gt;LINQ&lt;/b&gt;, los desarrolladores podr&amp;#225;n escribir consultas de forma nativa en C# o Visual Basic sin tener que utilizar lenguajes especializados, como los lenguaje de consulta estructurado (SQL) y XPath.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nivel de la Charla: &lt;/b&gt;&lt;b&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=926894&amp;amp;id_evento=2&amp;amp;id_envio=12349&amp;amp;id_shot=45588&amp;amp;desc=&amp;amp;url=http://www.microsoft.com/dominicana/technet/eventos/infoeventos.aspx"&gt;Intermedio (200)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=926894&amp;amp;id_evento=2&amp;amp;id_envio=12349&amp;amp;id_shot=45588&amp;amp;desc=&amp;amp;url=http://blogs.msdn.com/ricardoj"&gt;&lt;img height="114" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/boton_naranja_info.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/boton_naranja_info.jpg" width="139" border="0" /&gt;&lt;/a&gt;&lt;a href="mailto:?subject=Interesantes%20Eventos%20MSDN%20de%20Microsoft%202008&amp;amp;body=Puedes%20encontrar%20en%20http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=926894&amp;amp;id_evento=2&amp;amp;id_envio=12349&amp;amp;id_shot=45588&amp;amp;desc=&amp;amp;url=http://blogs.msdn.com/ricardoj"&gt;&lt;img height="114" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/boton_naranja_recomiendalo.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/boton_naranja_recomiendalo.jpg" width="139" border="0" /&gt;&lt;/a&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=926894&amp;amp;id_evento=2&amp;amp;id_envio=12349&amp;amp;id_shot=45588&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032367240&amp;amp;Culture=es-DO"&gt;&lt;img height="114" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/boton_naranja_registrese.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/boton_naranja_registrese.jpg" width="139" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="5" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" width="1" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="48" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/agenda.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/agenda.jpg" width="456" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="1" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" width="13" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="11" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" width="11" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Fecha:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Jueves, 31 de Enero de 2008&lt;/p&gt;  &lt;p&gt;&lt;img height="11" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" width="11" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Horario:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;6:00 p.m. - 7:00 p.m. &lt;b&gt;(ASP .NET PROVIDER)&lt;/b&gt;     &lt;br /&gt;7:00 P.M. - 8:00 p.m. &lt;b&gt;(LINQ)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="11" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" width="11" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Lugar :&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Fundaci&amp;#243;n Global Democracia y Desarrollo&lt;/p&gt;  &lt;p&gt;&lt;img height="11" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" width="11" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sal&amp;#243;n:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Auditorio&lt;/p&gt;  &lt;p&gt;&lt;img height="11" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" width="11" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Direcci&amp;#243;n:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;c/ Capitan Eugenio de Marchena # 26    &lt;br /&gt;La Esperilla, Santo Domingo Republica Dominicana&lt;/p&gt;  &lt;p&gt;&lt;img height="11" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/flecha.gif" width="11" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Informaci&amp;#243;n:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1-888-751-2323 (libre de cargos excepto desde tel&amp;#233;fonos celulares)&lt;img height="5" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/trans.gif" width="1" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;En este evento ser&amp;#225;n entregados todos los premios y libros prometidos en el evento &amp;quot;Lo Mejor de 2007!!&amp;quot; de Diciembre pasado. &lt;/b&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;b&gt;Reserve su espacio a tiempo. Cupo Limitado.&lt;/b&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;img height="101" alt="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/logo_fund.jpg" src="http://www.microsoft.com/costarica/images_mails/imagesTech_MSDN/logo_fund.jpg" width="114" border="0" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;Estaremos dando la charla de Linq, te esperamos!!!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=67468" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Eventos" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Eventos/default.aspx" /></entry><entry><title>Charla: Mi primer Juego con XNA</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2007/11/08/charla-mi-primer-juego-con-xna.aspx" /><id>/blogs/ezavala/archive/2007/11/08/charla-mi-primer-juego-con-xna.aspx</id><published>2007-11-08T20:05:00Z</published><updated>2007-11-08T20:05:00Z</updated><content type="html">&lt;p&gt; Luego de el paso de la &lt;a href="http://geeks.ms/blogs/ezavala/archive/2007/11/07/ayuda-a-los-damnificados-de-la-republica-dominicana.aspx"&gt;Tormenta Noel&lt;/a&gt; en nuestro país, los labores deben seguir, pues el pasado viernes tuvimos una pequeña Charla     &lt;br /&gt;titulada “Mi primer Juego con XNA” en la &lt;a href="http://www.uasd.edu.do/"&gt;universidad autónoma de Santo Domingo&lt;/a&gt;, esto para cubrir todo el calendario de University Tour e &lt;a href="http://www.imaginecup.com/"&gt;Imagine Cup&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;En la chara tuvimos como agenda:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Que es XNA&lt;/li&gt;    &lt;li&gt;Componentes de un Juego&lt;/li&gt;    &lt;li&gt;Introduccion a los Sprites y Animaciones&lt;/li&gt;    &lt;li&gt;Demo&lt;/li&gt;    &lt;li&gt;Preguntas y Respuestas&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; Tomamos como ejemplo los webcast que hizo Edgar Sanchez para &lt;a href="http://www.microsoft.com/spanish/msdn/latam/mediacenter/webcast/default.aspx"&gt;MSDN Media Center&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:6960CE03-38FC-44df-87D4-FA4540212B06:61f3cf25-b7a1-4c88-8d38-59b11d04355c" style="margin:0px;padding:0px;display:inline;float:none;width:242px;"&gt;&lt;img src="http://geeks.ms/photos/ezavala/images/48825/original.aspx" alt="" style="width:242px;height:181px;" /&gt;&lt;/div&gt;   &lt;p&gt;El Señor &lt;a href="http://blogs.msdn.com/gmolina/"&gt;Gilberto Molina&lt;/a&gt; gerente de relaciones academicas para Microsoft&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-14_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-14_thumb.jpg" style="border:0px none;" alt="photo-14" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-18_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-18_thumb.jpg" style="border:0px none;" alt="photo-18" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-20_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-20_thumb.jpg" style="border:0px none;" alt="photo-20" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-21_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-21_thumb.jpg" style="border:0px none;" alt="photo-21" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-19_4.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-19_thumb_1.jpg" style="border:0px none;" alt="photo-19" border="0" height="184" width="244" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-22_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-22_thumb.jpg" style="border:0px none;" alt="photo-22" border="0" height="184" width="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-23_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-23_thumb.jpg" style="border:0px none;" alt="photo-23" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-30_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-30_thumb.jpg" style="border:0px none;" alt="photo-30" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-31_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-31_thumb.jpg" style="border:0px none;" alt="photo-31" border="0" height="184" width="244" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-32_2.jpg"&gt;&lt;img src="http://geeks.ms/blogs/ezavala/WindowsLiveWriter/CharlaMiprimerJuegoconXNA_DBD4/photo-32_thumb.jpg" style="border:0px none;" alt="photo-32" border="0" height="184" width="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Para descargar el codigo de la session &lt;a href="http://geeks.ms/blogs/ezavala/Hour8.zip"&gt;aqui&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=48834" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="XNA" scheme="http://geeks.ms/blogs/ezavala/archive/tags/XNA/default.aspx" /><category term="Eventos" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Eventos/default.aspx" /></entry><entry><title>Ayuda a los damnificados de la Republica Dominicana</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2007/11/07/ayuda-a-los-damnificados-de-la-republica-dominicana.aspx" /><id>/blogs/ezavala/archive/2007/11/07/ayuda-a-los-damnificados-de-la-republica-dominicana.aspx</id><published>2007-11-07T17:09:00Z</published><updated>2007-11-07T17:09:00Z</updated><content type="html">&lt;p&gt;Luego de un largo descanso &lt;strike&gt;por unas largas y merecidas vacaciones&lt;/strike&gt; y de no aparecerme por estos alrededores queria hacer uso de este medio para pedirle a todos los geeks que nos visitan, que ayuden a la Republica Dominicana. Hace una semana&amp;nbsp; nuestro bello pais fue envestido por la &lt;a href="http://nuevayores.blogs.com/remolacha/tormenta_noel/index.html" title="Tormenta"&gt;tormenta Noel &lt;/a&gt;dejando en saldo mas de 84 personas muertas y a la vez muchisimos desaparecidos, esta tormenta nos agarro de forma repentina dejando asi daños incalculabes a nuestra nacion.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://farm3.static.flickr.com/2269/1798841871_434e0c35d6.jpg?v=0" title="Tormenta Noel" alt="Tormenta Noel" height="375" width="500" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Quiero pedirles por favor que se acerquen a la embajada Dominicana de sus respectivos paises y ayuden a esta noble causa, ya sea con Dinero, Comida, Ropa, Etc, se que sera de gran ayuda para nosotros.&lt;br /&gt;Gracias de antemano&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=48549" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="General" scheme="http://geeks.ms/blogs/ezavala/archive/tags/General/default.aspx" /></entry><entry><title>Fileupload con progress bar en Asp.Net 2.0</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx" /><id>/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx</id><published>2007-07-22T02:13:00Z</published><updated>2007-07-22T02:13:00Z</updated><content type="html">&lt;p&gt;Primero quería pedir mis disculpas porque tenía tantas ganas de postear, pero he estado requeté ocupado&lt;br /&gt;proyectos en la oficina, algunos pendientes por afuera pa el &amp;quot;picoteo&amp;quot; como decimos aquí :P y sobre todo estudiando para certificarme&lt;br /&gt;por cierto ya soy MCTS Windows y Web el examen que tome fue el 70-526. &lt;/p&gt;
&lt;p&gt;Manos a la obra… &lt;/p&gt;
&lt;p&gt;Hace tiempo, un cliente nos pidió un FileUpload, pues que fácil no!!! Pero uno de los requerimientos del mismo era que &lt;br /&gt;tenía que incluir un progress Bar, pues yo rompiéndome la cabeza y sin saber qué hacer, encontré una solución. &lt;/p&gt;
&lt;p&gt;Consiste en un simple UserControl con un FIleUpload y un botón, con el siguiente código de declaración: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="background-color:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@&lt;/span&gt; &lt;span&gt;Control&lt;/span&gt; &lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;CodeFile&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader.ascx.cs&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Inherits&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader&amp;quot;&lt;/span&gt; &lt;span style="background-color:yellow;"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;FileUpload&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;upUserCtrl&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Button&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;btnUpload&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;OnClick&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;btnUpload_Click&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Upload&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En el CodeBehind, tenemos dos funciones javascripts, una para imprimir el progress bar y otra por supuesto para eliminar cuando el archivo ya se haya guardado&lt;br /&gt;en nuestra carpeta o BD, como la quieran guardar. &lt;/p&gt;
&lt;p&gt;Aquí les dejo el código completo: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Data; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Configuration; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.Security; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.WebControls; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.WebControls.WebParts; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.HtmlControls; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Threading; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;partial&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span&gt;Uploader&lt;/span&gt; : System.Web.UI.&lt;span&gt;UserControl &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; strLocation = &lt;span&gt;&amp;quot;c:\\Geeks\\progressBar&amp;quot;&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span&gt;EventArgs&lt;/span&gt; e) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:green;"&gt;//Codigo JavaScript para Imprimir el Progres &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Imprimir() &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span&gt;StringBuilder&lt;/span&gt; sb = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;StringBuilder&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;&amp;lt;div id=&amp;#39;updiv&amp;#39; style=&amp;#39;Font-weight:bold;font-size:11pt;Left:320px;COLOR:black;font-family:verdana;Position:absolute;Top:140px;Text-Align:center;&amp;#39;&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;&amp;amp;nbsp;&amp;lt;script&amp;gt; var up_div=document.getElementById(&amp;#39;updiv&amp;#39;);up_div.innerText=&amp;#39;&amp;#39;;&amp;lt;/script&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;&amp;lt;script language=javascript&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;var dts=0; var dtmax=10;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;function ShowWait(){var output;output=&amp;#39;Espere mientras se carga el archivo!&amp;#39;;dts++;if(dts&amp;gt;=dtmax)dts=1;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;for(var x=0;x &amp;lt; dts; x++){output+=&amp;#39;&amp;#39;;}up_div.innerText=output;up_div.style.color=&amp;#39;red&amp;#39;;}&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;function StartShowWait(){up_div.style.visibility=&amp;#39;visible&amp;#39;;ShowWait();window.setInterval(&amp;#39;ShowWait()&amp;#39;,100);}&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sb.Append(&lt;span&gt;&amp;quot;StartShowWait();&amp;lt;/script&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span&gt;HttpContext&lt;/span&gt;.Current.Response.Write(sb.ToString()); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span&gt;HttpContext&lt;/span&gt;.Current.Response.Flush(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:green;"&gt;//Codigo javascript para borrar el progressbar &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Clear() &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span&gt;StringBuilder&lt;/span&gt; sbc = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;StringBuilder&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sbc.Append(&lt;span&gt;&amp;quot;&amp;lt;script language=&amp;#39;javascript&amp;#39;&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sbc.Append(&lt;span&gt;&amp;quot;alert(&amp;#39;Se ha completado correctamente!&amp;#39;);&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sbc.Append(&lt;span&gt;&amp;quot;up_div.style.visibility=&amp;#39;hidden&amp;#39;;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sbc.Append(&lt;span&gt;&amp;quot;history.go(-1)&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;sbc.Append(&lt;span&gt;&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;/span&gt;); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span&gt;HttpContext&lt;/span&gt;.Current.Response.Write(sbc); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; btnUpload_Click(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span&gt;EventArgs&lt;/span&gt; e) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; strFileName = System.IO.&lt;span&gt;Path&lt;/span&gt;.GetFileName(upUserCtrl.PostedFile.FileName); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;try &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (strFileName != &lt;span&gt;&amp;quot;&amp;quot;&lt;/span&gt;) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:green;"&gt;//Imprimir el ProgressBar &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Imprimir(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;upUserCtrl.PostedFile.SaveAs(strLocation + strFileName); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span&gt;Thread&lt;/span&gt;.Sleep(2000); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Clear(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;(&lt;span&gt;Exception&lt;/span&gt; ex) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Response.Write(ex.Message); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Bueno y logicamente llamamos nuestro userControl desde una pagina .aspx, en este caso llamemosla Default.aspx &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="background-color:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@&lt;/span&gt; &lt;span&gt;Page&lt;/span&gt; &lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;CodeFile&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Default.aspx.cs&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Inherits&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;_Default&amp;quot;&lt;/span&gt; &lt;span style="background-color:yellow;"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="background-color:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@&lt;/span&gt; &lt;span&gt;Register&lt;/span&gt; &lt;span style="color:red;"&gt;Src&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader.ascx&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;TagName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;TagPrefix&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;uc1&amp;quot;&lt;/span&gt; &lt;span style="background-color:yellow;"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:red;"&gt;html&lt;/span&gt; &lt;span style="color:red;"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt; &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Head1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Geeks Bar&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;form&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;uc1&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Uploader&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;Espero le sea de utilidad. &lt;/strike&gt;&lt;/p&gt;
&lt;p&gt;Update:&lt;/p&gt;
&lt;p&gt;Por peticion, un lector nos pidio que hicieramos el codigo en VB.&lt;/p&gt;
&lt;p&gt;Aqui esta el codigo&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="background-color:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@&lt;/span&gt; &lt;span&gt;Control&lt;/span&gt; &lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;VB&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;CodeFile&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader.ascx.vb&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Inherits&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader&amp;quot;&lt;/span&gt; &lt;span style="background-color:yellow;"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;FileUpload&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;upUserCtrl&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Button&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;btnUpload&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;OnClick&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;btnUpload_Click&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Upload&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Data&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Configuration&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Collections&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Web&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Web.Security&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI.WebControls&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI.WebControls.WebParts&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI.HtmlControls&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Text&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Imports&lt;/font&gt;&lt;font size="2"&gt; System.Threading&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;Partial&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Class&lt;/font&gt;&lt;font size="2"&gt; Uploader&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Inherits&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI.UserControl&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; strlocation &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;C:\\Geeks\\progressbar&amp;quot;&lt;/font&gt;&lt;font color="#800000" size="2"&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Protected&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Page_Load(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Load&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Codigo Javascript para Imprimir el Progress&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Imprimir()&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; sb &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; StringBuilder()&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;&amp;lt;div id=&amp;#39;updiv&amp;#39; style=&amp;#39;Font-weight:bold;font-size:11pt;Left:320px;COLOR:black;font-family:verdana;Position:absolute;Top:140px;Text-Align:center;&amp;#39;&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;&amp;amp;nbsp;&amp;lt;script&amp;gt; var up_div=document.getElementById(&amp;#39;updiv&amp;#39;);up_div.innerText=&amp;#39;&amp;#39;;&amp;lt;/script&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;&amp;lt;script language=javascript&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;var dts=0; var dtmax=10;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;function ShowWait(){var output;output=&amp;#39;Espere mientras se carga el archivo!&amp;#39;;dts++;if(dts&amp;gt;=dtmax)dts=1;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;for(var x=0;x &amp;lt; dts; x++){output+=&amp;#39;&amp;#39;;}up_div.innerText=output;up_div.style.color=&amp;#39;red&amp;#39;;}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;function StartShowWait(){up_div.style.visibility=&amp;#39;visible&amp;#39;;ShowWait();window.setInterval(&amp;#39;ShowWait()&amp;#39;,100);}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt;sb.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;StartShowWait();&amp;lt;/script&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;HttpContext.Current.Response.Write(sb.ToString())&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;HttpContext.Current.Response.Flush()&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Codigo javascript para borrar el progressbar&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Clear()&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; sbc &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; StringBuilder()&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sbc.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;&amp;lt;script language=&amp;#39;javascript&amp;#39;&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;sbc.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;alert(&amp;#39;Se ha completado correctamente!&amp;#39;);&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sbc.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;up_div.style.visibility=&amp;#39;hidden&amp;#39;;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;sbc.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;history.go(-1)&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;sbc.Append(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;HttpContext.Current.Response.Write(sbc)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;Protected&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; btnUpload_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; btnUpload.Click&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; strFileName &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = System.IO.Path.GetFileName(upUserCtrl.PostedFile.FileName)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Try&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; strFileName &amp;lt;&amp;gt; &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#008000" size="2"&gt;&amp;#39;Imprimir el ProgressBar&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;Imprimir()&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;upUserCtrl.PostedFile.SaveAs(strLocation + strFileName)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Thread.Sleep(2000)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;Clear()&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Catch&lt;/font&gt;&lt;font size="2"&gt; ex &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Exception&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;Response.Write(ex.Message)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Try&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;end&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Class&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="background-color:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@&lt;/span&gt; &lt;span&gt;Page&lt;/span&gt; &lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;VB&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;CodeFile&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Default.aspx.VB&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Inherits&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;_Default&amp;quot;&lt;/span&gt; &lt;span style="background-color:yellow;"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="background-color:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:blue;"&gt;@&lt;/span&gt; &lt;span&gt;Register&lt;/span&gt; &lt;span style="color:red;"&gt;Src&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader.ascx&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;TagName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;TagPrefix&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;uc1&amp;quot;&lt;/span&gt; &lt;span style="background-color:yellow;"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;!&lt;/span&gt;&lt;span&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:red;"&gt;html&lt;/span&gt; &lt;span style="color:red;"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;html&lt;/span&gt; &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;head&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Head1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Geeks Bar&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;form&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;uc1&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span&gt;Uploader&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Uploader1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;form&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;html&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;Espero que le sea de utilidad&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Courier New;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=22222" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Controles" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Controles/default.aspx" /></entry><entry><title>Console.Writeline("Hola Mundo Cruel"');</title><link rel="alternate" type="text/html" href="/blogs/ezavala/archive/2007/06/12/console-writeline-quot-hola-mundo-cruel-quot.aspx" /><id>/blogs/ezavala/archive/2007/06/12/console-writeline-quot-hola-mundo-cruel-quot.aspx</id><published>2007-06-13T00:03:00Z</published><updated>2007-06-13T00:03:00Z</updated><content type="html">&lt;P&gt;Mi primer post.... que grata noticia al leer en mi email "Bienvenido a Geeks.ms", siendo sincero tengo mucho tiempo&amp;nbsp;dandole seguimiento a esta grandiosa comunidad y leyendo articulos interesantisimo de Rodrigo Corral, Jorge Serrano, Percey Reyes y un sin numero mas de personas que hacen que esta sea una referencia casi&amp;nbsp;obligatoria(Por no decir obligatoria)&amp;nbsp;para toda la comunidad de&amp;nbsp;hispanohablante.&lt;/P&gt;
&lt;P&gt;Quien Soy?... soy un joven de 22 años de edad&amp;nbsp;procedente de la Republica Dominicana, apolitico, amante de la programacion, ejerciendola mas por hobby que por oficio&amp;nbsp;, estoy desde los 16 años programando desde Delphi, Vb6 y actualmente en vb.net, asp.net y C# siendo este ultimo mi lenguaje favorito, tambien he trabajo con ajax, javascript, desarrollo de modulos y skins para dotnetnuke y otras tantas cosas.&lt;/P&gt;
&lt;P&gt;Saludos&amp;nbsp;y manos a la obra!!!!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=15959" width="1" height="1"&gt;</content><author><name>ezavala</name><uri>http://geeks.ms/members/ezavala/default.aspx</uri></author><category term="Personal" scheme="http://geeks.ms/blogs/ezavala/archive/tags/Personal/default.aspx" /></entry></feed>
