<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Esteban Zavala's Blog - Todos los comentarios</title><link>http://geeks.ms/blogs/ezavala/default.aspx</link><description>Notas, apuntes, articulos sobre tecnologia .Net en general</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>re: Por fin me llego mi {Heroes Community Launch Kit}</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/26/por-fin-me-llego-mi-heroes-community-launch-kit.aspx#199925</link><pubDate>Wed, 24 Aug 2011 14:42:49 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:199925</guid><dc:creator>production of lamps for the home</dc:creator><description>&lt;p&gt;Quería darle las gracias por leer esta genial! Yo positivamente divertirse con cada poco de que le he agregado un marcador a echar un vistazo a lo nuevo que presentar&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=199925" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#198817</link><pubDate>Thu, 04 Aug 2011 14:34:21 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:198817</guid><dc:creator>corplex</dc:creator><description>&lt;p&gt;muy bueno felicitaciones ......&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=198817" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#198542</link><pubDate>Fri, 29 Jul 2011 18:54:25 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:198542</guid><dc:creator>Rafael</dc:creator><description>&lt;p&gt;Excelente aporte, &amp;nbsp;yo modifique un poco el trigger para que funcione para n capas, pero se basa en que cualquier tabla del sistema tenga un campo aud_usuario, para que este decienda desde la capa web hasta el trigger de la base de datos, En cuanto al ultimo post de Alexander Cuellar Jimenez en que dice para que salga concatenado me parece chevere, pero hay un detalle que modificar si actualizas tres campos se hace tres inserts en la base la tabla de audit, y bastaría con uno pues los campos y valores ya estan concatenados&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=198542" width="1" height="1"&gt;</description></item><item><title>Gracias</title><link>http://geeks.ms/blogs/ezavala/archive/2008/02/22/sqltablehistory-utilidad-para-hacerle-auditoria-a-tus-tablas.aspx#194393</link><pubDate>Tue, 17 May 2011 13:38:07 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:194393</guid><dc:creator>Christian</dc:creator><description>&lt;p&gt;como capturo el ip del cliente&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=194393" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#193598</link><pubDate>Wed, 04 May 2011 17:46:21 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:193598</guid><dc:creator>Ivan Von Doom</dc:creator><description>&lt;p&gt;Bueeeeeeeeeeenisimo el articulo!! Felicidades!! me ayudo en serio!! =d&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=193598" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#193597</link><pubDate>Wed, 04 May 2011 17:45:49 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:193597</guid><dc:creator>Ivan Von Doom</dc:creator><description>&lt;p&gt;Bueeeeeeeeeeenisimo el articulo!! Felicidades!! me ayudo en serio!! =d&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=193597" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#189798</link><pubDate>Wed, 02 Mar 2011 16:06:27 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:189798</guid><dc:creator>fdCarlos</dc:creator><description>&lt;p&gt;Muchas graias por el tutorial &lt;/p&gt;
&lt;p&gt;una pregunta de principiante &lt;/p&gt;
&lt;p&gt;podrias dar el orden de los archivos &lt;/p&gt;
&lt;p&gt;o si podrias suvier todo el ejemplo en un archivo comprimido &lt;/p&gt;
&lt;p&gt;lo que hice fue &lt;/p&gt;
&lt;p&gt;en este archivo puse todos los imports y codijo vb &lt;/p&gt;
&lt;p&gt;Uploader.ascx.vb &lt;/p&gt;
&lt;p&gt;pero en el siguiente no se &amp;nbsp;que codigo se pone&lt;/p&gt;
&lt;p&gt;Default.aspx.VB&lt;/p&gt;
&lt;p&gt;de antemano muchas gracias&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=189798" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#186877</link><pubDate>Thu, 06 Jan 2011 23:36:17 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:186877</guid><dc:creator>David</dc:creator><description>&lt;p&gt;Muy bien... pero una duda... no estástomando en cuenta el tamaño del archivo o lo que falta del mismo vdd? o sea no estás haciendo una comparación del tamaño del archivo, los bytes que se han cargado y los bytes que faltan... esto sólo estaría &amp;quot;simulando&amp;quot; el progreso mediante los setInterval de JS... :(&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=186877" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#182635</link><pubDate>Wed, 29 Sep 2010 22:25:39 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:182635</guid><dc:creator>Alexander Cuellar Jimenez</dc:creator><description>&lt;p&gt;Este otro es para aquellos que necesitan que el registro de las auditorias este en una sola tupla. Es decir que todos los campos afectados por alguna de las operaciones (insert, update, delete) estarán concatenados y separados por &amp;#39;|&amp;#39;&lt;/p&gt;
&lt;p&gt;USE MYDATABASE--Ponerle el nombre de la base de datos que va hacer auditada&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt;IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME= &amp;#39;Audit&amp;#39;)&lt;/p&gt;
&lt;p&gt;CREATE TABLE Audit&lt;/p&gt;
&lt;p&gt;(&lt;/p&gt;
&lt;p&gt;AuditID [int]IDENTITY(1,1) NOT NULL,&lt;/p&gt;
&lt;p&gt;Type char(1),&lt;/p&gt;
&lt;p&gt;TableName varchar(128),&lt;/p&gt;
&lt;p&gt;PrimaryKeyField varchar(1000),&lt;/p&gt;
&lt;p&gt;PrimaryKeyValue varchar(1000),&lt;/p&gt;
&lt;p&gt;FieldName varchar(1000),&lt;/p&gt;
&lt;p&gt;OldValue varchar(2000),&lt;/p&gt;
&lt;p&gt;NewValue varchar(2000),&lt;/p&gt;
&lt;p&gt;UpdateDate datetime DEFAULT (GetDate()),&lt;/p&gt;
&lt;p&gt;UserName varchar(128)&lt;/p&gt;
&lt;p&gt;)&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt;DECLARE @sql varchar(8000), @TABLE_NAME sysname&lt;/p&gt;
&lt;p&gt;SET NOCOUNT ON&lt;/p&gt;
&lt;p&gt;SELECT @TABLE_NAME= MIN(TABLE_NAME)&lt;/p&gt;
&lt;p&gt;FROM INFORMATION_SCHEMA.Tables&lt;/p&gt;
&lt;p&gt;WHERE&lt;/p&gt;
&lt;p&gt;TABLE_TYPE= &amp;#39;BASE TABLE&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;sysdiagrams&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;Audit&amp;#39;&lt;/p&gt;
&lt;p&gt;WHILE @TABLE_NAME IS NOT NULL&lt;/p&gt;
&lt;p&gt; BEGIN&lt;/p&gt;
&lt;p&gt;EXEC(&amp;#39;IF OBJECT_ID (&amp;#39;&amp;#39;TR_AUDIT_&amp;#39; + @TABLE_NAME + &amp;#39;&amp;#39;&amp;#39;, &amp;#39;&amp;#39;TR&amp;#39;&amp;#39;) IS NOT NULL DROP TRIGGER TR_AUDIT_&amp;#39; + @TABLE_NAME+ &amp;#39;&amp;#39;)&lt;/p&gt;
&lt;p&gt;SELECT @sql =&lt;/p&gt;
&lt;p&gt;&amp;#39;&lt;/p&gt;
&lt;p&gt;create trigger TR_AUDIT_&amp;#39; + @TABLE_NAME + &amp;#39; on &amp;#39; + @TABLE_NAME+ &amp;#39; for insert, update, delete&lt;/p&gt;
&lt;p&gt;as&lt;/p&gt;
&lt;p&gt;declare @bit int ,&lt;/p&gt;
&lt;p&gt;@field int ,&lt;/p&gt;
&lt;p&gt;@maxfield int ,&lt;/p&gt;
&lt;p&gt;@char int ,&lt;/p&gt;
&lt;p&gt;@fieldname varchar(64) ,&lt;/p&gt;
&lt;p&gt;@TableName varchar(128) ,&lt;/p&gt;
&lt;p&gt;@PKCols varchar(1000) ,&lt;/p&gt;
&lt;p&gt;@sql varchar(8000),&lt;/p&gt;
&lt;p&gt;@UpdateDate varchar(21) ,&lt;/p&gt;
&lt;p&gt;@UserName varchar(128) ,&lt;/p&gt;
&lt;p&gt;@Type char(1) ,&lt;/p&gt;
&lt;p&gt;@PKFieldSelect varchar(1000),&lt;/p&gt;
&lt;p&gt;@PKValueSelect varchar(1000),&lt;/p&gt;
&lt;p&gt;@fieldsNames varchar(1000) ,&lt;/p&gt;
&lt;p&gt;@ValuesOld varchar(2000),&lt;/p&gt;
&lt;p&gt;@ValuesNew varchar(2000)&lt;/p&gt;
&lt;p&gt;select @TableName = &amp;#39;&amp;#39;&amp;#39; + @TABLE_NAME+ &amp;#39;&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;-- date and user&lt;/p&gt;
&lt;p&gt;select @UserName = system_user ,&lt;/p&gt;
&lt;p&gt;@UpdateDate = convert(varchar(8), getdate(), 112) + &amp;#39;&amp;#39; &amp;#39;&amp;#39; + convert(varchar(12), getdate(), 114)&lt;/p&gt;
&lt;p&gt;-- Action&lt;/p&gt;
&lt;p&gt;if exists (select * from inserted)&lt;/p&gt;
&lt;p&gt;if exists (select * from deleted)&lt;/p&gt;
&lt;p&gt;select @Type = &amp;#39;&amp;#39;U&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;select @Type = &amp;#39;&amp;#39;I&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;select @Type = &amp;#39;&amp;#39;D&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;-- get list of columns&lt;/p&gt;
&lt;p&gt;select * into #ins from inserted&lt;/p&gt;
&lt;p&gt;select * into #del from deleted&lt;/p&gt;
&lt;p&gt;-- Get primary key columns for full outer join&lt;/p&gt;
&lt;p&gt;select &lt;/p&gt;
&lt;p&gt;@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;/p&gt;
&lt;p&gt;@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;) + &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;/p&gt;
&lt;p&gt;@PKValueSelect = coalesce(@PKValueSelect+&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;) + &amp;#39;&amp;#39;convert(varchar(1000), 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;/p&gt;
&lt;p&gt;from INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,&lt;/p&gt;
&lt;p&gt;INFORMATION_SCHEMA.KEY_COLUMN_USAGE c&lt;/p&gt;
&lt;p&gt;where pk.TABLE_NAME = @TableName&lt;/p&gt;
&lt;p&gt;and CONSTRAINT_TYPE = &amp;#39;&amp;#39;PRIMARY KEY&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;and c.TABLE_NAME = pk.TABLE_NAME&lt;/p&gt;
&lt;p&gt;and c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME&lt;/p&gt;
&lt;p&gt;if @PKCols is null&lt;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;raiserror(&amp;#39;&amp;#39;no PK on table %s&amp;#39;&amp;#39;, 16, -1, @TableName)&lt;/p&gt;
&lt;p&gt;return&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;select @field = 0, @maxfield = max(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName &lt;/p&gt;
&lt;p&gt;while @field &amp;lt; @maxfield&lt;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;select @field = min(ORDINAL_POSITION),@fieldname = COLUMN_NAME &amp;nbsp;&lt;/p&gt;
&lt;p&gt;from INFORMATION_SCHEMA.COLUMNS &lt;/p&gt;
&lt;p&gt;where TABLE_NAME = @TableName and ORDINAL_POSITION &amp;gt; @field&lt;/p&gt;
&lt;p&gt;group by ORDINAL_POSITION,COLUMN_NAME&lt;/p&gt;
&lt;p&gt;order by ORDINAL_POSITION desc&lt;/p&gt;
&lt;p&gt;select @bit = (@field - 1 )% 8 + 1&lt;/p&gt;
&lt;p&gt;select @bit = power(2,@bit - 1)&lt;/p&gt;
&lt;p&gt;select @char = ((@field - 1) / 8) + 1&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;select &lt;/p&gt;
&lt;p&gt;@fieldsNames	= coalesce(@fieldsNames	+&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;, &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;/p&gt;
&lt;p&gt;@ValuesOld		= coalesce(@ValuesOld	+&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;, &amp;#39;&amp;#39;&amp;#39;&amp;#39;) + &amp;#39;&amp;#39;convert(varchar(2000), coalesce(d.&amp;#39;&amp;#39; + c.COLUMN_NAME + &amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;))&amp;#39;&amp;#39;,&lt;/p&gt;
&lt;p&gt;@ValuesNew		= coalesce(@ValuesNew	+&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;, &amp;#39;&amp;#39;&amp;#39;&amp;#39;) + &amp;#39;&amp;#39;convert(varchar(2000), coalesce(i.&amp;#39;&amp;#39; + c.COLUMN_NAME + &amp;#39;&amp;#39;,&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;&amp;#39;))&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;from &lt;/p&gt;
&lt;p&gt;INFORMATION_SCHEMA.COLUMNS c&lt;/p&gt;
&lt;p&gt;where c.TABLE_NAME = @TableName&lt;/p&gt;
&lt;p&gt;and c.COLUMN_NAME=@fieldname&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;select @sql = &amp;#39;&amp;#39;insert Audit (Type, TableName, PrimaryKeyField, PrimaryKeyValue, FieldName, OldValue, NewValue, UpdateDate, UserName)&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @PKFieldSelect&lt;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @PKValueSelect&lt;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @fieldsNames&lt;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @ValuesOld&lt;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @ValuesNew&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39; from #ins i full outer join #del d &amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;select @sql = @sql + @PKCols&lt;/p&gt;
&lt;p&gt;exec (@sql)&lt;/p&gt;
&lt;p&gt;&amp;#39;&lt;/p&gt;
&lt;p&gt;SELECT @sql&lt;/p&gt;
&lt;p&gt;EXEC(@sql)&lt;/p&gt;
&lt;p&gt;SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.Tables&lt;/p&gt;
&lt;p&gt;WHERE TABLE_NAME&amp;gt; @TABLE_NAME&lt;/p&gt;
&lt;p&gt;AND TABLE_TYPE= &amp;#39;BASE TABLE&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;sysdiagrams&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;Audit&amp;#39;&lt;/p&gt;
&lt;p&gt;END&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=182635" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#182632</link><pubDate>Wed, 29 Sep 2010 22:09:42 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:182632</guid><dc:creator>Alexander Cuellar Jimenez</dc:creator><description>&lt;p&gt;mejorando el script-&amp;gt;&lt;/p&gt;
&lt;p&gt;- Corregidos los errores del script&lt;/p&gt;
&lt;p&gt;- agrupando algunas consultas para extraer datos:&lt;/p&gt;
&lt;p&gt;USE MYDATABASE--Ponerle el nombre de la base de datos que va hacer auditada&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt;IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME= &amp;#39;Audit&amp;#39;)&lt;/p&gt;
&lt;p&gt;CREATE TABLE Audit&lt;/p&gt;
&lt;p&gt;(&lt;/p&gt;
&lt;p&gt;AuditID [int]IDENTITY(1,1) NOT NULL,&lt;/p&gt;
&lt;p&gt;Type char(1),&lt;/p&gt;
&lt;p&gt;TableName varchar(128),&lt;/p&gt;
&lt;p&gt;PrimaryKeyField varchar(1000),&lt;/p&gt;
&lt;p&gt;PrimaryKeyValue varchar(1000),&lt;/p&gt;
&lt;p&gt;FieldName varchar(128),&lt;/p&gt;
&lt;p&gt;OldValue varchar(1000),&lt;/p&gt;
&lt;p&gt;NewValue varchar(1000),&lt;/p&gt;
&lt;p&gt;UpdateDate datetime DEFAULT (GetDate()),&lt;/p&gt;
&lt;p&gt;UserName varchar(128)&lt;/p&gt;
&lt;p&gt;)&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt;DECLARE @sql varchar(8000), @TABLE_NAME sysname&lt;/p&gt;
&lt;p&gt;SET NOCOUNT ON&lt;/p&gt;
&lt;p&gt;SELECT @TABLE_NAME= MIN(TABLE_NAME)&lt;/p&gt;
&lt;p&gt;FROM INFORMATION_SCHEMA.Tables&lt;/p&gt;
&lt;p&gt;WHERE&lt;/p&gt;
&lt;p&gt;TABLE_TYPE= &amp;#39;BASE TABLE&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;sysdiagrams&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;Audit&amp;#39;&lt;/p&gt;
&lt;p&gt;WHILE @TABLE_NAME IS NOT NULL&lt;/p&gt;
&lt;p&gt; BEGIN&lt;/p&gt;
&lt;p&gt;EXEC(&amp;#39;IF OBJECT_ID (&amp;#39;&amp;#39;&amp;#39; + @TABLE_NAME+ &amp;#39;_ChangeTracking&amp;#39;&amp;#39;, &amp;#39;&amp;#39;TR&amp;#39;&amp;#39;) IS NOT NULL DROP TRIGGER &amp;#39; + @TABLE_NAME+ &amp;#39;_ChangeTracking&amp;#39;)&lt;/p&gt;
&lt;p&gt;SELECT @sql =&lt;/p&gt;
&lt;p&gt;&amp;#39;&lt;/p&gt;
&lt;p&gt;create trigger &amp;#39; + @TABLE_NAME+ &amp;#39;_ChangeTracking on &amp;#39; + @TABLE_NAME+ &amp;#39; for insert, update, delete&lt;/p&gt;
&lt;p&gt;as&lt;/p&gt;
&lt;p&gt;declare @bit int ,&lt;/p&gt;
&lt;p&gt;@field int ,&lt;/p&gt;
&lt;p&gt;@maxfield int ,&lt;/p&gt;
&lt;p&gt;@char int ,&lt;/p&gt;
&lt;p&gt;@fieldname varchar(128) ,&lt;/p&gt;
&lt;p&gt;@TableName varchar(128) ,&lt;/p&gt;
&lt;p&gt;@PKCols varchar(1000) ,&lt;/p&gt;
&lt;p&gt;@sql varchar(2000),&lt;/p&gt;
&lt;p&gt;@UpdateDate varchar(21) ,&lt;/p&gt;
&lt;p&gt;@UserName varchar(128) ,&lt;/p&gt;
&lt;p&gt;@Type char(1) ,&lt;/p&gt;
&lt;p&gt;@PKFieldSelect varchar(1000),&lt;/p&gt;
&lt;p&gt;@PKValueSelect varchar(1000)&lt;/p&gt;
&lt;p&gt;select @TableName = &amp;#39;&amp;#39;&amp;#39; + @TABLE_NAME+ &amp;#39;&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;-- date and user&lt;/p&gt;
&lt;p&gt;select @UserName = system_user ,&lt;/p&gt;
&lt;p&gt;@UpdateDate = convert(varchar(8), getdate(), 112) + &amp;#39;&amp;#39; &amp;#39;&amp;#39; + convert(varchar(12), getdate(), 114)&lt;/p&gt;
&lt;p&gt;-- Action&lt;/p&gt;
&lt;p&gt;if exists (select * from inserted)&lt;/p&gt;
&lt;p&gt;if exists (select * from deleted)&lt;/p&gt;
&lt;p&gt;select @Type = &amp;#39;&amp;#39;U&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;select @Type = &amp;#39;&amp;#39;I&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;else&lt;/p&gt;
&lt;p&gt;select @Type = &amp;#39;&amp;#39;D&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;-- get list of columns&lt;/p&gt;
&lt;p&gt;select * into #ins from inserted&lt;/p&gt;
&lt;p&gt;select * into #del from deleted&lt;/p&gt;
&lt;p&gt;-- Get primary key columns for full outer join&lt;/p&gt;
&lt;p&gt;select &lt;/p&gt;
&lt;p&gt;@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;/p&gt;
&lt;p&gt;-- Get primary key fields select for insert&lt;/p&gt;
&lt;p&gt;@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;/p&gt;
&lt;p&gt;@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;/p&gt;
&lt;p&gt;from INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ,&lt;/p&gt;
&lt;p&gt;INFORMATION_SCHEMA.KEY_COLUMN_USAGE c&lt;/p&gt;
&lt;p&gt;where pk.TABLE_NAME = @TableName&lt;/p&gt;
&lt;p&gt;and CONSTRAINT_TYPE = &amp;#39;&amp;#39;PRIMARY KEY&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;and c.TABLE_NAME = pk.TABLE_NAME&lt;/p&gt;
&lt;p&gt;and c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME&lt;/p&gt;
&lt;p&gt;if @PKCols is null&lt;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;raiserror(&amp;#39;&amp;#39;no PK on table %s&amp;#39;&amp;#39;, 16, -1, @TableName)&lt;/p&gt;
&lt;p&gt;return&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;select @field = 0, @maxfield = max(ORDINAL_POSITION) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName&lt;/p&gt;
&lt;p&gt;group by ORDINAL_POSITION,COLUMN_NAME&lt;/p&gt;
&lt;p&gt;order by ORDINAL_POSITION desc&lt;/p&gt;
&lt;p&gt;while @field &amp;lt; @maxfield&lt;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;select @bit = (@field - 1 )% 8 + 1&lt;/p&gt;
&lt;p&gt;select @bit = power(2,@bit - 1)&lt;/p&gt;
&lt;p&gt;select @char = ((@field - 1) / 8) + 1&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;begin&lt;/p&gt;
&lt;p&gt;select @sql = &amp;#39;&amp;#39;insert Audit (Type, TableName, PrimaryKeyField, PrimaryKeyValue, FieldName, OldValue, NewValue, UpdateDate, UserName)&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @PKFieldSelect&lt;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39;,&amp;#39;&amp;#39; + @PKValueSelect&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;select @sql = @sql + &amp;#39;&amp;#39; from #ins i full outer join #del d&amp;#39;&amp;#39;&lt;/p&gt;
&lt;p&gt;select @sql = @sql + @PKCols&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt;exec (@sql)&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;end&lt;/p&gt;
&lt;p&gt;&amp;#39;&lt;/p&gt;
&lt;p&gt;SELECT @sql&lt;/p&gt;
&lt;p&gt;EXEC(@sql)&lt;/p&gt;
&lt;p&gt;SELECT @TABLE_NAME= MIN(TABLE_NAME) FROM INFORMATION_SCHEMA.Tables&lt;/p&gt;
&lt;p&gt;WHERE TABLE_NAME&amp;gt; @TABLE_NAME&lt;/p&gt;
&lt;p&gt;AND TABLE_TYPE= &amp;#39;BASE TABLE&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;sysdiagrams&amp;#39;&lt;/p&gt;
&lt;p&gt;AND TABLE_NAME!= &amp;#39;Audit&amp;#39;&lt;/p&gt;
&lt;p&gt;END&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=182632" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#181597</link><pubDate>Tue, 07 Sep 2010 17:05:12 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:181597</guid><dc:creator>Piratova</dc:creator><description>&lt;p&gt;Por lo que he leido es muy bueno. Soy relativamente nueva en SQL &amp;nbsp;que debo hacer para ponerlo en mi bd. &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=181597" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#180585</link><pubDate>Thu, 12 Aug 2010 16:52:24 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:180585</guid><dc:creator>Fernando</dc:creator><description>&lt;p&gt;Mucha, gracias, excelente&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=180585" width="1" height="1"&gt;</description></item><item><title>re: LINQ TO SQL Performance</title><link>http://geeks.ms/blogs/ezavala/archive/2008/07/29/linq-to-sql-performance.aspx#180334</link><pubDate>Sat, 07 Aug 2010 02:19:11 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:180334</guid><dc:creator>German</dc:creator><description>&lt;p&gt;Seria bueno hacer un test pero con 300 millones de registros, creo que 10,000 no es mucho, actualmente donde trabajo contamos con esta cantidad de registros y los test ques estoy hacindo son lentos&lt;/p&gt;
&lt;p&gt;saludos&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=180334" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#180158</link><pubDate>Mon, 02 Aug 2010 17:56:54 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:180158</guid><dc:creator>cesar</dc:creator><description>&lt;p&gt;gracias me ahorro mucho trabajo el cres es excelente tu aporte me gustaria saber si tengo dos base de datos uno llamado SAS y el otro Auditoria y quiero enviar a AUDITORIA LOS CAMBIOS EN LAS tablas de produccion SAS que vario en el script gracias por tu tiempo &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=180158" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#179589</link><pubDate>Tue, 20 Jul 2010 02:36:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:179589</guid><dc:creator>ni14</dc:creator><description>&lt;p&gt;gente muy bueno y anda muy bien. pero queria saber si se puede modificar para que tome un usaurio logueado en una aplicacion de vb.net. ees para un trabajo de lafacu, y necesito auditar el usuario logueado y no el de la maquina.&lt;/p&gt;
&lt;p&gt;Gracias; Muy buen trabajo con este SCRIPT&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179589" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#179548</link><pubDate>Sun, 18 Jul 2010 23:03:07 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:179548</guid><dc:creator>Desperado</dc:creator><description>&lt;p&gt;Hola, por más que intento probarlo no compila, da errores no podrían subir una proyecto ya compilado??? gracias&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179548" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#179300</link><pubDate>Tue, 13 Jul 2010 15:08:55 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:179300</guid><dc:creator>rul</dc:creator><description>&lt;p&gt;me envia un mensaje de error y es el siguiente&lt;/p&gt;
&lt;p&gt;The query has exceeded the maximum number of result sets that can be displayed in the results grid. Only the first 100 result sets are displayed in the grid.&lt;/p&gt;
&lt;p&gt;gracias espero puedan ayudarme &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179300" width="1" height="1"&gt;</description></item><item><title>re: Agregar un simple Trigger para auditar tu base de datos SQL Server</title><link>http://geeks.ms/blogs/ezavala/archive/2008/03/11/agregar-un-simple-trigger-para-auditar-tu-base-de-datos-sql-server.aspx#178162</link><pubDate>Wed, 16 Jun 2010 16:22:10 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:178162</guid><dc:creator>David</dc:creator><description>&lt;p&gt;excelente!!! ESTE CODIGO ME CAYO ESPECTACULAR... no saben todo el trabajo que me ahorro.. &amp;nbsp;y lo mejor es que es totalmente dinamico, no importa que luego agregue una nueva columna, ya automaticamente tambien la audita. genial.. genial.. genial.. !!!!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=178162" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#177623</link><pubDate>Thu, 03 Jun 2010 16:04:34 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177623</guid><dc:creator>jaun alverez</dc:creator><description>&lt;p&gt;amigo ya probandolo esta muy bien en explorer pero en firefox parece que no funciona no se ve el progreso de carga&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=177623" width="1" height="1"&gt;</description></item><item><title>re: Fileupload con progress bar en Asp.Net 2.0</title><link>http://geeks.ms/blogs/ezavala/archive/2007/07/22/fileupload-con-progress-bar-en-asp-net-2-0.aspx#177620</link><pubDate>Thu, 03 Jun 2010 15:29:38 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177620</guid><dc:creator>juan alvarez</dc:creator><description>&lt;p&gt;muy buena aportacion amigo, gracias por compartir.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=177620" width="1" height="1"&gt;</description></item></channel></rss>
