<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1325619196114118447</id><updated>2014-10-06T23:08:39.667-05:00</updated><category term='VB.NET'/><category term='Firefox'/><category term='Microsoft'/><category term='CrystalReports'/><category term='JavaScript'/><category term='SQL'/><category term='Google'/><category term='Office'/><category term='.NET'/><category term='ASP.NET'/><category term='Excel'/><title type='text'>el blog de Carlos</title><subtitle type='html'>Un espacio de tecnologia</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/full'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/full'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/full?start-index=26&amp;max-results=25'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-1046194220424381743</id><published>2008-01-03T22:02:00.000-06:00</published><updated>2008-01-03T22:13:23.011-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Librerias JavaScript</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;em&gt;Porque la IU tambien importa.&lt;/em&gt;&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Aqui les dejo unas librerias Javascript (con AJAX) que recomiendo:&lt;/span&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5151468935586274962" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_ZG63zu0OTEs/R32xtAkUXpI/AAAAAAAAABM/IR7qES7ewVw/s400/Mochikit.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.prototypejs.org/"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;em&gt;Prototype&lt;/em&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="http://script.aculo.us/"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;em&gt;Scriptaculos&lt;/em&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="http://www.mochikit.com/"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;em&gt;Mochikit&lt;/em&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="http://extjs.com/"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;em&gt;Extjs&lt;/em&gt;&lt;/span&gt;&lt;/a&gt; &lt;a href="http://developer.yahoo.com/yui/"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;em&gt;YUI&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/1046194220424381743/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=1046194220424381743' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/1046194220424381743'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/1046194220424381743'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2008/01/librerias-javascript.html' title='Librerias JavaScript'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZG63zu0OTEs/R32xtAkUXpI/AAAAAAAAABM/IR7qES7ewVw/s72-c/Mochikit.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-5399469034770716293</id><published>2007-12-21T12:51:00.000-06:00</published><updated>2007-12-21T12:57:50.217-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CrystalReports'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Descarga directa en PDF de un reporte de CrystalReports en ASP.NET 2.0</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Cuando en una pagina quieres que el usuario al dar click en un boton descargue directamente un archivo PDF que sea el producto de la exportación de un reporte de CrystalReports este es el codigo que debes de usar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Dim Reporte As New MiReporte&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        'Se llena con información el reporte&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Dim oStream As New System.IO.MemoryStream&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        oStream = Reporte.ExportToStream _&lt;br /&gt;(Reporte.ExportOptions.ExportFormatType.PortableDocFormat)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Response.Clear()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Response.Buffer = True&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Response.ContentType = "application/pdf"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Response.AddHeader("Content-Disposition", "attachment;filename=" + "Archivo.pdf")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Response.BinaryWrite(oStream.ToArray())&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        Response.End()&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/5399469034770716293/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=5399469034770716293' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/5399469034770716293'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/5399469034770716293'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/12/descarga-directa-en-pdf-de-un-reporte.html' title='Descarga directa en PDF de un reporte de CrystalReports en ASP.NET 2.0'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-7307035981826192441</id><published>2007-05-07T17:38:00.000-05:00</published><updated>2007-05-07T17:46:20.805-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Debbug de Javascript en Visual Studio</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Visual Studio .NET 2005 por si es capaz de hacer debbug a codigo javascript, solo que por default Internet Explorer tiene bloqueda esta opcion, pero lo bueno es que es facil volver a admitirla.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Para hacer esto solo hay que seguir los siguientes pasos:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;En opciones de internet entrar a la pestaña de avanzados.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Aqui debe haber una opcion con algo parecido a deshabilitar debbuging del cliente, quitas esa selección y listo.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Ahora ya puedes colocar breakpoints en tu proyecto web, y podras hacer debbug como si fuera un codigo VB o C# normal&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/7307035981826192441/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=7307035981826192441' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/7307035981826192441'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/7307035981826192441'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/05/debbug-de-javascript-en-visual-studio.html' title='Debbug de Javascript en Visual Studio'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-4673203004424634842</id><published>2007-04-20T17:01:00.000-05:00</published><updated>2007-04-20T17:55:58.261-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Triggers DML con eventos multiples en SQL Server 2005</title><content type='html'>&lt;span style=";font-family:arial;font-size:10;"  &gt;&lt;span style="font-size:85%;"&gt;En este articulo se describe una forma en que se puede tomar en cuenta para manejar más de un solo evento en los triggers DML&lt;br /&gt;&lt;br /&gt;La sintaxis para crear triggers DML es la siguiente&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-size:78%;" &gt;    CREATE TRIGGER nombre_trigger&lt;br /&gt; ON { tabla | vista }&lt;br /&gt; { FOR | AFTER | INSTEAD OF }&lt;br /&gt; { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }&lt;br /&gt; [ WITH APPEND ]&lt;br /&gt; [ NOT FOR REPLICATION ]&lt;br /&gt; AS { sentencia_sql  [ ; ] [ ,...n ] | EXTERNAL NAME &lt;/span&gt;&lt;especificador&gt;&lt;span style="color: rgb(102, 0, 0);font-size:78%;" &gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pero...que pasa si no quieres hacer un trigger para cada evento, y en vez deseas hacer un solo que responda a cualuqier evento, en ese caso esta es una buena opcion&lt;br /&gt;&lt;br /&gt;Primero que nada hay que saber que en los triggers se generan tablas temporales, una llama INSERTED y otra DELETED&lt;br /&gt;&lt;br /&gt;Cuando se inserta un registro y un trigger responde a ese evento entonces se llena la tabla INSERTED, en caso de eliminar un registro se llena la tabla DELETED, mas sin embargo no hay una tabla UPDATED en vez se llenan las dos tablas son la información de lo que se inserta y lo que se borra&lt;br /&gt;&lt;br /&gt;Esto ultimo es la base para lo que a continuación se va a realizar, la parte importe es hacer condiciones las cuales distingan cual fue la o las tablas que se llenaron, lo cual con un SELECT COUNT(*) se puede realizar, esto resulta algo asi:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;CREATE TRIGGER nombreTrigger ON nombreTabla&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;FOR INSERT, UPDATE, DELETE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;IF (SELECT COUNT(*) FROM INSERTED)  &gt; 0 AND (SELECT COUNT(*) FROM DELETED)  &gt; 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;        'Sentencia SQL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;        REURN &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    END&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;IF (SELECT COUNT(*) FROM INSERTED)  &gt; 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;        'Sentencia SQL    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;IF (SELECT COUNT(*) FROM DELETED)  &gt; 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;        'Sentencia SQL    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    END&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la primera parte se hace una condicion para saber si ambas tablas estan llenas lo cual indica un UPDATE, si es cierto sale del triger de lo contrario continua la seleccion.En la segunda y tercera parte se distingue que tabla por individual esta llena. En este punto ya podemos saber que evento disparo el trigger y podemos actuar debidamente&lt;br /&gt;&lt;br /&gt;Gracias a el Rola por su colaboración en este articulo&lt;/especificador&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/4673203004424634842/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=4673203004424634842' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/4673203004424634842'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/4673203004424634842'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/04/triggers-dml-sql-server-2005.html' title='Triggers DML con eventos multiples en SQL Server 2005'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-5566589966086205324</id><published>2007-04-04T18:05:00.000-05:00</published><updated>2007-04-04T18:57:36.097-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Master Page Anidadas en ASP.NET</title><content type='html'>&lt;span style="font-family: arial;font-family:arial;font-size:85%;"  &gt;Las Master Page en ASP.NET te permiten crear una disposicion de controles consiste. Una sola Master Page define el look &amp; fell y el comportamiento estandar para un conunto de paginas&lt;br /&gt;&lt;br /&gt;Las Master Page son una poderosa herramienta al momento de crear un sito, y su habilidad de anidarse es aun mejor, puedes crear una jerarquia completa lo cual facilita mucho la tarea de tener una consistencia entre las paginas&lt;br /&gt;&lt;br /&gt;El unico detalle que tienen es que al momento de anidar Master Page solo se puede hacer es Vista-Fuente y no permite la Vista-Diseño&lt;br /&gt;&lt;br /&gt;Este es un pequeño ejemplo de como anidar un par de Master Page; &lt;span style="font-weight: bold;"&gt;asi seria la Master Page Padre&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center; font-family: arial;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;a href="http://img215.imageshack.us/my.php?image=principalch2.png" target="_blank"&gt;&lt;img src="http://img215.imageshack.us/img215/5562/principalch2.th.png" alt="Free Image Hosting at www.ImageShack.us" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: arial;font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;pre style="font-family: arial;font-family:arial;" class="code" id="ctl00_LibFrame_ctl07VisualBasic" space="preserve" &gt;&lt;span style="font-family: arial; font-weight: bold;font-size:85%;" &gt;Y asi queda la Master Page hija:&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;asp:content id="&lt;span" color="maroon"&gt;&lt;/asp:content&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="text-align: center; font-family: arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://img295.imageshack.us/my.php?image=hijahs6.png" target="_blank"&gt;&lt;img src="http://img295.imageshack.us/img295/7639/hijahs6.th.png" alt="Free Image Hosting at www.ImageShack.us" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/5566589966086205324/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=5566589966086205324' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/5566589966086205324'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/5566589966086205324'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/04/master-page-anidadas-en-aspnet.html' title='Master Page Anidadas en ASP.NET'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-976637944630331006</id><published>2007-03-30T10:58:00.000-06:00</published><updated>2007-03-30T11:52:49.167-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>CLR Triggers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZG63zu0OTEs/Rg1OTMjf8II/AAAAAAAAAAc/oN3teFP_WGI/s1600-h/2598Image.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 263px; height: 336px;" src="http://3.bp.blogspot.com/_ZG63zu0OTEs/Rg1OTMjf8II/AAAAAAAAAAc/oN3teFP_WGI/s400/2598Image.jpg" alt="" id="BLOGGER_PHOTO_ID_5047776849046794370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Todos en algun momento hemos tenido que hacer algun trigger en alguna tabla, pero que pasa si este trigger requiere de mucho procesamiento, SQL no esta diseñado para hacer mucho procesamiento, entonces la opcion es crear un Trigger CLR, este aparta de que se escribe con lenguaje .NET puede optimizar el uso de recursos&lt;br /&gt;&lt;br /&gt;Cuando se vaya a tomar la decision de hacer un Trigger T-Sql o CLR se debe pensar primero en la complejidad del mismo&lt;br /&gt;&lt;br /&gt;Una vez que tomamos la decision de que nuestro trigger empezemos a checar la sintaxis para crear un Trigger T-Sql&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;CREATE TRIGGER &lt;span style="font-style: italic;"&gt;nombre&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;ON  &lt;span style="font-style: italic;"&gt;tabla&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;FOR &lt;span style="font-style: italic;"&gt;evento&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;AS &lt;span style="font-style: italic;"&gt;sentencia_sql&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;Para poder crear nuestro Trigger CLR es necesario tener una sintaxis parecida pero solo con una pequela diferencia donde se deberia especificar la sentancia sql vamos a usar EXTERNAL NAME y la direcion de nuestro metodo; con lo cual nuestra sintaxis quedarioa así:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;CREATE TRIGGER &lt;span style="font-style: italic;"&gt;nombre &lt;/span&gt;ON  &lt;span style="font-style: italic;"&gt;tabla &lt;/span&gt;FOR &lt;span style="font-style: italic;"&gt;evento &lt;/span&gt;AS EXTERNAL NAME ensamblado.[namespace.clase].metodo&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;donde en el apartado entre corchetes puede agregarse una cantidad n de namespaces&lt;br /&gt;&lt;br /&gt;El punto que hay que ver a continuacion es el como crear el metodo que sera el Trigger, el cual puede quedar asi&lt;br /&gt;&lt;br /&gt;Primero, la importacion de namespaces que vamos a utilizar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Imports System&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Imports System.Data.SqlClient&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Imports System.Data.SqlTypes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Imports Microsoft.SqlServer.Server&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Imports System.Transactions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Despues hay que crear una clase donde poner el Trigger; hecho esto hay que declarar que el metodo que estamos a punto de hacer es un Trigger&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Public Class Triggers&lt;br /&gt;&lt;microsoft.sqlserver.server.sqltrigger(name:="trig_insertvalidator",&gt; _&lt;/microsoft.sqlserver.server.sqltrigger(name:="trig_insertvalidator",&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;microsoft.sqlserver.server.sqltrigger(name:="trig_insertvalidator",&gt;&lt;/microsoft.sqlserver.server.sqltrigger(name:="trig_insertvalidator",&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Public Shared Sub  trig ()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Despues vamos a utilizar un sqlConnection el cual va a utilizar una conexion contextual&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Using connection As New SqlConnection("context connection=true")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hacemos la logica de negocios que tengamos que hacer y compilamos; el metodo debera de quedar algo asi&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Imports System&lt;br /&gt;Imports System.Data.SqlClient&lt;br /&gt;Imports System.Data.SqlTypes&lt;br /&gt;Imports Microsoft.SqlServer.Server&lt;br /&gt;Imports System.Transactions&lt;br /&gt;&lt;br /&gt;Partial Public Class Triggers&lt;br /&gt;&lt;microsoft.sqlserver.server.sqltrigger(name:="trig_insertvalidator",&gt; _&lt;br /&gt;Public Shared Sub  trig()&lt;br /&gt;  Using connection As New SqlConnection("context connection=true")&lt;br /&gt;&lt;br /&gt;      Dim command As SqlCommand&lt;br /&gt;      Dim reader As SqlDataReader&lt;br /&gt;      Dim value As Integer&lt;br /&gt;&lt;br /&gt;      connection.Open()&lt;br /&gt;&lt;br /&gt;      command = New SqlCommand("SELECT * FROM INSERTED", connection)&lt;br /&gt;      reader = command.ExecuteReader()&lt;br /&gt;      reader.Read()&lt;br /&gt;      value = CType(reader(0), Integer)&lt;br /&gt;      reader.Close()&lt;br /&gt;&lt;br /&gt;      If value = 1 Then&lt;br /&gt;&lt;br /&gt;          Try&lt;br /&gt;&lt;br /&gt;              Dim trans As Transaction&lt;br /&gt;              trans = Transaction.Current&lt;br /&gt;              trans.Rollback()&lt;br /&gt;&lt;br /&gt;          Catch ex As SqlException&lt;br /&gt;&lt;br /&gt;              ' Catch the exception.                 &lt;br /&gt;          End Try&lt;br /&gt;      Else&lt;br /&gt;&lt;br /&gt;      End If&lt;br /&gt;&lt;br /&gt;      connection.Close()&lt;br /&gt;  End Using&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;/microsoft.sqlserver.server.sqltrigger(name:="trig_insertvalidator",&gt;&lt;/blockquote&gt;Ya que tenemos nuestro propio ensamblado solo es cuestion se subirlo a SQL, hay que recordar que esta es una función nueva de SQL Server 2005, es cuestion de elegir del browser la base de datos deseada, abrir la seccion de programabilidad y ahi a la seccion de ensamblados; una vez ya localizada esta seccion es cuestion de dar boton derecho con el mouse y elegir nuevo ensamblado&lt;br /&gt;&lt;br /&gt;Una vez abierta abierta la ventana para agregar un nuevo ensamblado elegimos el nuestro y damos click en aceptar, una vez hecho esto creamos un nuevo query, con la sintaxis que mencione al principio&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;CREATE TRIGGER &lt;span style="font-style: italic;"&gt;nombre &lt;/span&gt;ON  &lt;span style="font-style: italic;"&gt;tabla &lt;/span&gt;FOR &lt;span style="font-style: italic;"&gt;evento &lt;/span&gt;AS EXTERNAL NAME ensamblado.[namespace.clase].metodo&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Ejecutamos y ya tenemos nuestro Trigger CLR.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Por ultimo vale la pena mencionar que aqui tambein aplican las reglas de las diferencias entre Triggers DDL y DML&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/976637944630331006/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=976637944630331006' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/976637944630331006'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/976637944630331006'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/03/clr-triggers.html' title='CLR Triggers'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZG63zu0OTEs/Rg1OTMjf8II/AAAAAAAAAAc/oN3teFP_WGI/s72-c/2598Image.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-3633945641186611581</id><published>2007-03-30T09:38:00.000-06:00</published><updated>2007-03-30T09:53:26.180-06:00</updated><title type='text'>Information Schema SQL</title><content type='html'>&lt;span style="font-family: arial;font-size:85%;" &gt;Las vistas de esquema de información de SQL son muy utiles en caso de que quieren tener algun registro o control sobre una base de datos. Estas son vistas "ocultas" de las cuales puedes sacar informacion&lt;br /&gt;&lt;br /&gt;En estas vistas hay dos tablas que por lo pronto voy a mencionar: COLUMNS y TABLES, de estas igual como su nombre lo sugiere puedes sacr informacion de las columnas y de las tablas de una base de datos&lt;br /&gt;&lt;br /&gt;El acceso a estas vista es algo mas o menos asi:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center; font-family: arial;"&gt;&lt;span style="font-size:85%;"&gt;Select * FROM AdventureWorks.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Product';&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Este es un pequeño ejemplo de como podria quedar un query para sacar un reporte de una base de datos a partir de estas vistas&lt;br /&gt;&lt;br /&gt;SELECT                 INFORMATION_SCHEMA.COLUMNS.TABLE_NAME,&lt;br /&gt;                             INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME,&lt;br /&gt;                             INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE,&lt;br /&gt;                             INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH,&lt;br /&gt;                             INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION,&lt;br /&gt;                             INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE,&lt;br /&gt;                             INFORMATION_SCHEMA.COLUMNS.DATA_TYPE&lt;br /&gt;&lt;br /&gt;FROM                    INFORMATION_SCHEMA.COLUMNS&lt;br /&gt;&lt;br /&gt;WHERE                 (NOT (INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA = 'db_owner'))   AND&lt;br /&gt;                             (NOT (INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = N'sysdiagrams')) AND&lt;br /&gt;                             (NOT (INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = N'dtproperties'))&lt;br /&gt;&lt;br /&gt;ORDER BY            INFORMATION_SCHEMA.COLUMNS.TABLE_NAME&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;En el siguiente vinculo hay mas información &lt;/span&gt;&lt;a style="color: rgb(51, 0, 0);" href="http://msdn2.microsoft.com/es-es/library/ms186778.aspx"&gt;http://msdn2.microsoft.com/es-es/library/ms186778.aspx&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/3633945641186611581/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=3633945641186611581' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/3633945641186611581'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/3633945641186611581'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/03/information-schema-sql.html' title='Information Schema SQL'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-8275225631535204567</id><published>2007-03-30T09:15:00.000-06:00</published><updated>2007-03-30T09:22:54.184-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Interoperabilidad Office</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Para poder tener un efecto de interoperabilidad de Microsoft Office 2003 desde un lenguaje .NET es necesario contar con los ensamblados necesarios para logarlo, estos se puden descargar desde el siguiente link&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a style="color: rgb(51, 0, 0);" href="http://support.microsoft.com/kb/897646"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;http://support.microsoft.com/kb/897646&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;En los cuales se encuentan  entre otros los siguientes namespaces:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;  Microsoft.Office.Interop.Outlook&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;  Microsoft.Office.Interop.PowerPoint&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;  Microsoft.Office.Interop.Word&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Estos son muy faciles de utilizar, solo hay que recordar que por mas parecidos que sean entre si no quiere deci que sean exactamente iguales; y que hay que hacer las referencias correspondientes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/8275225631535204567/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=8275225631535204567' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/8275225631535204567'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/8275225631535204567'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/03/interoperabilidad-office.html' title='Interoperabilidad Office'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-7131822218288132663</id><published>2007-03-23T15:41:00.000-06:00</published><updated>2007-03-29T14:12:38.447-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>PopUp ASP.NET</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;Has querido usar un InputBox en ASP.NET, o simplemente quieres abrir una ventana extra del navegador y quieres que te regrese un resultado? esta es la solución&lt;br /&gt;&lt;br /&gt;Primero que nada necesitas tener dos paginas una principal y la quieres que se abra&lt;br /&gt;&lt;br /&gt;En la primera necesitas tener una funcion que abra la segunda la cual puede ser algo asi:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;window.open("../../Pagina.aspx","MiPagina","width=370,height=450")&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Para poder insertar en tu pagina esta funcion javascript se introduce dentro de una etiqueta &lt;/span&gt;&lt;script&gt;&lt;/script&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;recuerda que el lenguaje es javascript y el tipo: texto/javascript&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Donde los parametos son 3: la direccion de la pagina, el nombre y las caracteristicas que quieras darle a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;la venta, separados por comas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;La sintaxis de esto hasta ahora quedaria asi:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;script language="javascript" type="text/javascript"&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            function Abrir(){&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;            window.open("../../Pagina.aspx","MiPagina","width=370,height=450")&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Hasta este punto tu pagina principal ya puede abrir la otra solo necesitas asociarla con algun control: esto se hace del lado del server con la Propiedad Attributes, la sintaxis quedaria algo asi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 51, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Boton.Attributes.Add("onClick","javascript:Abrir()")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(0, 51, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Esto puedo hacerlo en cualquier momento, pero en este caso convendria hacerlo en el evento Load de la pagina (mas adelante se vera porque se podria realizar en algun otro momento)&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;font-size:85%;"  &gt;Ahora ya tenemos un boton en nuestra pagina principal que puede abrir la segunda, solo falta que la segunda nos arroje un resultado, hay varias maneras de hacer esto pero por lo pronto les mencionare algunas opciones&lt;br /&gt;&lt;br /&gt;El usuario puede interarctuar con la segunda pagina y darle valor a variables accesibles a la primera pagina como pueden ser variables de sesion&lt;br /&gt;&lt;br /&gt;Se tiene que realizar un proceso como el anterior para la segunda ventana pero copn unas diferencias, tambien hay que crear una funcion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;script language="javascript" type="text/javascript"&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    function Cerrar(){&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;                    window.opener.Resultado();&lt;br /&gt;              window.close();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(51, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Esta funcion ejecuta el metodo resultado de la pagina principal desde la segunda, ya que el objeto "opener" es la ventana que abrio la pagina actual.Ademas esta funcion cierra la ventana actual con el metodo Close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Otra cosa que puede hacer es hacer lo que el metodo Resultado() haria en la pagina principal directamente desde la segunda utilizando el objeto "opener".Hay que recordar que se debe asignar esta funcion con algun evento del lado del cliente como seria el click de un boton, agregando desde el lado del server con sus respectivos atributos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;'Tambien se pueden controlar otros eventos para ejecutar la funcion solo hay que comprobar que sean javascript&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Una ves hecho esto  ya tenemos una pagina principal que abre una segunda pagina estilo  PopUp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Otra cosa que se puede hacer es el uso de funciones javascript con parametros, esto podria servir para por ejemplo que la segunda pagina varie segun la principal, digamos que escribe algo en la pagina principal y desea que esto aparesca en la segunda pagina, entonces los parametros pueden ser bastante utiles, la sintaxis es la misma que si fuera codigo del lado del server, solo recuerda que lso valores string van entre comillas simples. En este caso nos convendria agregar el atributo al control en algun otro momento como por ejemplo cuando ya tengamos el texto en la pagina principal que queremos mostrar en la segunda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Podria ocuparse asi:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(51, 0, 0);"&gt;&lt;script language="javascript" type="text/javascript"&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        function Abrir(Texto){&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;        window.open("../../Pagina.aspx?Nombre='" + Texto + "'","MiPagina","width=370,height=450")&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(51, 0, 0);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;Asi agregamos un parametro al abrir la segunda pagina el cual puede recuperarse de la siguiente forma:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 51, 0);font-family:arial;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;variable = Request.QueryStrings("Nombre")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Y con esto podriamos tomar las acciones necesarias para usar ese texto&lt;/span&gt;&lt;span style="color: rgb(0, 51, 0);font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 51, 0);font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/7131822218288132663'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/7131822218288132663'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/03/popup-aspnet.html' title='PopUp ASP.NET'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-1798099684042655790</id><published>2007-03-23T15:10:00.000-06:00</published><updated>2007-03-23T15:39:46.203-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Crear un PostBack en ASP.NET con JavaScript</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;La funcion javascript que se utiliza es el __doPostBack cuya sintaxis es mas o menos asi:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZG63zu0OTEs/RgRI5VDw8JI/AAAAAAAAAAU/cAmA2IGuxko/s1600-h/dopost.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 415px; height: 251px;" src="http://4.bp.blogspot.com/_ZG63zu0OTEs/RgRI5VDw8JI/AAAAAAAAAAU/cAmA2IGuxko/s400/dopost.JPG" alt="" id="BLOGGER_PHOTO_ID_5045237632304476306" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Para que se pueda utilizar no se necesita que la metas junto con tu pagina ya que ASP autogenera esta&lt;br /&gt;fucion con cualquier sitio que estes realizando, en realidad solo existen 2 controles ASP que por si solos&lt;br /&gt;pueden realizar un postback: el button y el imagebutton todos los demas controles necesitan esta funcion&lt;br /&gt;para generar un post back&lt;br /&gt;&lt;br /&gt;A continuacion muestro un ejemplo de esto&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ZG63zu0OTEs/RgREBlDw8II/AAAAAAAAAAM/kdGVNbXX4Qs/s1600-h/Grid+Post+Back.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_ZG63zu0OTEs/RgREBlDw8II/AAAAAAAAAAM/kdGVNbXX4Qs/s400/Grid+Post+Back.JPG" alt="" id="BLOGGER_PHOTO_ID_5045232276480258178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Ahora; ya que sabemos esto podemos utilizar esta funcion para generar un postback, con la sigueinte sintaxis&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;__doPostBack(' NombreControl ', ' Atributos del evento ' )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Donde el nombre del control es el nombre del control el cual queremos que genere el postback y los&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;atributos del evento por lo general se dejan vacios&lt;br /&gt;&lt;br /&gt;En articulos proximos se podra observar el uso de esta funcion&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/1798099684042655790/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=1798099684042655790' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/1798099684042655790'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/1798099684042655790'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2007/03/crear-un-postback-en-aspnet-con.html' title='Crear un PostBack en ASP.NET con JavaScript'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZG63zu0OTEs/RgRI5VDw8JI/AAAAAAAAAAU/cAmA2IGuxko/s72-c/dopost.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-2679971224649137200</id><published>2006-11-28T16:31:00.000-06:00</published><updated>2006-11-28T16:33:46.631-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Imprimir Hojas de Calculo desde .NET</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;Imports Microsoft.Office.Interop.Excel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Public Class ImprimirExcel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    Shared Function Imprimir(ByVal Direccion As String) As Boolean&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;        Try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            Dim xlsApp As New Microsoft.Office.Interop.Excel.Application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            xlsApp.Workbooks.Open(Direccion)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            Dim IE As System.Collections.IEnumerator&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            IE = xlsApp.Workbooks.GetEnumerator()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            While IE.MoveNext&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;                CType(IE.Current, Microsoft.Office.Interop.Excel.Workbook).PrintOut()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            End While&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            Return True&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;        Catch ex As Exception&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            Return False&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;        End Try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    End Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;End Class &lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/2679971224649137200/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=2679971224649137200' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/2679971224649137200'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/2679971224649137200'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/11/imprimir-hojas-de-calculo-desde-net.html' title='Imprimir Hojas de Calculo desde .NET'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-5529915491352638527</id><published>2006-11-28T16:29:00.001-06:00</published><updated>2006-11-28T16:29:55.076-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>IEnumerator (Interfaz)</title><content type='html'>&lt;p style="font-family: verdana;"&gt; &lt;span style="font-size:85%;"&gt;&lt;b&gt;IEnumerator&lt;/b&gt; es la interfaz base para todos los enumeradores no genéricos.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Para obtener la versión genérica de esta interfaz, vea &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl09|ctl00_LibFrame_ctl10',this);" href="http://msdn2.microsoft.com/es-es/library/78dfe2yb%28VS.80%29.aspx"&gt;IEnumerator&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;La instrucción &lt;b&gt;foreach&lt;/b&gt; del lenguaje C# (&lt;b&gt;for each&lt;/b&gt; en Visual Basic) oculta la complejidad de los enumeradores.  Por tanto, se recomienda el uso de &lt;b&gt;foreach&lt;/b&gt;&lt;/span&gt; en lugar de manipular directamente el enumerador.&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Los enumeradores se pueden utilizar para leer los datos de la colección, pero no para modificar la colección subyacente.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Inicialmente, el enumerador se coloca delante del primer elemento de la colección. El método &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl09|ctl00_LibFrame_ctl11',this);" href="http://msdn2.microsoft.com/es-es/library/system.collections.ienumerator.reset%28VS.80%29.aspx"&gt;Reset&lt;/a&gt; también devuelve el enumerador a esta posición. En esta posición, una llamada a la propiedad &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl09|ctl00_LibFrame_ctl12',this);" href="http://msdn2.microsoft.com/es-es/library/system.collections.ienumerator.current%28VS.80%29.aspx"&gt;Current&lt;/a&gt; produce una excepción. Por lo tanto, se debe llamar al método &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl09|ctl00_LibFrame_ctl13',this);" href="http://msdn2.microsoft.com/es-es/library/system.collections.ienumerator.movenext%28VS.80%29.aspx"&gt;MoveNext&lt;/a&gt; para desplazar el enumerador hasta el primer elemento de la colección antes de leer el valor de &lt;b&gt;Current&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt; &lt;span style="font-size:85%;"&gt;&lt;b&gt;Current&lt;/b&gt; devuelve el mismo objeto hasta que se llama a &lt;b&gt;MoveNext&lt;/b&gt; o a &lt;b&gt;Reset&lt;/b&gt;. &lt;b&gt;MoveNext&lt;/b&gt; establece el valor de &lt;b&gt;Current&lt;/b&gt; en el siguiente elemento.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Si &lt;b&gt;MoveNext&lt;/b&gt; pasa el final de la colección, el enumerador se coloca detrás del último elemento de la colección y &lt;b&gt;MoveNext&lt;/b&gt; devuelve el valor &lt;b&gt;false&lt;/b&gt;. Cuando el enumerador está en esta posición, las llamadas posteriores al método &lt;b&gt;MoveNext&lt;/b&gt; también devuelven el valor &lt;b&gt;false&lt;/b&gt;. Si la última llamada al método &lt;b&gt;MoveNext&lt;/b&gt; ha devuelto &lt;b&gt;false&lt;/b&gt; y se realiza una llamada a la propiedad &lt;b&gt;Current&lt;/b&gt;, se produce una excepción. Para volver a establecer el valor de &lt;b&gt;Current&lt;/b&gt; en el primer elemento de la colección, se puede llamar primero al método &lt;b&gt;Reset&lt;/b&gt; y después al método &lt;b&gt;MoveNext&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Mientras no se modifique la colección, el enumerador continúa siendo válido. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida definitivamente y la siguiente llamada a &lt;b&gt;MoveNext&lt;/b&gt; o a &lt;b&gt;Reset&lt;/b&gt; produce una excepción &lt;a onclick="javascript:Track('ctl00_LibFrame_ctl09|ctl00_LibFrame_ctl14',this);" href="http://msdn2.microsoft.com/es-es/library/system.invalidoperationexception%28VS.80%29.aspx"&gt;InvalidOperationException&lt;/a&gt;. Si la colección se modifica entre &lt;b&gt;MoveNext&lt;/b&gt; y &lt;b&gt;Current&lt;/b&gt;, &lt;b&gt;Current&lt;/b&gt; devuelve el elemento en el que está establecido, aunque el enumerador ya haya quedado invalidado.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;El enumerador no tiene acceso exclusivo a la colección; por lo tanto, la enumeración a través de una colección es un procedimiento que, en esencia, no es seguro para la ejecución de subprocesos. Aunque una colección esté sincronizada, otros subprocesos pueden seguir modificándola, por lo que el enumerador produce una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones debidas a cambios efectuados por otros subprocesos.&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/5529915491352638527/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=5529915491352638527' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/5529915491352638527'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/5529915491352638527'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/11/ienumerator-interfaz.html' title='IEnumerator (Interfaz)'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-2189948934855501847</id><published>2006-11-17T17:40:00.000-06:00</published><updated>2006-11-17T17:41:44.012-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Reportes .NET con Crystal Reports</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;Por Mauro Sant'Anna&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Visual Studio .NET incluye Crystal Reports como un mecanismo "oficial" de creación de reportes. Crystal Reports es un producto muy desarrollado y complejo para la creación de reportes, y cuenta con una infinidad de opciones. En este artículo, nos vamos a concentrar en crear reportes relativamente sencillos, pero mostrando los detalles específicos de la versión .NET, tanto en aplicaciones WinForms como en aplicaciones WebForms (ASP.NET). Este artículo considera que usted ya posee alguna familiaridad con Visual Studio .NET y también con ADO.NET.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Crear un reporte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Independientemente de cómo se hará la presentación, el reporte se define en un archivo ".RPT", que forma parte de su proyecto. Ese archivo especifica el modo en que se hará la presentación del reporte, pero no incluye los datos propiamente dichos. Los datos se definirán en el tiempo de ejecución.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Crystal Reports se basa en un concepto muy común de la definición de reportes: los reportes se componen de "secciones", y cada sección es un espacio horizontal en la página. Existen diversos tipos de secciones, por ejemplo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Encabezado del reporte, aparece en la primera página.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Encabezado de página, aparece en la parte superior de todas las páginas.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Detalle: lo más importante. En el tiempo de ejecución, se genera una de estas secciones para cada línea (registro) en la base de datos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Pie de página, aparece en la parte inferior de todas las páginas.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Pie de reporte, aparece al final del reporte.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;En un principio, todos los reportes presentan estas cinco secciones. Otras secciones son opcionales, como por ejemplo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Encabezado de grupo, aparece antes de un grupo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    * Pie de grupo, aparece al final del grupo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Se podrá omitir una o más secciones, en caso de que no sean necesarias.&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/2189948934855501847/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=2189948934855501847' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/2189948934855501847'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/2189948934855501847'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/11/reportes-net-con-crystal-reports.html' title='Reportes .NET con Crystal Reports'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-5562006844989163676</id><published>2006-11-14T18:37:00.000-06:00</published><updated>2006-11-28T16:42:49.199-06:00</updated><title type='text'>dce</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1839/161818749525649/1600/carlos.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/1839/161818749525649/400/carlos.jpg" alt="" border="0" /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/5562006844989163676/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=5562006844989163676' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/5562006844989163676'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/5562006844989163676'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/11/blog-post.html' title='dce'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-1730533690728588482</id><published>2006-10-25T14:46:00.000-05:00</published><updated>2006-10-25T15:14:41.759-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox 2.0 listo para descarga</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;La Fundación Mozilla lanza la nueva versión del navegador Firefox 2.0, apenas una semana después de que Microsoft pusiese a disposición de los usuarios el Internet Explorer 7.&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: verdana;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1839/161818749525649/1600/firefox_logo.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/1839/161818749525649/320/firefox_logo.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;table  align="left" border="0" cellpadding="3" cellspacing="0" style="font-family:verdana;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;     &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Pascal Chevrel, secretario general de Mozilla Europe, ha explicado en una entrevista digital con los lectores de ELPAIS.es que, además de las nuevas mejoras, “lo más importante es mejorar la experiencia online del internauta”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; Entre las mejoras que incluye el navegador, se encuentran: corrector ortográfico integrado, gestión de sesiones, tecnología antifraude &lt;/span&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;a style="font-family: verdana;" href="http://es.wikipedia.org/wiki/Phishing"&gt;(el antiphisig)&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; a las ya existentes contra programas espias, virus y ventanas emergentes.etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; “Somos mucho mas transparente a nivel de comunicación (también documentamos los fallos descubiertos por nuestros propios equipos por ejemplo) y por otra parte corregimos los fallos mucho más rápidamente que nuestros competidores, por lo tanto el tiempo de inseguridad antes de que saquemos un parche está muy reducido”, declaró el secretario general.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; El navegador, software libre, ha sido desarrollada por más de un millón de personas que participan de alguna manera en las mejoras de este 'software', bien a través de su propio trabajo o bien mediante sugerencias a partir de las versiones beta, según la Fundación.&lt;/span&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;b style="font-family: verdana;"&gt;Video promocional del navegador Firefox&lt;/b&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;center&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xrB8JzMK7dA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/xrB8JzMK7dA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/object&gt;&lt;/center&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; Un dolor de cabeza para Internet Explorer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; El Firefox, basado en el histórico Netscape, se ha convertido en pocos años en la alternativa de Internet Explorer, aunque Microsoft ha contraatacado con sus mismas armas. Una de las características más populares del buscador, que es la navegación por pestañas, viene incluida en el nuevo Inernet Explorer 7, que ha salido a luz despues de 5 años sin mejoras.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; Algo que llama poderosamente la atención es que mientras que IE 7 está disponible de momento sólo en inglés, Firefox se podrá asomar a las pantallas de los ordenadores de todo el mundo en 37 idiomas, entre ellos el español, el catalán o el vasco.&lt;/span&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; La diferencia fundamental entre Firefox y Explorer, según Chevrel, radica en que “tenemos decenas de miles de contribuidores en el mundo que participan a su mejora”, lo que permite que el nuevo navegador de Mozilla salga simultáneamente en 37 idiomas (entre ellos el catalán y el euskera). “No tendréis que esperar 5 años para ver Firefox 3”, ha señalado Chevrel, en referencia a la tardanza de Microsoft en sacar su última versión del navegador Explorer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; Según un estudio de JupiterResearch, el 44% de las empresas estadounidenses de más de 250 empleados permiten a sus asalariados descargarse el navegador, por ejemplo. La propia Fundación Mozilla estima que que entre 70 y 80 millones de personas utilizan su navegador, y es descargado una media de 350.000 veces al día.&lt;/span&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; El Internet Explorer es el navegador más utilizado con una cuota de mercado de casi el 86%. En cambio Firefox se mantiene aún lejos con un 11%, aunque su crecimiento estos últimos años ha sido importante pese a haber retrocedido ligeramente en agosto, según datos de Onestat. La primera versión de Firefox fue lanzada en noviembre de 2004.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1839/161818749525649/1600/firefox_logo.jpg"&gt;&lt;br /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/1730533690728588482/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=1730533690728588482' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/1730533690728588482'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/1730533690728588482'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/10/firefox-20-listo-para-descarga.html' title='Firefox 2.0 listo para descarga'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-6175930195081223776</id><published>2006-10-25T14:43:00.000-05:00</published><updated>2006-10-25T14:45:02.445-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>VSTO v3</title><content type='html'>&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Por primera vez se publica una versión preliminar de VSTO v3.&lt;br /&gt;Esta versión de VSTO funciona con Office 2007 Beta 1 Technical Refresh.&lt;br /&gt;VSTO v3 proporciona soporte para la integración de código .NET con la nueva versión de Office 2007.&lt;br /&gt;Entre las características más destacables estan:&lt;/span&gt;&lt;/p&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Soporte para el nuevo formato de fichero Office Open XML&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Soporte para el nuevo modelo de UI (Ribbon) de Office 2007&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Proyectos de Addins para Microsoft Access 2007, Microsoft Excel 2007, Microsoft SharePoint Designer 2007, Microsoft InfoPath 2007, Microsoft Outlook 2007, Microsoft PowerPoint 2007, Microsoft Project 2007, Microsoft Publisher 2007, Microsoft Visio 2007, and Microsoft Word 2007&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Soporte para los nuevos Taskpane&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Enlace a la página de &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2e85132b-7370-4137-a19a-15752ea83952&amp;displaylang=en"&gt;descarga de VSTO v3&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/6175930195081223776/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=6175930195081223776' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/6175930195081223776'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/6175930195081223776'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/10/vsto-v3.html' title='VSTO v3'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-5810885668717008749</id><published>2006-10-18T09:32:00.000-05:00</published><updated>2006-10-18T09:37:55.039-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Seguridad ASP.NET</title><content type='html'>&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Las aplicaciones Web ASP.NET versión 2.0 configuradas para la autenticación de formularios utilizan un vale de autenticación que se transmite entre el servidor Web y el explorador en una cookie o en una cadena de consulta URL. El vale de autenticación se genera cuando el usuario inicia sesión por primera vez y se utiliza en ocasiones posteriores para representar al usuario autenticado. Contiene un identificador de usuario y, con frecuencia, el conjunto de las funciones a las que pertenece el usuario. El explorador transmite al servidor Web el vale de autenticación en todas las solicitudes posteriores que forman parte de la misma sesión. Además del almacén de identidades de usuario, también debe proteger este vale para no poner en peligro el mecanismo de autenticación. &lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;No proteger debidamente la autenticación de formularios es una vulnerabilidad habitual que puede traducirse en:&lt;/span&gt;&lt;/p&gt;&lt;table style="font-family: verdana;" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Elevación de privilegios:&lt;/b&gt; un intruso puede elevar los privilegios de su aplicación actualizando el nombre de usuario o la lista de funciones contenida en el vale y enviando a continuación la información actualizada al servidor. Un intruso capaz de insertar código malintencionado en su aplicación (en una nueva página ASPX, por ejemplo), también será capaz de crear y modificar los vales de autenticación de formularios&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Secuestro de sesión:&lt;/b&gt; puede ocurrir que un intruso se haga con el vale de autenticación de otro usuario y lo utilice para obtener acceso a su aplicación. Esto puede suceder de varias maneras:&lt;/span&gt;&lt;/p&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Como consecuencia de una vulnerabilidad de secuencias de comandos entre sitios.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Si el transporte no se protege mediante un mecanismo de seguridad como Secure Sockets Layer (SSL).&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Si el vale se almacena en la caché del explorador.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Utilización de la sesión después de cerrarla:&lt;/b&gt; incluso después de que el usuario haya cerrado la sesión de la aplicación y el desarrollador haya llamado a &lt;b&gt;FormsAuthentication.SignOut,&lt;/b&gt; el vale de autenticación sigue siendo válido hasta que caduca su tiempo de vida (TTL), de manera que cabe la posibilidad de que un intruso lo utilice para suplantar la identidad de otro usuario.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Interceptación:&lt;/b&gt; puede ocurrir que un intruso mire el contenido de un vale de autenticación para obtener información confidencial y utilizar esta información para poner en peligro la aplicación.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Exposición del almacén de identidades de usuario:&lt;/b&gt; un intruso con acceso al almacén de identidades de usuario puede obtener acceso a los nombres de usuario y contraseñas, directamente desde el almacén de datos o mediante un ataque de inyección SQL.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;Para proteger el sistema de estas amenazas, la autenticación de formularios en ASP.NET ofrece las contramedidas siguientes:&lt;/span&gt;&lt;/p&gt;&lt;table style="font-family: verdana;" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Algoritmos hash MAC (HMAC):&lt;/b&gt; utilizan SHA1 o MD5 para proporcionar protección frente a posibles alteraciones. Cualquier cambio realizado en el vale de autenticación se detecta en el servidor y se genera una excepción si se ha modificado.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Cifrado:&lt;/b&gt; el cifrado convierte los datos de texto sin cifrar contenidos en el vale de autenticación de formularios en texto cifrado ilegible. ASP.NET versión 2.0 utiliza el cifrado simétrico AES para impedir que cualquiera pueda ver el contenido del vale de autenticación de formularios.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Restricción de la duración de la sesión:&lt;/b&gt; puede aplicar restricciones de la duración para reducir la ventana de tiempo durante la cual un intruso puede suplantar la identidad de otro usuario utilizando para ello el vale de autenticación de éste.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="listBullet" valign="top"&gt;&lt;span style="font-size:85%;"&gt;•&lt;/span&gt;&lt;/td&gt;&lt;td class="listItem"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Transmisión obligatoria a través de HTTPS:&lt;/b&gt; puede impedir que los vales de autenticación se transmitan a través de conexiones HTTP. Esto impide que un intruso pueda ver o modificar el contenido del vale de autenticación mientras éste atraviesa la red.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/5810885668717008749/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=5810885668717008749' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/5810885668717008749'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/5810885668717008749'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/10/seguridad-aspnet.html' title='Seguridad ASP.NET'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-3900527419301719355</id><published>2006-09-13T15:03:00.000-05:00</published><updated>2006-09-13T15:05:30.991-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://geeks.ms/photos/cfouz/images/936/original.aspx"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 302px; height: 67px;" src="http://geeks.ms/photos/cfouz/images/936/original.aspx" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;GoogleMaps.Subgurim.NET es el control de GoogleMaps más avanzado para ASP.NET 2.0.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;Con todo el poder de la API oficial de GoogleMaps pero sin necesidad de una sola línea de código BLOCKED SCRIPT todo ASP.NET!!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt; Con solo arrastrar con el ratón, y unas pocas líneas de código, podrás programar potentes aplicaciones con mapas de Google!!&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/3900527419301719355/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=3900527419301719355' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/3900527419301719355'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/3900527419301719355'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/09/googlemaps.html' title=''/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-1423844420442117074</id><published>2006-09-13T15:01:00.000-05:00</published><updated>2006-09-13T15:03:20.264-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>12 razones para usar Internet Explorer</title><content type='html'>&lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;1ª - La letra “e”, es un símbolo de modernidad, un homenaje a nuestra vieja y culta Europa, una “e” de esperanza…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;2ª - Es fácil de usar, al no tener navegación por pestañas, te puedes concentrar más en una sola página, navegarás menos pero…absorberás más conocimientos.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;3ª - No requiere instalación, en el 90 % de los casos vendrá con tu flamante nuevo equipo, nada de complicadas instalaciones, horas de descarga de otros navegadores que vete tu a saber que oscuros misterios esconderán… (ahora bien, te las vas a ver para desinstalarlo)&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;4ª - Serás un buen ciudadano, podrás entrar a todo tipo de páginas de organismos y estamentos oficiales, no sentirás el “vacio administrativo” de una página que respeta los estándares y dice que tu Konqueror es un señor muy malo…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;5ª - Tus capacidades de búsqueda se ampliarán, verás crecer y crecer las barras que se te instalarán de buenos señores que querrán que amplíes horizontes y se abrirán muchas bellas ventanas emergentes de gente que se preocupa por el tamaño de tu pene…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;6ª - Te harás un experto en seguridad informática, no habrá Spyware que se te resista, tu página de inicio será secuestrada tantas veces que te harás un experto en rescates…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;7ª - Un seg que estoy pensando más…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;8ª - La banca electrónica no tendrá secretos para ti, aprenderás lo que es el Phising plácidamente mientras miras la bonita suma que te cargó El Corte Inglés a fin de mes en tu tarjeta de buen ciudadano.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;9ª - No estarás pendiente de engorrosas actualizaciones, serás libre, gracias a su código cerrado no serás incomodado en la calma de tu espacio digital, ojos que no ven, tiempo perdido que no se siente…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;10ª- Te sentirás comprendido, es más fácil, más plástico, decir “uso Explorer” que “uso Fairfos”, no sentirás el rechazo social, eres parte de algo, algo grande, el espíritu de Gates, todo un símbolo de la concordia en este mundo te acompañará…&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;11ª- Tus hijos crecerán en un entorno feliz, todo tiene lógica, desde la base de la familia, Windows, pasando por sus descendientes tan cercanos, tan nuestros. Imagínate, tu bebé mandando mails con Outlook Express “nene, deja eso del Thunderbird, caca“, gestionando su futuro Master con Microsoft Office, hablando con sus amigos por el Messenger (”el aMSN es de niños malos !”)…el sueño Americano será el tuyo.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;12ª- La más importante, Internet Explorer es como el ColaCao, siempre ha estado ahí, cuando de pequeños nos dieron Nesquik, llegó el fracaso escolar, si mi mamá no me hubiera hecho pasar por ese trance, hoy en día sería un Blogger admirado pero…que se puede esperar de un pobre chaval que no pasó de 2º de BUP…&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/1423844420442117074/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=1423844420442117074' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/1423844420442117074'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/1423844420442117074'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/09/12-razones-para-usar-internet-explorer.html' title='12 razones para usar Internet Explorer'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-2159498709827802054</id><published>2006-09-07T12:10:00.000-05:00</published><updated>2006-09-07T12:14:43.362-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>System.Resources (Espacio de nombres)</title><content type='html'>&lt;p&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;El espacio de nombres &lt;b&gt;System.Resources&lt;/b&gt; proporciona clases e interfaces que permiten a los programadores crear, almacenar y administrar diversos recursos específicos de las referencias culturales que se utilizan en las aplicaciones. Una de las clases más importantes del espacio de nombres &lt;b&gt;System.Resources&lt;/b&gt; es la clase ResourceManager. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p face="trebuchet ms"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;La clase &lt;b&gt;ResourceManager&lt;/b&gt; permite el acceso y el control, por parte del usuario, de los recursos almacenados en el ensamblado principal o en ensamblados satélites de recursos. Utilice los métodos System.Resources.ResourceManager.GetObject y System.Resources.ResourceManager.GetString para recuperar objetos y cadenas específicos de las referencias culturales.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Clases&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 97.58%;" border="0" cellpadding="0" width="97%"&gt;  &lt;col width="2%"&gt;&lt;col width="38%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Clase&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;MissingManifestResourceException&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Excepción que se produce si el ensamblado principal no contiene los   recursos de la referencia cultural neutral. Éstos son necesarios debido a la   pérdida de un ensamblado satélite apropiado.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;MissingSatelliteAssemblyException&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;La excepción que se produce cuando no existe el ensamblado satélite   para los recursos de la referencia cultural neutra.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;NeutralResourcesLanguageAttribute&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Informa a &lt;b&gt;ResourceManager&lt;/b&gt; de la referencia cultural neutral de   un ensamblado. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;No se puede heredar esta   clase.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResourceManager&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Proporciona un acceso cómodo a los recursos específicos de cada   referencia cultural en tiempo de ejecución.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResourceReader&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Enumera las secuencias y archivos ".resources", y lee los   pares secuenciales nombre-valor de los recursos.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResourceSet&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Almacena todos los recursos adaptados a una referencia cultural   determinada, pasando por alto otras referencias culturales, incluidas las   reglas de reserva.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResourceWriter&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Escribe recursos en el formato predeterminado del sistema para un   archivo de resultados o una secuencia de salida. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;Esta clase no se puede heredar.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResXDataNode&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Representa un elemento en un archivo de recursos.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResXFileRef&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Representa un vínculo a un recurso externo.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResXFileRef.Converter&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Proporciona un convertidor de tipos para convertir datos de   ResXFileRef en una cadena y desde una cadena.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResXResourceReader&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Enumera las secuencias y archivos de recursos XML (.resx) y lee los   pares secuenciales nombre-valor de los recursos.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResXResourceSet&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Recopila todos los elementos que representa un archivo de recursos XML   (.resx) en un único objeto.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;ResXResourceWriter&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Escribe recursos en un archivo de recursos XML (.resx) o en una   secuencia de salida.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;SatelliteContractVersionAttribute&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Indica a &lt;b&gt;ResourceManager&lt;/b&gt; que pida una versión en particular de   un ensamblado satélite para simplificar las actualizaciones del ensamblado   principal de una aplicación.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Interfaces&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 95.08%;" border="0" cellpadding="0" width="95%"&gt;  &lt;col width="2%"&gt;&lt;col width="38%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Interfaz&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;IResourceReader&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Proporciona la funcionalidad básica para leer datos de los archivos de   recursos.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;IResourceWriter&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Proporciona la funcionalidad para escribir los recursos en un archivo   o secuencia de salida.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Enumeraciones&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 95.08%;" face="trebuchet ms" border="0" cellpadding="0" width="95%"&gt;  &lt;col width="2%"&gt;&lt;col width="38%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Enumeración&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;UltimateResourceFallbackLocation&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Especifica el ensamblado de la clase &lt;b&gt;ResourceManager&lt;/b&gt; que se va   a utilizar para recuperar recursos neutrales utilizando Empaquetar e   implementar recursos.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/2159498709827802054/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=2159498709827802054' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/2159498709827802054'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/2159498709827802054'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/09/systemresources-espacio-de-nombres.html' title='System.Resources (Espacio de nombres)'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-8152046031590038134</id><published>2006-09-07T12:07:00.000-05:00</published><updated>2006-09-07T12:09:53.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>ResourceReader (Miembros)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader_members.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Constructores públicos&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 91.84%;" face="trebuchet ms" border="0" cellpadding="0" width="91%"&gt;  &lt;col width="10%"&gt;&lt;col width="30%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Nombre &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader.resourcereader.aspx"&gt;ResourceReader&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sobrecargado. Inicializa una nueva instancia de la clase &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;ResourceReader&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader_members.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Métodos públicos&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 93.06%;" border="0" cellpadding="0" width="93%"&gt;  &lt;col width="10%"&gt;&lt;col width="30%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Nombre &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader.close.aspx"&gt;Close&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Libera todos los recursos del sistema operativo asociados a &lt;b&gt;ResourceReader&lt;/b&gt;.   &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.equals.aspx"&gt;Equals&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sobrecargado. Determina si dos instancias de &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;Object&lt;/span&gt;&lt;/a&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;Object&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;).&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt; son iguales. &lt;/span&gt;(Se hereda de   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader.getenumerator.aspx"&gt;GetEnumerator&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Devuelve un enumerador para esta clase &lt;b&gt;ResourceReader&lt;/b&gt;. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.gethashcode.aspx"&gt;GetHashCode&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sirve como función hash para un tipo concreto. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.gethashcode.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;GetHashCode&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt; es apropiado   para su utilización en algoritmos de hash y en estructuras de datos como las   tablas hash. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcereader.getresourcedata.aspx"&gt;GetResourceData&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Recupera el nombre de tipo y el contenido de datos de un recurso con   nombre a partir de un archivo de recursos o secuencia abierto. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.gettype.aspx"&gt;GetType&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Obtiene el objeto &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.type.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;Type&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt; de la instancia   actual. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.referenceequals.aspx"&gt;ReferenceEquals&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Determina si las instancias de &lt;b&gt;Object&lt;/b&gt; especificadas son la   misma instancia. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.tostring.aspx"&gt;ToString&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Devuelve una clase &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.string.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt; que representa   la clase &lt;b&gt;Object&lt;/b&gt; actual. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se   hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/8152046031590038134/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=8152046031590038134' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/8152046031590038134'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/8152046031590038134'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/09/resourcereader-miembros.html' title='ResourceReader (Miembros)'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-8157538530261562955</id><published>2006-09-07T12:05:00.000-05:00</published><updated>2006-09-07T12:06:59.459-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>ResourceWriter (Miembros)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter_members.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Constructores públicos&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 94.56%;" border="0" cellpadding="0" width="94%"&gt;  &lt;col width="10%"&gt;&lt;col width="30%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Nombre &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.resourcewriter.aspx"&gt;ResourceWriter&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sobrecargado. Inicializa una nueva instancia de la clase &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;ResourceWriter&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;.&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter_members.aspx"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Métodos públicos&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="width: 94.04%;" border="0" cellpadding="0" width="94%"&gt;  &lt;col width="10%"&gt;&lt;col width="30%"&gt;&lt;col width="60%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Nombre &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 10pt;"&gt;Descripción &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.addresource.aspx"&gt;AddResource&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sobrecargado. Agrega un recurso a la lista de recursos que se va a   escribir. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.addresourcedata.aspx"&gt;AddResourceData&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Agrega una unidad de datos como un recurso a la lista de recursos que   se va a escribir. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.close.aspx"&gt;Close&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Guarda los recursos en la secuencia de salida y, a continuación, la   cierra. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.dispose.aspx"&gt;Dispose&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Permite a los usuarios cerrar el archivo o secuencia de recursos y   liberar los recursos de forma explícita. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.equals.aspx"&gt;Equals&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sobrecargado. Determina si dos instancias de &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;Object&lt;/span&gt;&lt;/a&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;Object&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;).&lt;/span&gt;&lt;span style="" lang="ES-MX"&gt; son iguales. &lt;/span&gt;(Se hereda de   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.resources.resourcewriter.generate.aspx"&gt;Generate&lt;/a&gt;&lt;/span&gt;   &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Guarda todos los recursos en la secuencia de salida con el formato   predeterminado del sistema. &lt;/span&gt;&lt;span style="" lang="ES-MX"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.gethashcode.aspx"&gt;GetHashCode&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Sirve como función hash para un tipo concreto. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.gethashcode.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;GetHashCode&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt; es apropiado   para su utilización en algoritmos de hash y en estructuras de datos como las   tablas hash. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.gettype.aspx"&gt;GetType&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Obtiene el objeto &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.type.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;Type&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt; de la instancia   actual. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.referenceequals.aspx"&gt;ReferenceEquals&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Determina si las instancias de &lt;b&gt;Object&lt;/b&gt; especificadas son la   misma instancia. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="" name="inheritedMember" notsupportedon="netcf"&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.tostring.aspx"&gt;ToString&lt;/a&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 3.75pt;" valign="top"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;Devuelve una clase &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.string.aspx"&gt;&lt;span style="" lang="ES-MX"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt; que representa   la clase &lt;b&gt;Object&lt;/b&gt; actual. &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;(Se   hereda de &lt;a href="http://msdn2.microsoft.com/es-es/library/system.object.aspx"&gt;Object&lt;/a&gt;).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/8157538530261562955/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=8157538530261562955' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/8157538530261562955'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/8157538530261562955'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/09/resourcewriter-miembros.html' title='ResourceWriter (Miembros)'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-6440902734954442507</id><published>2006-08-31T18:14:00.000-05:00</published><updated>2006-08-31T18:17:51.259-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><title type='text'>Llenando un ListView en VB.NET</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1839/161818749525649/1600/screen.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/1839/161818749525649/320/screen.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;Imports System.Data.SqlClient&lt;br /&gt;&lt;br /&gt;Public Class frmCliente&lt;br /&gt;&lt;br /&gt;    Dim cn As New SqlConnection&lt;br /&gt;    Dim da As New SqlDataAdapter&lt;br /&gt;    Dim ds As New DataSet&lt;br /&gt;    Dim cmd As New SqlCommand&lt;br /&gt;&lt;br /&gt;    Private Sub frmCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;&lt;br /&gt;        cn = New SqlConnection("data source = servidor; initial catalog = Northwind; User Id = sa; Password = password")&lt;br /&gt;        cmd = New SqlCommand("SELECT * FROM Customers", cn)&lt;br /&gt;        da = New SqlDataAdapter&lt;br /&gt;        da.SelectCommand = cmd&lt;br /&gt;        cn.Open()&lt;br /&gt;        da.Fill(ds, "Customers")&lt;br /&gt;        cn.Close()&lt;br /&gt;        MostrarClientes()&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Private Sub MostrarClientes()&lt;br /&gt;        Dim objListItem As New ListViewItem&lt;br /&gt;        Me.ClientesListView.Items.Clear()&lt;br /&gt;&lt;br /&gt;        For Each drw As DataRow In ds.Tables("Customers").Rows&lt;br /&gt;            objListItem = ClientesListView.Items.Add(drw.Item("CompanyName").ToString, 0)&lt;br /&gt;            objListItem.SubItems.Add(drw.Item("ContactName").ToString)&lt;br /&gt;            objListItem.SubItems.Add(drw.Item("Phone").ToString)&lt;br /&gt;            objListItem.SubItems.Add(drw.Item("Region").ToString)&lt;br /&gt;        Next&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/6440902734954442507/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=6440902734954442507' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/6440902734954442507'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/6440902734954442507'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/08/llenando-un-listview-en-vbnet.html' title='Llenando un ListView en VB.NET'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-6207952823351838301</id><published>2006-08-29T15:51:00.001-05:00</published><updated>2006-08-29T15:51:32.245-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>Cómo... saber cuando usar Protected, Private, etc.</title><content type='html'>&lt;span style="font-family: trebuchet ms;font-family:Verdana;font-size:85%;"  &gt;Estos modificadores de declaraciones de clases, métodos, propiedades y variables, se usarán cuando queramos modificar el "alcance" de visibilidad de dichos miembros.&lt;/span&gt;  &lt;blockquote style="font-family: trebuchet ms;"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Private:&lt;/strong&gt;&lt;br /&gt;Un miembro declarado como Privado, sólo es accesible en la     clase en la que se ha declarado.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Protected:&lt;/strong&gt;&lt;br /&gt;Un miembro declarado como Protected es accesible en la clase     en la que se ha declarado y en las que deriven de ella.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Friend:&lt;/strong&gt;&lt;br /&gt;Un miembro declarado como Friend es visible en:&lt;br /&gt;- la clase en la que se ha declarado,&lt;br /&gt;- el Namespace en el que está dicha clase,&lt;br /&gt;- en el mismo programa en el que está la declaración; por     ejemplo, si se compilan varios ficheros con distintos     Namespaces en un mismo programa (ejecutable o componente).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Protected Friend:&lt;/strong&gt;&lt;br /&gt;Idem que Friend, además de ser visible en las clases     derivadas.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Public:&lt;/strong&gt;&lt;br /&gt;Visible por todo el mundo.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/6207952823351838301/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=6207952823351838301' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/6207952823351838301'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/6207952823351838301'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/08/cmo-saber-cuando-usar-protected-private.html' title='Cómo... saber cuando usar Protected, Private, etc.'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1325619196114118447.post-8848197381002977875</id><published>2006-08-24T13:35:00.000-05:00</published><updated>2006-08-24T13:36:38.502-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Un "firefox" de verdad</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/1839/161818749525649/1600/223-681_the_real_firefox.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 248px; height: 373px;" src="http://photos1.blogger.com/blogger2/1839/161818749525649/320/223-681_the_real_firefox.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.thingsthatmakeyougoaahh.com/images/223-681_the_real_firefox.jpg"&gt;&lt;br /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/8848197381002977875/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1325619196114118447&amp;postID=8848197381002977875' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/1325619196114118447/posts/default/8848197381002977875'/><link rel='self' type='application/atom+xml' href='http://carlostech.blogspot.com/feeds/posts/default/8848197381002977875'/><link rel='alternate' type='text/html' href='http://carlostech.blogspot.com/2006/08/un-firefox-de-verdad.html' title='Un &quot;firefox&quot; de verdad'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/10855265346701503738</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>