<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9026135486753591487</id><updated>2012-02-07T19:16:06.990-04:00</updated><category term='Musica'/><category term='Crystal Reports'/><category term='asp.Net'/><category term='jscript'/><category term='VB.Net'/><category term='SQL'/><category term='VSS'/><category term='Reporting Services'/><category term='ASP y VB6'/><category term='IIS'/><category term='ADO.NET'/><title type='text'>SergioT.Net</title><subtitle type='html'>Mientras mas aprendo me doy cuenta que Socrates tenia razón "yo solo se que no se nada" :( &lt;br&gt;&lt;br&gt;&lt;br&gt;
"What you don't know sure hurt you"</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-3463784037342804155</id><published>2012-01-30T10:11:00.000-04:00</published><updated>2012-01-30T10:11:57.979-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Enviar emails abriendo el gestor de correo</title><content type='html'>&lt;span style="font-family: arial, sans-serif; font-size: 10pt; line-height: 115%;"&gt;Hace poco tuve la necesidad de hacer un programa para abrir el outlook , q es mi gestor de correos, desde mi pagina aspnet, y... bue.. hace tanto q no lo hacia que me habia olvidado como hacerlo asi que aqui dejo un resumen de varias formas para lograr esto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial, sans-serif; font-size: 10pt; line-height: 115%;"&gt;Aqui les dejo un resumen de como enviar emails por distintas formas utilizando el mailto&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial, sans-serif; font-size: 10pt; line-height: 115%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial, sans-serif; font-size: 10pt; line-height: 115%;"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;strong&gt;Con Mailto sencillo&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Se puede utilizar un hipervínculo de HTML o uno deASPNET&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;a&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;href&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"mailto:elCorreo@gmail.com"&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;El Sr X&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;a&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;asp&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;HyperLink&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;ID&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="HyperLink1"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;runat&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="server"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;NavigateUrl&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"mailto:elCorreo@gmail.com "&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Text&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"ElSr X"&amp;gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;asp&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;HyperLink&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;strong&gt;Con unaimagen&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Hay dos formas de hacerlo con una imagen&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;a&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;href&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"mailto:elCorreo@gmail.com "&amp;gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;img&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;src&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"images/img.jpg"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;/&amp;gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;a&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;img&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;src&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"images/img.jpg"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;onclick&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"parent.location='mailto:elCorreo@gmail.com "&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;span style="color: red;"&gt;style&lt;/span&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="cursor:pointer"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;/&amp;gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;strong&gt;Utilizandoun boton o un imagebutton&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Esto yaes con ayuda de Jscript&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;input&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;id&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="Button1"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;type&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="button"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;value&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="button"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;onclick&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"parent.location='mailto:abc@abc.com'"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US;"&gt;asp&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US;"&gt;ImageButton&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US;"&gt; &lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;="ibtCargar"&lt;/span&gt;&lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server" &lt;/span&gt;&lt;span style="color: red;"&gt;OnClientClick&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;=”parent.location=’elCorreo@gmail.com’”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ToolTip&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;="Oprima yabra su Gestor de correo"&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;span style="color: blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;strong&gt;En el siguientepostback&lt;/strong&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="mso-fareast-language: ES-BO;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;En pagina coloquemos un botón o cualquier cosa que haga el postback&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;asp&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Button&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;ID&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="Button1"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;runat&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="server"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Text&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="Button"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;OnClick&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;="Button1_Click"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="mso-fareast-language: ES-BO;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;En el delegado del botón, (o esa cualquier cosa),se indica que en el siguiente postback se abra la ventana del gestor d correo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Protected&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Sub&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Button1_Click(&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;ByVal&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; sender &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;As&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Object&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;, &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;ByVal&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; e &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;As&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;System.EventArgs) &lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Handles&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Button1.Click&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Dim s as String =&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"&lt;script type="text/javascript"&gt; parent.location='mailto:&lt;/span&gt;&lt;span style='color: blue; font-family: "Arial","sans-serif"; font-size: 10pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: ES-BO; mso-ansi-language: EN-US;' lang="EN-US"&gt;’elCorreo@gmail.com’&lt;/span&gt;&lt;span style='color: maroon; font-family: "Arial","sans-serif"; font-size: 10pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: ES-BO; mso-ansi-language: EN-US;' lang="EN-US"&gt;&lt;/script&gt;"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;ClientScript.RegisterStartupScript(&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Me&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;.GetType(),&lt;/span&gt;&lt;span lang="EN-US" style="color: maroon; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;"mailto"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;,s)&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-ansi-language: EN-US; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;End&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt; &lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-BO;"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman; font-size: small;"&gt;Bueno espero le sirva a alguien&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-3463784037342804155?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/3463784037342804155/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2012/01/enviar-emails-abriendo-el-gestor-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/3463784037342804155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/3463784037342804155'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2012/01/enviar-emails-abriendo-el-gestor-de.html' title='Enviar emails abriendo el gestor de correo'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-1203990177711830681</id><published>2011-11-18T15:11:00.001-04:00</published><updated>2011-11-18T15:21:47.532-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><title type='text'>Desaparecio mi Report data Toolbox !!!</title><content type='html'>Hola &lt;br /&gt;&lt;br /&gt;No se si les pasó alguna vez pero hace poco perdí algunas horas!!! por culpa de esto, utilizando reporting services creé un nuevo reporte y por ninguna parte pude encontrar el toolbox donde se colocan y configuran los datasets del report, este debería aparecer al abrir el diseñador de reportes pero no apareció, estoy utilizando VS2010.&lt;br /&gt;&lt;br /&gt;Despues de buscar y buscar y googlear... halle la solución, cuando se tiene abierto el reporte en diseño hay que oprimir la convinación de teclas CTRL -ALT -D y.... listo!!!! aparece el pinche toolbox!!!&lt;br /&gt;Aparentemente es un bug y hay un articulo para resolverlo pero la verdad no lo encontré, bue... como sea, así se resuelve&lt;br /&gt;&lt;br /&gt;Espero le sirva a alguien&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-1203990177711830681?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/1203990177711830681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/11/desaparecio-mi-report-data-toolbox.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1203990177711830681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1203990177711830681'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/11/desaparecio-mi-report-data-toolbox.html' title='Desaparecio mi Report data Toolbox !!!'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6681446849995296720</id><published>2011-10-14T12:23:00.003-04:00</published><updated>2011-10-14T12:24:15.269-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Gridview a Excel en un clic</title><content type='html'>Aqui les dejo un link a un control muy bonito hecho para asp.net 2.0, lo estoy utilizando con asp.net 4.0 y funciona muy bien.&lt;br /&gt;&lt;br /&gt;Es un boton que se lo añade a la pagina, se le dice el nombre del grid y listo, ese botoncito&amp;nbsp; es capás de generar un archivo de excel con el contenido del grid, incluso se pueden excluir columnas que no se quieren exportar&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1167246.aspx/1?Free+Export+Gridview+to+Excel"&gt;Descarguen desde aqui el boton&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;Sergio T&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6681446849995296720?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6681446849995296720/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/10/gridview-excel-en-un-clic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6681446849995296720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6681446849995296720'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/10/gridview-excel-en-un-clic.html' title='Gridview a Excel en un clic'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-5262403121818687477</id><published>2011-10-12T16:20:00.003-04:00</published><updated>2011-10-12T16:21:22.884-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Chart en asp.Net 4.0 "error: Invalid temp directory in chart handler configuration [c:\TempImageFiles\]"</title><content type='html'>Hola&lt;br /&gt;aqui les dejo un problema que tuve, inserté un gráfico en una pagina aspx y despues de configurarlo e intentar correr la pagina me salio el siguiente errror&lt;br /&gt;&lt;br /&gt;&lt;span name="subject"&gt;error: Invalid temp directory in chart handler configuration [c:\TempImageFiles\]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span name="subject"&gt;El tema habia sido bien sencillo, cuando colocan un chart en su pagina , se aumenta una linea en el web.config que dice lo siguiente:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span name="subject"&gt;&lt;appsettings&gt;&lt;br /&gt;&lt;br /&gt;&lt;add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/appsettings&gt;&lt;br /&gt;lo que hay que hacer es simplemente cambiarlo a:&lt;br /&gt;&lt;br /&gt;&lt;appsettings&gt;&lt;br /&gt;&lt;br /&gt;&lt;add key="ChartImageHandler" value="storage=memory;timeout=20;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/appsettings&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A no ser que quieran grabar el grafico en una ubicación fisica, en cuyo caso ya tienen que comenzar a analizar permisos de escritura en la carpeta que deseen.&lt;br /&gt;&lt;br /&gt;Por si acaso estoy utilizando VS2010, .Net4,&amp;nbsp;IIS&lt;br /&gt;Salu2&lt;br /&gt;Sergio&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-5262403121818687477?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/5262403121818687477/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/10/chart-en-aspnet-40-error-invalid-temp.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5262403121818687477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5262403121818687477'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/10/chart-en-aspnet-40-error-invalid-temp.html' title='Chart en asp.Net 4.0 &quot;error: Invalid temp directory in chart handler configuration [c:\TempImageFiles\]&quot;'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6000259414917773725</id><published>2011-09-19T15:04:00.000-04:00</published><updated>2012-01-22T21:41:10.436-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Login failed for user IIS APPPOOL\DefaultAppPool</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;Pinche seguridad paranoica jejeje no se ustedes pero las veces que inicio un nuevo proyecto web tengo q revisar los temas de seguridad y bueno... paciencia son detallitos nunca los tengo en la cabeza, así que aqui copio una de mis ayuda memoria&lt;br /&gt;&lt;br /&gt;En este caso les comento una movida contra el iis en windows 7 jeje&lt;br /&gt;&lt;br /&gt;Cuando tengan el error mencionado en el titulo y no puedan ingresar a una BD sql server por culpa de permisos lo que pueden hacer es la siguiente secuencia de pasos&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abrir el IIS&lt;/li&gt;&lt;li&gt;Hacer clic en el nodo de la PC&lt;/li&gt;&lt;li&gt;hacer clic en Applications pool&lt;/li&gt;&lt;li&gt;Seleccionar el pool en el cual está trabajando la aplicacion, normalmente seria DefaultAppPool&lt;/li&gt;&lt;li&gt;Ingresar a las Opciones Avanzadas&lt;/li&gt;&lt;li&gt;buscar a Identity o Identidad y cambiar a NetworkService (NT AUTHORITY\Servicio de red)&lt;/li&gt;&lt;/ol&gt;Hasta ahí hemos cambiado el usuario con el cual nuestra aplicacion se autentifica, ahora queda darle permisos en la base de datos al usuario networkservice para ello hay que hacer lo siguiente&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abrir el SqlManager&lt;/li&gt;&lt;li&gt;Ir al nodo de Security&lt;/li&gt;&lt;li&gt;Hacer click derecho y propiedades al Login NT AUTHORITY\Servicio de red &lt;/li&gt;&lt;li&gt;Ir aUser mapping y seleccionar la base de datos a la cual se quiere autorizar &lt;/li&gt;&lt;li&gt;Darle los permisos que se deseen &lt;/li&gt;&lt;li&gt;Cerrar y listo&lt;/li&gt;&lt;/ol&gt;Eso es todo amigos, espero les sirva&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;hope this helps.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6000259414917773725?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6000259414917773725/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/09/login-failed-for-user-iis.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6000259414917773725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6000259414917773725'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/09/login-failed-for-user-iis.html' title='Login failed for user IIS APPPOOL\DefaultAppPool'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4447692907806347438</id><published>2011-09-19T15:01:00.000-04:00</published><updated>2011-09-19T15:04:46.265-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><title type='text'>reportviwer vs2008 IIS7 no carga el informe</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Un problema de... antología, por no decir una palabrota,... jeje&lt;br /&gt;Resulta que coloco un reportviwer lo enlazo a un reporte que ni acceso a datos tiene, solo un ¨hola mundo¨ y resulta que cuando el reportviwer intenta mostrar el reporte, salen n mil errores de javascript. Bueno gracias a google encontré la solución y la coloco aquí por si a alguien le sirve,... bueno de hecho a mi para la proxima vez q tengo un vs2008 recien instalado jejeje&lt;br /&gt;&lt;br /&gt;Lo que hay que hacer es lo siguiente:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abrir el IIS 7 y seleccionar la aplicación&lt;/li&gt;&lt;li&gt;Seleccionar &lt;strong&gt;Asignación de controladores&amp;nbsp;( handler mappings )&lt;/strong&gt;&amp;nbsp;en el área IIS&lt;/li&gt;&lt;li&gt;&amp;nbsp;En el panel de Acciones de la derecha,&amp;nbsp;hay que hacer&amp;nbsp;clic en &lt;strong&gt;Agregar Controlador Administrado (Add Managed Handler)&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Se desplegará un dialogbox en el que hay que colocar lo siguiente:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Ruta (Requested path):&lt;/strong&gt; Reserved.ReportViewerWebControl.axd &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tipo (Type):&lt;/strong&gt; Microsoft.Reporting.WebForms.HttpHandler &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Nombre (Name): &lt;/strong&gt;Reserved-ReportViewerWebControl-axd. &lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Aceptar y listo, con eso se arregla el problema&lt;/li&gt;&lt;/ol&gt;Hay que tener en cuenta que el WebConfig de la aplicación tambien se cambiará de forma automática, se incluirá lo siguiente en la sección System.Webserver del archivo web.config lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;add &lt;br="" name="Reserved-ReportViewerWebControl-axd" path="Reserved.ReportViewerWebControl.axd"&gt;verb="*" type="Microsoft.Reporting.WebForms.HttpHandler" resourceType="Unspecified" &lt;br /&gt;/&amp;gt;&lt;/add&gt;&lt;br /&gt;&lt;br /&gt;Eso es todo, espero les sirva&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4447692907806347438?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4447692907806347438/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/09/reportviwer-vs2008-iis7-no-carga-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4447692907806347438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4447692907806347438'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/09/reportviwer-vs2008-iis7-no-carga-el.html' title='reportviwer vs2008 IIS7 no carga el informe'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-2986326327173459844</id><published>2011-09-15T11:35:00.000-04:00</published><updated>2011-09-19T15:05:29.681-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>No aparece el icono de reporte para agregar a un proyecto</title><content type='html'>&lt;span style="font-family: inherit;"&gt;Me ha ocurrido algo extraño, queria agregar un nuevo report&amp;nbsp;(rdlc)&amp;nbsp;a mi proyecto y como siempre,&amp;nbsp;hice &amp;nbsp;clic derecho al proyecto y luego agregar nuevo item y... no habia Report por ninguna parte.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Estoy con VS2008 y windows 7 ( no se si tiene que ver o no) pero la cuestión es que para lograr que aparezcan los items templates&amp;nbsp; que faltan, enre ellos el report, hay que cambiar&amp;nbsp; el camino que se creó en la instalación a los archivos de plantillas o templates. Para eso hay que hacer lo siguiente:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abrir el VS2008&lt;/li&gt;&lt;li&gt;Ir a Herramientas / Opciones&lt;/li&gt;&lt;li&gt;Seleccionar a Proyectos y Soluciones / General. Ahi se pueden ver 3 paths:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;El primero es para indicar donde se almacenarán nuestros proyectos&lt;/li&gt;&lt;li&gt;Indica donde están los ¨project templates¨ de usuario. Este debería apuntar a la carpeta de instalacion en la cual estan los templates o plantillas, en el caso de mi maquina es: &lt;strong&gt;&lt;span style="color: red;"&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Indica donde están los ¨item templates¨ de usuario. Este debería apuntar a la carpeta en la que están los item templates, en esta ubicación el VS deberia encontrar al Report&amp;nbsp; y a otros item templates. Bueno en mi caso este path debería apuntar a: &lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Una vez ajustados los paths solo hay que darle aceptar y cerrar todo&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Espero le sirva a alguien&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;Sergio &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-2986326327173459844?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/2986326327173459844/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/09/no-aparece-el-icono-de-reporte-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2986326327173459844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2986326327173459844'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/09/no-aparece-el-icono-de-reporte-para.html' title='No aparece el icono de reporte para agregar a un proyecto'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-3541879125009020615</id><published>2011-08-25T17:35:00.003-04:00</published><updated>2011-08-25T17:50:11.334-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Error PerfMonCounterNotCorruptedCheck al instalar SQLSERVER2008</title><content type='html'>Intentando instalar SQL SERVER 2008 en un Windows 7 tuve el problema de no poder seguir con la instalación por que me dio el error siguiente:&lt;br /&gt;-----------------------&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;PerfMonCounterNotCorruptedCheck&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Comprueba si es válido el subárbol del Registro de contadores de rendimiento existente.&lt;br /&gt;&lt;br /&gt;El subárbol del Registro de contadores de rendimiento está dañado. Para continuar, debe reparar éste subárbol. Para obtener más información, vea http://support.microsoft.com/kb/300956.&lt;br /&gt;&lt;/span&gt;------------------------&lt;br /&gt;&lt;br /&gt;si van a ver ese articulo.... uff!! bueno no se por ahi les sirve yo acabe mal, al final yo lo resolvi de forma sencilla, no se si es la correcta o nopero me funcionó&lt;br /&gt;&lt;br /&gt;simplemente fui a la registry a las entradas&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]&lt;br /&gt;"Last Counter"=1846&lt;br /&gt;"LastHelp"=1847&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;y coloque esos valores en decimal , luego cerré reinicie mi maquina y... no se colgó asi que funcionó jejeje&lt;br /&gt;&lt;br /&gt;Aqui hay un link que trata en mas detalle el tema por si necesitan mas info http://www.eukhost.com/forums/f31/fix-error-performance-monitor-counter-requirement-when-installing-sql-2005-express-4512/&lt;br /&gt;&lt;br /&gt;espero les sirva&lt;br /&gt;salu2&lt;br /&gt;Sergio&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-3541879125009020615?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/3541879125009020615/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/08/error-perfmoncounternotcorruptedcheck.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/3541879125009020615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/3541879125009020615'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/08/error-perfmoncounternotcorruptedcheck.html' title='Error PerfMonCounterNotCorruptedCheck al instalar SQLSERVER2008'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-2408327971471219279</id><published>2011-08-23T16:21:00.003-04:00</published><updated>2011-08-23T16:43:12.369-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jscript'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>acentos y eñes en  jscript y alert desde aspnet</title><content type='html'>Hace muchooo q no escribo nada pero estoy en el intento de volver a coloca pequeños aportes que se que siempre hay a quien sirvan.En esta línea aqui les dejo un truquillo en los casos en los q necesiten mostrar acentos o ñ en popps del tipo alert desde jscript&lt;br /&gt;&lt;br /&gt;ahi va :&lt;br /&gt;&lt;br /&gt;alert("Error debe incluir su edad en a"+'\u00f1'+"os/meses !!");&lt;br /&gt;&lt;br /&gt;las constantes q deben utilizar para escribir en nuestro querido idioma son:&lt;br /&gt;&lt;br /&gt;\u00e1 -&amp;gt; á \u00c1 -&amp;gt; Á&lt;br /&gt;\u00e9 -&amp;gt; é \u00c9 -&amp;gt; É&lt;br /&gt;\u00ed -&amp;gt; í \u00cd -&amp;gt; Í&lt;br /&gt;\u00f3 -&amp;gt; ó \u00d3 -&amp;gt; Ó&lt;br /&gt;\u00fa -&amp;gt; ú \u00da -&amp;gt; Ú&lt;br /&gt;\u00f1 -&amp;gt; ñ \u00d1 -&amp;gt; Ñ&lt;br /&gt;&lt;br /&gt;Espero les sirva&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-2408327971471219279?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/2408327971471219279/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2011/08/acentos-y-enes-en-jscript-y-alert-desde.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2408327971471219279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2408327971471219279'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2011/08/acentos-y-enes-en-jscript-y-alert-desde.html' title='acentos y eñes en  jscript y alert desde aspnet'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-8845811436378660063</id><published>2009-12-21T12:51:00.001-04:00</published><updated>2009-12-21T12:51:54.166-04:00</updated><title type='text'>Twisted Sister  - Oh Come All Ye Faithful</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;object height='350' width='425'&gt;&lt;param value='http://youtube.com/v/De47fjH6RKY' name='movie'/&gt;&lt;embed height='350' width='425' type='application/x-shockwave-flash' src='http://youtube.com/v/De47fjH6RKY'/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;Feliz navidad para todos, aqui les dejo un videito de Twisted Sister&lt;br /&gt;&lt;br /&gt;Espero q el año q viene pueda reactivar mi blog por q la verdad q estuvo flojo este año,...&lt;br /&gt;&lt;br /&gt;bueno, felices fiestas&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-8845811436378660063?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/8845811436378660063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2009/12/twisted-sister-oh-come-all-ye-faithful.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8845811436378660063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8845811436378660063'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2009/12/twisted-sister-oh-come-all-ye-faithful.html' title='Twisted Sister  - Oh Come All Ye Faithful'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-1513020996427981190</id><published>2009-09-02T19:15:00.001-04:00</published><updated>2009-09-26T12:20:48.188-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>web Popups con aspnet</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;Después de meses de ociosidad dejo un pequeño ejemplo de como iniciar un popup desde el servidor , bueno el truco no es muy complejo mas bien super facil pero les será muy útil&amp;#160; alguien eso seguro, les voy a colocar dos formas de hacerlo una colocando el disparador del popup con jscript y la otra forma utilizando el registro de scripts para q se ejecuten en el inicio de la pagina web&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Con jscript en el botón q levanta el popup&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Abran un nuevo web form coloquen un textBox y un Button &lt;/li&gt;    &lt;li&gt;En el evento load del web form coloquen el siguiente código      &lt;br /&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;           &lt;p&gt;&lt;/p&gt;           &lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;            &lt;p&gt;s = &lt;/p&gt;           &lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;popUp=window.open('webform2.aspx?&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; _              &lt;br /&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;&amp;amp;id=&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.TextBox1.Text &amp;amp; _              &lt;br /&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;','','width=860,height=520,left=40,top=100,resizable=yes,status=yes,scrollbars=yes');&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;            &lt;p&gt;&lt;/p&gt;           &lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.Button1.OnClientClick = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;javascript:&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; s&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Ahora adiciones un segundo formulario web que se llame webforom2.aspx &lt;/li&gt;    &lt;li&gt;Añadan un textbox y luego en el evento load de ese nuevo webform coloquen lo siguiente      &lt;br /&gt;&lt;font size="2"&gt;       &lt;p&gt;Me.textbox1.text = &lt;/p&gt;       &lt;font size="2"&gt;Request.QueryString(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Id&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;De este ejemplo pueden ver algo interesante y es que si escriben algo en el textbox y llaman al popup, verán que no se traspasa lo que escribieron, pero si lo vuelven a apretar verán que ahora si se traspasa el texto del primer webForm al segundo, esto se debe a que el script q levanta el popup se “carga” con el textbox en un postback posterior, es decir cuando oprimen el botón por primera vez están llamando al segun form con el estado Anterior del textbox , por que el orden de ejecución hace que primero se ejecute la secuencia jscript en el cliente y luego se produzca el postback que recién cargará el contenido del textbox en la llamada al webform2. Este detalle es muy importante por que si no lo manejan bien ocurrirá lo q en este ejemplo, un desfase de un postback en los datos que le pasan al segundo webform. Para arreglar esto hagan lo siguiente, coloquen el autopostback del textbox en true y listo, al salir del textbox con un tab ocurrira un postback&amp;#160; y se cargará correctamente el jscript, luego oprimen el boton y listo ya funciona bien.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Utilizando el evento OnLoad de la pagina cuando &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Vamos a agregar un nuevo WebForm al proyecto&amp;#160; y haremos casi lo mismo que en el otro caso pero utilizaremos el evento click del boton del lado del servidor&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;al nuevo webform añadan&amp;#160; un textbox y un boton como en el anterior caso &lt;/li&gt;    &lt;li&gt;hagan 2 clics al boton y en el evento clic coloquen lo siguiente      &lt;br /&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;         &lt;p&gt;Dim&lt;/p&gt;       &lt;/font&gt;&lt;font color="#000000" size="2"&gt;s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;        &lt;p&gt;s = &lt;/p&gt;       &lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;window.open('webform2.aspx?&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; _          &lt;br /&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;&amp;amp;id=&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.TextBox1.Text &amp;amp; _          &lt;br /&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;','','width=860,height=520,left=40,top=100,resizable=yes,status=yes,scrollbars=yes');&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;        &lt;p&gt;&lt;/p&gt;       &lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ss &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;&amp;lt;script language =&amp;quot;&amp;quot;jscript&amp;quot;&amp;quot;&amp;gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; s &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;/font&gt;           &lt;p&gt;&lt;/p&gt;       &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;       &lt;p&gt;&lt;/p&gt;       &lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Pop &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ClientScriptManager = Page.ClientScript          &lt;br /&gt;Pop.RegisterStartupScript(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.GetType(), &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;OnLoad&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, ss)&lt;/font&gt;&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Eso es todo, ahora ejecuten este nuevo webform carguen algo en el tetbox y opriman el botón, esta vez todo funciona perfectamente sin necesidad de colocar el autopostback en el textbox, este es un ejemplo bien sencillo, pero sirve para darle una mirada a los popups, &lt;strong&gt;Cuando estén usando AJAX&lt;/strong&gt; la línea :Pop.RegisterStartupScript(&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.GetType(), &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;OnLoad&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, ss) deben cambiarla por :&lt;font size="2"&gt;&lt;/font&gt; &lt;/font&gt;    &lt;p&gt;ScriptManager.RegisterStartupScript(&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;.GetType, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;OnLoad&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;, sScript, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;bueno eso es todo espero le sirva a alguien&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;salu2      &lt;br /&gt;Sergio&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-1513020996427981190?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/1513020996427981190/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2009/09/web-popups-con-aspnet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1513020996427981190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1513020996427981190'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2009/09/web-popups-con-aspnet.html' title='web Popups con aspnet'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-5224440572467841338</id><published>2009-03-20T11:23:00.001-04:00</published><updated>2009-03-20T11:23:49.708-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP y VB6'/><title type='text'>Aplicaciones IIS de ASP en XP</title><content type='html'>&lt;p&gt;Hola &lt;/p&gt;  &lt;p&gt;No se si alguien aun tiene o usa o ha usado &amp;quot;aplicaciones IIS &amp;quot; que eran un tipo de proyecto de desarrollo ASP en el Visual Studio 6 , en esas &amp;#233;pocas se trabajaba con Windows 98 y el IIS daba sus primeros pasos. Bueno &amp;quot;ahora&amp;quot; despu&amp;#233;s de mucho tiempo me toc&amp;#243; revisar esa aplicaci&amp;#243;n y obviamente ya no uso Windows 98, ahora aun estoy utilizando XP, ya se q es un poco viejo pero.. aun no lo cambio.&lt;/p&gt;  &lt;p&gt;Bien la cuesti&amp;#243;n es que si deben trabajar con este tipo de proyectos en el IIS 6 y XP necesitar&amp;#225;n un peque&amp;#241;o truco para configurar la ejecuci&amp;#243;n de estos proyectos desde el entorno del VS 6 en modo de depuraci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Cuando ejecutan la aplicacion IIS desde el entorno de desarrollo, obtendr&amp;#225;n el error&lt;/p&gt;  &lt;p&gt;Server object, ASP 0178 (0x800A0005) The call to Server.CreateObject failed while checking permissions. Access is denied to this object&lt;/p&gt;  &lt;p&gt;Y esto se debe a que&amp;#160; el usuario IUSR_&amp;lt;machinename&amp;gt;&amp;#160; no tiene los permisos necesarios para acceder a vb6.exe que es el server DCOM, Como No hay una entrada DCOM para el vb6.exe en windows 2000, XP y superiores, se aplican los permisos default, los cuales son solamente permiten el acceso para el usuario SYSTEM y el que lanza el procesos, que no es el mismo usuario que intenta acceder al server DCOM. Por tanto para lograr el acceso hay que crear una entrada DCOM para vb6 y luego dar permisos, el proceso exacto se los describo a continuaci&amp;#243;n&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Crear entrada DCOM para &amp;quot;VB ASP Debugging&amp;quot; &lt;/em&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Colocar las siguientes instrucciones en un archivo texto de nombre Vbaspdbg.reg     &lt;br /&gt;      &lt;pre class="in_text"&gt;REGEDIT4&lt;br /&gt;[HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}]&lt;br /&gt;@=&amp;quot;VB ASP Debugging&amp;quot;&lt;br /&gt;[HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}\LocalServer32]&lt;br /&gt;@=&amp;quot;vb6.exe&amp;quot;&lt;br /&gt;[HKEY_CLASSES_ROOT\AppID\vb6.exe]&lt;br /&gt;&amp;quot;AppId&amp;quot;=&amp;quot;{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}&amp;quot;&lt;/pre&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Luego hagan 2 clics a ese archivo desde el Windows explorer y listo, ya tenemos entrada DCOM para vb6.exe&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Demos permisos en XP &lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;Abrir a Components&amp;#160; Services o Servicios de Componentes que se encuentra en boton inicio / Herramientas administrativas / Servicios de componentes&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Expandir los nodos hasta llegar a &amp;quot;&lt;em&gt;VB ASP Debugging&lt;/em&gt;&amp;quot; esto es Servicios de componentes / Equipos / Mi PC / Configuracion DCOM &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;Como en la figura siguiente&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6chgYcbG6a4/ScO00uc19EI/AAAAAAAAAFs/7KtzG8lcyEQ/s1600-h/ServicioDecomponentes%5B6%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="325" alt="ServicioDecomponentes" src="http://lh4.ggpht.com/_6chgYcbG6a4/ScO02rbG55I/AAAAAAAAAFw/dF3xqhFrtJI/ServicioDecomponentes_thumb%5B4%5D.jpg?imgmax=800" width="421" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Luego hagan clic derecho a &lt;em&gt;VB ASP Debugging &lt;/em&gt;y en las propiedades vayan a Seguridad y a permisos de acceso , luego incluyan al grupo de usuarios Todos y asignenle todos los permisos como en la figura siguiente&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6chgYcbG6a4/ScO037bB-NI/AAAAAAAAAF0/Mvthvf6ndL8/s1600-h/ServicioDecomponentesII%5B4%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="356" alt="ServicioDecomponentesII" src="http://lh3.ggpht.com/_6chgYcbG6a4/ScO05fm2u9I/AAAAAAAAAF4/XqVCgVodtZE/ServicioDecomponentesII_thumb%5B2%5D.jpg?imgmax=800" width="423" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Apliquen los cambios y reinicien la m&amp;#225;quina y eso es todo&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Se que no es un tema muy actual a tratar pero como a mi me ocurri&amp;#243; seguramente a alguien mas le puede ocurrir que necesite modificar y depurar una aplicaci&amp;#243;n ASP antigua del tipo &amp;quot;IIS Aplicattion&amp;quot;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hasta pronto&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sergio&lt;br /&gt;  &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-5224440572467841338?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/5224440572467841338/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2009/03/aplicaciones-iis-de-asp-en-xp.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5224440572467841338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5224440572467841338'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2009/03/aplicaciones-iis-de-asp-en-xp.html' title='Aplicaciones IIS de ASP en XP'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6chgYcbG6a4/ScO02rbG55I/AAAAAAAAAFw/dF3xqhFrtJI/s72-c/ServicioDecomponentes_thumb%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7087655437489782864</id><published>2009-01-24T17:25:00.002-04:00</published><updated>2009-03-08T18:30:36.753-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musica'/><title type='text'>Death magnetic</title><content type='html'>&lt;p&gt;hola&lt;/p&gt;&lt;p&gt;Este es el primer post que coloco con un tema que no sea programación pero creo q vale la pena variar, hace unos meses metallica lanzó el Death Magnetic, la verdad no estaba muy animado en comprarlo, pero como metallica es una de mis bandas favoritas lo hice por puro lealtad jeje, la verdad que al comienzo me parecio bueno, pero no tanto, de hecho mejor q el St Anger que es un disco malisimo (cualquier cosa es mejor ), con un par de temas que se salvan, la cosa es que cada vez que escuchaba el disco , descubria nuevos sonidos, riffs, acordes, armonías que parecen no terminar de aparecer, es un disco espectacular!!!!  parece que gracias a la salida de bob rock como productor y con la ayuda de Rick Rubin, se han vuelto a encontrar en su sonido, ahora metallica está en el camino de recuperar lo  que todos los fans esperábamos desde el 90!!!, buen trash metal!!! , bueno al fin llegó después de 20 años, asi que vayan a comprar ese disco que está excelente, 1000 veces mejor de lo que esperaba, con  razón cambiaron la tipografía a su antiguo formato, y retomaron los colores de blanco y negro igual q en el .. and justice, como si dijeran vamos a recomenzar desde donde nos perdimos jeje&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_6chgYcbG6a4/SXuHUXPjFKI/AAAAAAAAAFk/JaTu7SVuixI/s1600-h/DeadMagnetic1%5B5%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="244" alt="DeadMagnetic1" src="http://lh3.ggpht.com/_6chgYcbG6a4/SXuHWSUGlGI/AAAAAAAAAFo/IkdEmS33vfg/DeadMagnetic1_thumb%5B3%5D.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;la crítica q todos le hacen al disco es que parecía que tiende a reeditar sonidos de los discos viejos, pues bien para mi eso no es ningún pecado, mas bien es lo que todos queriamos!!  Es raro ver las criticas a metallica siempre los criticaron por que sus discos cambian mucho uno de otro, ahora le dan por que este tiende a volver a las raices jejeje quien entiende a la gente???&lt;/p&gt;&lt;p&gt;El primer tema comienza lento con los latidos de un corazón y pronto comienza tomar fuerza con unos riffs muy buenos, desde el comienzo toma la atención y no la pierde para nada, por mas q dure 7 minutos, para mi este es uno de los mejores temas del disco y sin lugar a dudas uno de los mejores de metallica. Otro tema que es uno de mis favoritos del disco es Broken, beat and scarred, para mi tiene mucho del and justice, es excelente, luego esta la canción q dicen se parece a fade to black, The day that neveer comes, la verdad para mi se parece mas a One por la forma en la que comienza y va tomando fuerza hasta terminar en una locura trashera de solos impresionantes, un temón!!! Luego aparece All nightmare long que si bien tiene una intro q para mi no es muy llamativa, un minuto después cambia y continua una línea excelente. Unforgiven III está muy buena, mejor que la II para mi, pero no llega a superar  a la primera. Al final se animaron a volver a intentar un instrumental que está muy bueno, a excepción de un par de acordes que a mi personalmente no me gustan mucho, es un tema realmente bueno y se llama Suicide &amp;amp; Redemption, la ultima canción My Apocalypse, me trae todo el recuerdo de Damage Inc, por la velocidad y fuerza, un excelente tema para cerrar el disco, la canción que menos me gusta es Cynade, la verdad el coro no me gusta para nada, pero la intro , los solos son excelentes, solo metieron la para en el coro.&lt;/p&gt;&lt;p&gt;bueno como sea, compren este disco no se van a arrepentir&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hipersonica.com/2008/10/01-metallica-death-magnetic"&gt;http://www.hipersonica.com/2008/10/01-metallica-death-magnetic&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://es.wordpress.com/tag/death-magnetic/"&gt;http://es.wordpress.com/tag/death-magnetic/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;chau&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7087655437489782864?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7087655437489782864/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2009/01/dead-magnetic.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7087655437489782864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7087655437489782864'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2009/01/dead-magnetic.html' title='Death magnetic'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6chgYcbG6a4/SXuHWSUGlGI/AAAAAAAAAFo/IkdEmS33vfg/s72-c/DeadMagnetic1_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-1288280861263303372</id><published>2008-12-20T23:18:00.002-04:00</published><updated>2009-03-08T18:33:45.014-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Acceso a datos independiente del proveedor</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;Algo que aunque no siempre sea aplicable a la realidad, todos deseamos, es poder tener un programa al cual le podamos cambiar de BD  y que todo siga funcionando de forma automática sin mayores traumas en el código fuente, sin mucha charla les comento que desde el framework 2.0 esto es posible con ado.net a través de las clases que se encuentran en el espacio de nombre System.Data.Common&lt;/p&gt;&lt;p&gt;Como es el procedimiento? &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Recuperar el proveedor de datos y la cadena de conexión de algún lugar y crear un  &lt;span style="font-size:85%;"&gt;DbProviderFactory&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Utilizar ese proveedor para crear dataadapters a través de &lt;span style="font-size:85%;"&gt;DbProviderFactory.CreateDataAdapter()&lt;/span&gt; &lt;/li&gt;&lt;li&gt;usar los dataadapters &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Creando la conexión&lt;br /&gt;&lt;/strong&gt;Voy a ser muy simplista solo para ordenar un poco el código y estructurarlo, depende de ustedes donde colocan los strings que devuelven los siguientes métodos&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Shared&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; GetProvider() &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"System.Data.SqlClient"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Shared&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; GetCnnString() &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"Data Source=MiSQLsrv;Initial Catalog=MiBD;Integrated Security=True"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;las funciones anteriores deberían estar haciendo acceso al app.config o algún archivo texto del cual recuperen las cadenas que arriba las muestro como constantes&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Ahora haremos uso de ellas, creando una conexión a partir del proveedor, de forma que será la conexión indicada para el proveedor cuya descripción la obtuvimos de la función GetProvider()&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; sProv &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; = GetProvider()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; sCnn &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; = GetCnnString()&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;p&gt;Dim &lt;/p&gt;&lt;span style="font-size:85%;color:#000000;"&gt;oCnn &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt; DbConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; = nothing&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; f &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; DbProviderFactory = DbProviderFactories.GetFactory(sProv)&lt;br /&gt;oCnn= f.CreateConnection()&lt;br /&gt;oCnn.ConnectionString = sCnn&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;Ahora que ya tenemos la conexion debemos generar los comandos para ejecutar una consulta de selección.&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;p&gt;Dim&lt;/p&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#000000;"&gt;cmd &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt; DbCommand = oCnn.CreateCommand()&lt;/span&gt;&lt;/span&gt; &lt;p&gt;cmd.CommandText = &lt;/p&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"Select * from miTabla where Id=1"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;cmd.CommandType = CommandType.Text&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:85%;"&gt;oCnn.Open()&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; dr &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; DbDataReader = cmd.ExecuteReader&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:85%;"&gt; ID &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Integer=0&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:85%;"&gt; sNombres &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; String=""&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;If&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; dr.HasRows &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;dr.Read()&lt;br /&gt;dim ID as integer = dr(&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"Id"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;)&lt;br /&gt;sNombres = dr(&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"Nombres"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;If&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;p&gt;dr.Close()&lt;br /&gt;oCnn.Close()&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Como vieron utilizo la conexión para generar un comando, el cual estará en función del proveedor, luego le doy el texto de la consulta y luego obtengo un datareader desde el cual descargo los datos a variables, finalmente cierro el dataReader y la conexión&lt;/p&gt;&lt;p&gt;Como ven el tema de la independencia del proveedor no es cosa del otro mundo si no mas bien es bien facil. En otro articulo (que supongo será este año) les mostraré como usar dataadapters para grabar datos en una estructura similar a esta.&lt;/p&gt;&lt;p&gt;Espero le sirva a alguien esto&lt;/p&gt;&lt;p&gt;Hasta pronto y Felices fiestas!!!&lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;Sergio&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-1288280861263303372?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/1288280861263303372/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/12/acceso-datos-independiente-del.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1288280861263303372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1288280861263303372'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/12/acceso-datos-independiente-del.html' title='Acceso a datos independiente del proveedor'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7200192806705892476</id><published>2008-11-05T17:11:00.001-04:00</published><updated>2008-11-05T17:11:32.903-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Error al asociar automáticamente al proceso aspnet_wp.exe</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;Que error mas aparatoso pero como normalmente ocurre un error bien ca&amp;#243;tico es f&amp;#225;cil de solucionar, por que cada vez me convenzo m&amp;#225;s que los errores peque&amp;#241;itos, esos que se los hallan despu&amp;#233;s de meses de que el sistema est&amp;#225; funcionando,&amp;#160; son los mas dif&amp;#237;ciles de encontrar y probablemente de arreglar, bueno volviendo al caso&lt;/p&gt;  &lt;p&gt;El mensaje de error se produce al darle el F5 para correr en modo depuraci&amp;#243;n al VS 2003, ni bien termina la compilaci&amp;#243;n y est&amp;#225; por levantar el IE sale un message box que dice No se puede iniciar la depuraci&amp;#243;n&amp;#160; y en la cajita de mensajes del VS sale lo siguiente&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Error al asociar autom&amp;#225;ticamente al proceso aspnet_wp.exe en el equipo&amp;#160; XXXX C&amp;#243;digo de error 0x8013134b.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Bien la soluci&amp;#243;n para esta vaina es muy simple, habr&amp;#225;n el IIS vean las propiedades de la aplicaci&amp;#243;n (del directorio virtual) escojan la paleta ASP.NET y cambien la versi&amp;#243;n de ASP.NET al framework 1.1, pues resulta que cuando el Framework 2.0 se halla instalado en la m&amp;#225;quina este se est&amp;#225; asumiendo como framework default y es ah&amp;#237; cuando el VS2003 no sabe por donde disparar y por tanto no puede asociarse con el proceso aspnet_wp , ahi les paso una fotito de donde cambiar la versi&amp;#243;n del framework en el IIS&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_6chgYcbG6a4/SRIL88uaQ7I/AAAAAAAAAFc/fDoMNSoFHgo/s1600-h/ASPNET%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="236" alt="ASPNET" src="http://lh4.ggpht.com/_6chgYcbG6a4/SRIMAEvlPfI/AAAAAAAAAFg/bSIJKjGCc2s/ASPNET_thumb%5B1%5D.jpg?imgmax=800" width="389" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Bien eso es todo, facil no?&lt;/p&gt;  &lt;p&gt;Salu2   &lt;br /&gt;Sergio&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7200192806705892476?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7200192806705892476/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/11/error-al-asociar-automticamente-al.html#comment-form' title='14 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7200192806705892476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7200192806705892476'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/11/error-al-asociar-automticamente-al.html' title='Error al asociar automáticamente al proceso aspnet_wp.exe'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6chgYcbG6a4/SRIMAEvlPfI/AAAAAAAAAFg/bSIJKjGCc2s/s72-c/ASPNET_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-5604452956450210672</id><published>2008-10-31T13:06:00.002-04:00</published><updated>2008-11-17T10:05:11.524-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Eliminando el Caché de paginas</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;Después de bastante tiempo coloco algo en el blog, bueno esto es a raíz de que ando "soqueteado" de trabajo... ni caso , es mejor que sobre a que falte.&lt;/p&gt;&lt;p&gt;Resulta que hace poco he estado teniendo el problema de que las paginas que muestra el IE salen del caché, esto es un desastre puesto que en algunas de ellas se necesita tenerlas siempre actualizadas desde el server, bueno a raíz de ello he encontrado una etiqueta html que soluciona el problema pero a medias, hay que hacer un pequeño truco adicional, que se los cuento ahora&lt;/p&gt;&lt;p&gt;La etiqueta es: &lt;/p&gt;&lt;p&gt;&amp;lt;META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"&amp;gt;&lt;/p&gt;&lt;p&gt;Se debe colocar en la sección de &amp;lt;head&amp;gt;  de la página&lt;/p&gt;&lt;p&gt;Pero hay un bug interesante en este tema, resulta que la interpretación de las paginas es de arriba hacia abajo y resulta también que las paginas no se "cachean" hasta que llega a cargar 32K, por tanto como siempre se coloca la etiqueta en el head de la pagina, puede no lograrse los 32K y por tanto la pagina no se cachea y por tanto la etiqueta queda sin efecto , para solucionar esto lo que hay que hacer es colocar al final de la pagina y antes del &amp;lt; / HTML&amp;gt;  otro grupo  de etiquetas como este&lt;/p&gt;&lt;p&gt;&amp;lt; HEAD &amp;gt;&lt;br /&gt;&amp;lt;META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"&amp;gt;&lt;br /&gt;&amp;lt; / HEAD&amp;gt;&lt;/p&gt;&lt;p&gt;Con eso debería evitarse el cacheo de paginas&lt;/p&gt;&lt;p&gt;salu2 y espero les sirva&lt;br /&gt;Sergio &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-5604452956450210672?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/5604452956450210672/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/10/eliminando-el-cach-de-paginas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5604452956450210672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5604452956450210672'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/10/eliminando-el-cach-de-paginas.html' title='Eliminando el Caché de paginas'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-5725530961073163515</id><published>2008-09-30T16:24:00.001-04:00</published><updated>2008-10-04T12:26:01.643-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSS'/><title type='text'>Chau VSS hola TFS</title><content type='html'>&lt;p&gt;Bueno aparentemente como todo con Microsoft, el VSS ha evolucionado a una nueva herramienta llamada Team Foundation Server que ya tiene una versi&amp;#243;n para el VS2005, pero que en la nueva versi&amp;#243;n del Visual Studio se libera con mucha mas potencia.&lt;/p&gt;  &lt;p&gt;Aun no tengo la oportunidad de utilizarlo, por que la verdad estoy con tanto trabajo que incluso deje de escribir en este blog desde hace un par de meses, bueno como sea he estado leyendo sobre el tema y aparentemente est&amp;#225; genial,&amp;#160; les paso algunos links para que puedan leer mayor detalle, por ah&amp;#237; y me comentan si tienen experiencia con &amp;#233;l, por que pronto me tocar&amp;#225; cambiarme al VS2008 y desde lego aprovechar&amp;#233; para cambiar a TFS.&lt;/p&gt;  &lt;p&gt;Estos links pueden ser muy &amp;#250;tiles para conocer a TFS y migrar desde el fiel VSS&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-ar/vsts2008/products/bb933743.aspx"&gt;Por que migrar seg&amp;#250;n microsoft&lt;/a&gt; a Team Foundation Server&lt;/p&gt; &lt;a href="http://msdn.microsoft.com/es-ar/vsts2008/products/bb933743.aspx"&gt;Preparacion para migrar a FS&lt;/a&gt;   &lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-ar/library/ms181247.aspx"&gt;Migrando de Visual Source Safe a Team Foundation Server&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/akashmaheshwari/articles/474260.aspx"&gt;Otro mas de migraci&amp;#243;n&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=87E1FFBD-A484-4C3A-8776-D560AB1E6198&amp;amp;displaylang=en"&gt;Descarga del a Versio n de TFS para VS2005&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Bueno hasta pronto&lt;/p&gt;  &lt;p&gt;Salu2    &lt;br /&gt;Sergio&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-5725530961073163515?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/5725530961073163515/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/09/chau-vss-hola-tfs.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5725530961073163515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5725530961073163515'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/09/chau-vss-hola-tfs.html' title='Chau VSS hola TFS'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4234631392079398006</id><published>2008-07-04T10:58:00.002-04:00</published><updated>2008-11-17T10:06:41.894-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Novedades del Sql2008</title><content type='html'>&lt;p&gt;Aquí les dejo un link a un articulo en ingles sobre las nuevas capacidades programáticas del sql 2008&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-gb/library/cc721270(SQL.100).aspx"&gt;http://msdn.microsoft.com/en-gb/library/cc721270(SQL.100).aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;Sergio&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4234631392079398006?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4234631392079398006/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/07/novedades-del-sql2008.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4234631392079398006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4234631392079398006'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/07/novedades-del-sql2008.html' title='Novedades del Sql2008'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4669620092419492982</id><published>2008-06-20T12:16:00.001-04:00</published><updated>2008-06-20T12:16:21.369-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Búsquedas en Colecciones . Cual es la mejor forma ?</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;Hace unos d&amp;#237;as atr&amp;#225;s tuve la necesidad implementar b&amp;#250;squedas sobre colecciones gen&amp;#233;ricas y comenc&amp;#233; a buscar alg&amp;#250;n m&amp;#233;todo que me permita buscar en una colecci&amp;#243;n gen&amp;#233;rica tipo List(of T)a lo que me encontr&amp;#233; el m&amp;#233;todo find, pero con muy poca ayuda acerca de &amp;#233;l, recurr&amp;#237; al siempre &amp;#250;til grupo de noticias en el cual recib&amp;#237; la ayuda que necesitada de uno de los amigos que ah&amp;#237; siempre est&amp;#225;n dispuestos a colaborar. &lt;/p&gt;  &lt;p&gt;Bien en resumen despu&amp;#233;s de ver que no era dif&amp;#237;cil pero si un poco rayado el m&amp;#233;todo de implementar el comando find de la colecci&amp;#243;n ya que utiliza punteros a funciones y variables globales al formulario, pens&amp;#233; utilizar otra clase que es la SortedList(of TKey, TValue) que vendr&amp;#237;a a ser como una colecci&amp;#243;n gen&amp;#233;rica ordenada cuya principal caracter&amp;#237;stica es su f&amp;#225;cil y limpia implementaci&amp;#243;n. Ten&amp;#237;a tambi&amp;#233;n la opci&amp;#243;n de utilizar el viejo for para una b&amp;#250;squeda secuencial en la colecci&amp;#243;n pero esto me parec&amp;#237;a algo anticuado y muy poco elegante, y fue por esta raz&amp;#243;n que inicie mi investigaci&amp;#243;n acerca de las formas de b&amp;#250;squeda en una colecci&amp;#243;n. &lt;/p&gt;  &lt;p&gt;Despu&amp;#233;s de hacer pruebas con 1000000 de objetos en una colecci&amp;#243;n list(of T) y en otra SortedList(of TKey, TValue)&amp;#160; resulta que la mejor manera de trabajar con gran cantidad de objetos es&amp;#160; el viejo for o el for each, si aunque no me crean es as&amp;#237;, pues resulta que si bien el SortedList(of TKey, TValue)&amp;#160; es mucho mas r&amp;#225;pido a la hora de hacer la b&amp;#250;squeda, es tremendamente ineficiente en el momento de la carga, en mi caso, el mill&amp;#243;n de objetos los carg&amp;#243; en 12 minutos!!! si, 12 minutos, mientras que la carga en una colecci&amp;#243;n list(of T) tard&amp;#243; 3 segundos!!! incre&amp;#237;ble la diferencia no?. Eso si la b&amp;#250;squeda en el sortedlist no llegaba a un milisegundo mientras que en la list(of T) tardaba 80milisegundos con los for y entre 900 y 1100 milisegundos con el m&amp;#233;todo find, la verdad que me sorprendi&amp;#243; el resultado. Las pruebas las hice en una notebook pIV&amp;#160; de2.4Ghz con 512MB de memoria, me asegur&amp;#233; de buscar el &amp;#250;ltimo elemento de la colecci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Todos son muy f&amp;#225;ciles de comprender, tal vez el mas &amp;quot;vuelteado&amp;quot; es el que usa el m&amp;#233;todo find ya que utiliza variables globales al formulario y un objeto predicado que viene a ser una especie de puntero a la funci&amp;#243;n de b&amp;#250;squeda.&lt;/p&gt;  &lt;p&gt;Bien les paso mi c&amp;#243;digo con el que hice las pruebas por si quieren ustedes ver la implementaci&amp;#243;n de estos m&amp;#233;todos de b&amp;#250;squeda &lt;/p&gt;  &lt;p&gt;Haremos un Winform que lo llamaremos &lt;font color="#000000"&gt;frmColeccionesGenericas&lt;/font&gt; en el cual colocaremos 4 botones cada uno de ellos con un label debajo para mostrar resultados (dejen los nombres por default), Cada bot&amp;#243;n ser&amp;#225; un tipo de carga-b&amp;#250;squeda en una colecci&amp;#243;n. Luego vayan al codebehind y copien en &amp;#233;l, el siguiente listado que es del formulario completo&lt;/p&gt; &lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     &lt;p&gt;Public&lt;/p&gt;     &lt;font color="#000000" size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Class&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; frmColeccionesGenericas&lt;/font&gt;&lt;/font&gt;       &lt;p&gt;&lt;/p&gt;     &lt;font color="#008000" size="2"&gt;'variable global de formulario a usarse con el m&amp;#233;todo find        &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; s_NombreABuscar &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000"&gt;'variable global &amp;#180;Nro de elementos de la coleccion&lt;/font&gt;       &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; nElementos &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 1000000&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000"&gt;'con el m&amp;#233;todo find      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Button1_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Object, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; Button1.Click&lt;/font&gt;   &lt;p&gt;&lt;/p&gt; &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; ini &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date    &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; fin &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date    &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; diff &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; TimeSpan&lt;/font&gt;   &lt;p&gt;&lt;/p&gt; &lt;font color="#008000" size="2"&gt;'---------------------carga la coleccion&lt;/font&gt;  &lt;p&gt;&lt;/p&gt; &lt;font size="2"&gt;   &lt;p&gt;ini = Now      &lt;br /&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; l &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Of&lt;/font&gt;&lt;font size="2"&gt; cPersona)      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; i &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; nElementos&lt;/font&gt;     &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; l.Add(&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; cPersona(i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;321&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i))&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;fin = Now&lt;/p&gt;    &lt;p&gt;diff = fin.Subtract(ini)&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label1.Text = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Carga :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'---------------------carga la coleccion      &lt;br /&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;' Crear un objeto Predicate que apuntar&amp;#225; a la funci&amp;#243;n fBuscador&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; fBuscador &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; Predicate(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Of&lt;/font&gt;&lt;font size="2"&gt; cPersona)(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;AddressOf&lt;/font&gt;&lt;font size="2"&gt; Buscar)&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'variable de formulario      &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;s_NombreABuscar = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; nElementos&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'----busqueda      &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;ini = Now      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; p &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; cPersona = l.Find(fBuscador)      &lt;br /&gt;fin = Now&lt;/font&gt;     &lt;p&gt;diff = fin.Subtract(ini)&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label1.Text &amp;amp;= vbCrLf &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Busqueda :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;&lt;font size="2"&gt; Buscar(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; persona &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; cPersona) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Boolean&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; persona.Nombre.ToLower = s_NombreABuscar.ToLower &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;Return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Else&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;Return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;False&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000"&gt;'con el sortedlist        &lt;br /&gt;&lt;/font&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Button2_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Object, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; Button2.Click&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; ini &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; fin &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; diff &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; TimeSpan&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'---carga coleccion ordenada&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; l &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; SortedList(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Of&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, cPersona)      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; p &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; cPersona      &lt;br /&gt;ini = Now       &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; i &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; nElementos&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;p = &lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; cPersona(i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;321&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i)&lt;/font&gt;&lt;/blockquote&gt;    &lt;blockquote&gt;     &lt;p&gt;l.Add(p.Nombre, p)&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;fin = Now      &lt;br /&gt;diff = fin.Subtract(ini)&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label2.Text = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de carga :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'---busca en coleccion &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;ini = Now      &lt;br /&gt;p = l(&lt;/p&gt;   &lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; nElementos)      &lt;br /&gt;fin = Now       &lt;br /&gt;diff = fin.Subtract(ini)       &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label2.Text &amp;amp;= vbCrLf &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Busqueda :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000"&gt;'con un for        &lt;br /&gt;&lt;/font&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Button3_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Object, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; Button3.Click&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; ini &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; fin &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; diff &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; TimeSpan&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'----carga coleccion&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; l &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Of&lt;/font&gt;&lt;font size="2"&gt; cPersona)      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; p &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; cPersona      &lt;br /&gt;ini = Now&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; i &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; nElementos&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;p = &lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; cPersona(i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;321&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i)        &lt;br /&gt;l.Add(p)&lt;/font&gt;&lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;fin = Now      &lt;br /&gt;diff = fin.Subtract(ini)&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label3.Text = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Carga :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'---busca elemento      &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;ini = Now      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; nElementos      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; i &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; nElementos&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;p = l(i)        &lt;br /&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; p.Nombre = s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Exit&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;fin = Now      &lt;br /&gt;diff = fin.Subtract(ini)&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label3.Text &amp;amp;= vbCrLf &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Busqueda :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000"&gt;'con un for each        &lt;br /&gt;&lt;/font&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; Button4_Click(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Object, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; Button4.Click&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; ini &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; fin &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Date      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; diff &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; TimeSpan      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; l &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Of&lt;/font&gt;&lt;font size="2"&gt; cPersona)      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; p &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; cPersona      &lt;br /&gt;ini = Now       &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; i &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;To&lt;/font&gt;&lt;font size="2"&gt; nElementos&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;p = &lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; cPersona(i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;321&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; i)        &lt;br /&gt;l.Add(p)&lt;/font&gt;&lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;fin = Now      &lt;br /&gt;diff = fin.Subtract(ini)&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label4.Text = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Carga :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;ini = Now      &lt;br /&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Juan &amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; nElementos      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Each&lt;/font&gt;&lt;font size="2"&gt; p &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;In&lt;/font&gt;&lt;font size="2"&gt; l&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; p.Nombre = s &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Exit&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;For        &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/blockquote&gt; &lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Next&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;fin = Now      &lt;br /&gt;diff = fin.Subtract(ini)       &lt;br /&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.Label4.Text &amp;amp;= vbCrLf &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Tiempo de Busqueda :&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Minutes &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Seconds &amp;amp; &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;:&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &amp;amp; diff.Milliseconds&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000"&gt;'CLASE para llenar la coleccion        &lt;br /&gt;&lt;/font&gt;Class&lt;/font&gt;&lt;font size="2"&gt; cPersona&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; nCod &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; sNombre &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; sTelefono &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Property&lt;/font&gt;&lt;font size="2"&gt; Cod() &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Get&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Return&lt;/font&gt;&lt;font size="2"&gt; nCod&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Get      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Set&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;nCod = value&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Set      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Property&lt;/font&gt;&lt;/blockquote&gt; &lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Property&lt;/font&gt;&lt;font size="2"&gt; Nombre() &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Get&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;Return&lt;/font&gt;&lt;font size="2"&gt; sNombre&lt;/font&gt;&lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Get      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Set&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;sNombre = value&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Set      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Property&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Property&lt;/font&gt;&lt;font size="2"&gt; Telefono() &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Get&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;Return&lt;/font&gt;&lt;font size="2"&gt; sTelefono&lt;/font&gt;&lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Get      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Set&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;     &lt;blockquote&gt;     &lt;p&gt;sTelefono = value&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Set      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Property&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; n_Cod &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; s_Nombre &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; s_Telefono &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;     &lt;p&gt;nCod = n_Cod      &lt;br /&gt;sTelefono = s_Telefono       &lt;br /&gt;sNombre = s_Nombre       &lt;br /&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;&lt;/font&gt;       &lt;p&gt;&lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Class&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Class&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;Bien eso es todo por hoy &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;Salu2        &lt;br /&gt;Sergio&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4669620092419492982?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4669620092419492982/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/bsquedas-en-colecciones-cual-es-la.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4669620092419492982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4669620092419492982'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/bsquedas-en-colecciones-cual-es-la.html' title='Búsquedas en Colecciones . Cual es la mejor forma ?'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-934457974583039620</id><published>2008-06-18T08:51:00.001-04:00</published><updated>2008-06-18T08:52:42.120-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>localhost no funciona pero si la ip 127.0.0.1</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;Hace unos d&amp;#237;as tuve un problema que por poco y me hace reinstalar la computadora, pero gracias a amigos del grupo de noticias de aspnet (microsoft.public.es.dotnet.aspnet) logr&amp;#233; corregir el problema. Resulta que sin saber como una ma&amp;#241;ana el IIS amaneci&amp;#243; sin ganas de trabajar, cualquier direcci&amp;#243;n que colocaba en el IE como &lt;a href="http://localhost/loQueSea"&gt;http://localhost/loQueSea&lt;/a&gt; no llegaba a ninguna parte y despu&amp;#233;s de esperar un mont&amp;#243;n de tiempo sal&amp;#237;a el mensaje que dec&amp;#237;a que el sitio no estaba disponible o la direcci&amp;#243;n no exist&amp;#237;a, ni siquiera una pagina html ni el sitio por defecto que trae el iis, nada, de nada!! Se me ocurrio intentar con la ip 127.0.0.1 en vez de localhost y resulta que funcion&amp;#243;, todo funcionaba pero con la ip mencionada o con la ip que me daba mi dhcp. Bien despu&amp;#233;s de mas de 2 d&amp;#237;as de buscar como solucionar esto por Internet me respondieron en el grupo de noticias con la soluci&amp;#243;n, la cual consisti&amp;#243; en correr los siguientes comandos &lt;/p&gt;  &lt;p&gt;primero abran una ventana de comandos y en la carpeta C:\Inetpub\AdminScripts, hacer lo siguiente&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;cscript adsutil.vbs set w3svc/1/serverbindings &amp;quot;127.0.0.1:80:localhost&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;luego en la carpeta del framework, C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 hay que correr los siguientes comandos&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;aspnet_regiis -u     &lt;br /&gt;aspnet_regiis -i      &lt;br /&gt;aspnet_regiis -ga NombreDeTuComputadora\ASPNET&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Resumiendo los anteriores comandos todo consisti&amp;#243; en volver a asociar&amp;#160; la ip&amp;#160; con el localhost luego desinstalar el aspnet 2.0 luego volver a instalar y tercero colocarle permisos al usuario aspnet de la m&amp;#225;quina&lt;/p&gt;  &lt;p&gt;aqu&amp;#237; les paso unos linsk que explican los comandos&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d3df4bc9-0954-459a-b5e6-7a8bc462960c.mspx?mfr=true" target="_blank"&gt;Using the Adsutil.vbs Administration Script (IIS 6.0)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/240225/es" target="_blank"&gt;Descripci&amp;#243;n de las herramientas Adsutil y MetaEdit utilizadas para modificar la Metabas&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;y en relaci&amp;#243;n al otro comando&lt;/p&gt;  &lt;div class="title"&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/k6h9cz8h(VS.80).aspx" target="_blank"&gt;Herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe)&lt;/a&gt;&lt;/div&gt;  &lt;div class="title"&gt;&amp;#160;&lt;/div&gt;  &lt;div class="title"&gt;Bueno espero les ayude como a mi&lt;/div&gt;  &lt;div class="title"&gt;Salu2&lt;/div&gt;  &lt;div class="title"&gt;SergioT&lt;!----&gt;&lt;/div&gt; &lt;!--Content type: DocStudio. Transform: devdiv2mtps.xslt.--&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-934457974583039620?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/934457974583039620/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/localhost-no-funciona-pero-si-la-ip.html#comment-form' title='9 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/934457974583039620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/934457974583039620'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/localhost-no-funciona-pero-si-la-ip.html' title='localhost no funciona pero si la ip 127.0.0.1'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6600481032849760317</id><published>2008-06-04T16:30:00.000-04:00</published><updated>2008-06-04T16:36:01.562-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Error en el debuging  ContextSwitchDeadLock</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;Que errorcito fregado este, no se si les sali&amp;#243; alguna vez pero a mi me hizo perder varias horas, antes de divagar en lo que significa por que la verdad es un tema un poco espeso les comento la &amp;quot;soluci&amp;#243;n&amp;quot; &lt;/p&gt;  &lt;p&gt;Hay que apagar un checkbox que corresponde al MDA (managed debug assistant) de nombre&amp;#160; ContextSwitchDeadLock. &lt;/p&gt;  &lt;p&gt;Depurar / Excepciones / Managed Debuging assistants.&lt;/p&gt;  &lt;p&gt;Apaguen el check box correspondiente ContextSwitchDeadLock&lt;/p&gt;  &lt;p&gt;Por default no aparece la opcion de Excepciones en el submenu Debug, si ese es su caso a&amp;#241;adanlo haciendo lo siguiente:&lt;/p&gt;  &lt;p&gt;Vayan a &lt;/p&gt;  &lt;p&gt;Ver / barras de herramientas / Personalizar&lt;/p&gt;  &lt;p&gt;Una vez ah&amp;#237; en el panel izquierdo seleccionen Debug y entre las opciones que aparecen a la derecha estar&amp;#225; Excepciones, tomen la opci&amp;#243;n&amp;#160;&amp;#160; y arrastren hasta el men&amp;#250; debug&lt;/p&gt;  &lt;p&gt;Bien ahora una peque&amp;#241;a explicaci&amp;#243;n de esto, resulta que los MDA son asistentes y ayudas que se utilizan en el debug en coordinaci&amp;#243;n con la CLR , ellos generan mensajes informativos en tiempo de ejecuci&amp;#243;n sobre eventos y por lo que entiendo el error que se produce en este caso es por que el depurador lanza esta excepci&amp;#243;n ya que encuentra hilos de ejecuci&amp;#243;n en la aplicaci&amp;#243;n que se est&amp;#225; depurando que aparentan estar colgados ya que no devuelven ning&amp;#250;n mensaje y el MDA al no conocer el estado genera esta excepci&amp;#243;n.&amp;#160; Por otro lado he leido que es un problema en alg&amp;#250;n componente COM que la aplicaci&amp;#243;n que esta haciendo burreras jeje Al inicio les coloque &amp;#168;Solucion&amp;#168; entre comillas por que si se dan cuenta en realidad el problema no se soluciona pero si se evita que el Debug lance el error, el problema muy probablemente se debe a un componente COM que no est&amp;#225; comunic&amp;#225;ndose correctamente con el MDA y por tanto este lanza la excepci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Bueno en fin ah&amp;#237; va un unos links por si quieren leer mas acerca de este error, que es toda una rareza confusa y si alguien entiende mas de esto y quiere dejarme un comentario, ser&amp;#225; bien venido&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/d21c150d(VS.80).aspx"&gt;http://msdn.microsoft.com/es-es/library/d21c150d(VS.80).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/ms172233(VS.80).aspx"&gt;http://msdn.microsoft.com/es-es/library/ms172233(VS.80).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Salu2   &lt;br /&gt;SergioT&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6600481032849760317?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6600481032849760317/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/error-en-el-debuging.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6600481032849760317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6600481032849760317'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/error-en-el-debuging.html' title='Error en el debuging  ContextSwitchDeadLock'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-8282657183895749724</id><published>2008-06-02T22:12:00.000-04:00</published><updated>2008-06-02T15:54:01.969-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSS'/><title type='text'>Actualizacion para VSS 2005</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Aquí les envio un link para la actualización acumulativa del VSS, en ella se resuelven varios problemas de los cuales uno me ocurrió a mi y es  el hecho del timeout en la descarga y actualización de fuentes vía HTTP cuando los archivos son relativamente grandes&lt;/p&gt;&lt;p&gt;Bien ahí les dejo el link&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=8a1a68d8-db11-417c-91ad-02aab484776b"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=8a1a68d8-db11-417c-91ad-02aab484776b&lt;/a&gt;&lt;/p&gt;&lt;p&gt;En este otro link pueden ver información relacionada con el control de código &lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/richardb/archive/2007/12/11/sourcesafe-2005-update-is-available-for-download.aspx"&gt;http://blogs.msdn.com/richardb/archive/2007/12/11/sourcesafe-2005-update-is-available-for-download.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;salu2&lt;br /&gt;Sergio&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-8282657183895749724?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/8282657183895749724/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/actualizacion-para-vss-2005.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8282657183895749724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8282657183895749724'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/actualizacion-para-vss-2005.html' title='Actualizacion para VSS 2005'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-5827363450332114213</id><published>2008-06-01T03:04:00.001-04:00</published><updated>2008-06-01T03:07:21.981-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSS'/><title type='text'>VSS vía Internet HTTP</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;La versi&amp;#243;n 2005 del Visual SourceSafe tiene la opci&amp;#243;n de poder acceder a una base de datos desde cualquier parte del mundo v&amp;#237;a HTTP, de manera muy f&amp;#225;cil y simple, a continuaci&amp;#243;n les describo como configurar el VSS para poder compartir una BD para permitir el acceso v&amp;#237;a Iinternet.&lt;/p&gt;  &lt;p&gt;Utilizaremos el siguiente escenario un server 2003 en el cual estar&amp;#225; la BD del VSS y nuestra m&amp;#225;quina que ser&amp;#225; un XP,ambas deben tener el VSS instalado. Existen 2 formas de configurar el acceso&amp;#160; desde Internet&amp;#160; uno es con SSL (secure socket layer) y el otro es sin usar SSL, este ultimo es mas f&amp;#225;cil de configurar pero tambi&amp;#233;n menos seguro ya que la informaci&amp;#243;n se traspasa como texto plano y por tanto es susceptible a robo.&lt;/p&gt;  &lt;p&gt;Para ambos tipos de acceso debe tener instalado, configurado y publicado el IIS en una computadora &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Veamos el acceso sin SSL&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Primero que nada se debe compartir la carpeta en la cual se cre&amp;#243; la BD del SourceSafe, para esto solo hay que abrir un explorador de windows y compartir la carpeta, hay que tener en cuenta los permisos de acceso a esa carpeta v&amp;#237;a LAN para los usuarios que vayan a tener el acceso a la base de datos. Supongamos que nuestra base de datos est&amp;#225; en la carpeta D:\ss\MiBD &lt;/li&gt;    &lt;li&gt;&lt;/li&gt;    &lt;li&gt;Ahora que tenemos compartida la BD en la red LAN abramos el administrador de VSS (SSAdmin) y abramos la base de datos pero con la direcci&amp;#243;n UNC&amp;#160; &lt;a href="file://\\MiMaquina\MiBD"&gt;\\MiMaquina\MiBD&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;/li&gt;    &lt;li&gt;Una vez abramos la BD con la direcci&amp;#243;n UNC se habilitar&amp;#225; la opci&amp;#243;n Servidor \Configuraci&amp;#243;n, entremos a esa opci&amp;#243;n y checkemos a &amp;quot;Habilitar SourceSafe para este equipo&amp;quot; y tambien la opci&amp;#243;n &amp;quot;Habilitar SourceSafe Internet para esta base de datos&amp;quot; a continuaci&amp;#243;n coloquemos la IP o el nombre DNS del servidor web del equipo , que se supone tiene el IIS configurado y funcionando.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://lh4.ggpht.com/stardio/SEJJQPX9X5I/AAAAAAAAACo/WkgciSetZvU/s1600-h/VSShttp1%5B4%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="416" alt="VSShttp1" src="http://lh3.ggpht.com/stardio/SEJJX_X9X6I/AAAAAAAAACw/PiD8g8BpEvI/VSShttp1_thumb%5B2%5D.jpg?imgmax=800" width="402" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Al oprimir aceptar recibiran elsiguiente mensaje de advertencia&lt;/li&gt;    &lt;li&gt;&lt;a href="http://lh6.ggpht.com/stardio/SEJJevX9X7I/AAAAAAAAAC4/e0LN_MA4zcE/s1600-h/VSShttp2%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="124" alt="VSShttp2" src="http://lh3.ggpht.com/stardio/SEJJj_X9X8I/AAAAAAAAADA/hmgMJT0M8Lw/VSShttp2_thumb%5B1%5D.jpg?imgmax=800" width="450" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Opriman NO para seguir trabajando sin SSL &lt;/li&gt;    &lt;li&gt;&lt;/li&gt;    &lt;li&gt;Eso ser&amp;#237;a todo lo necesario, ahora probemos si todo esta bien podemos probar el acceso desde Internet&amp;#160; abriendo un IE y colocando la IP del sitio que indicamos enla configuraci&amp;#243;n y llamamos al webservice que se configur&amp;#243; automaticamente en nuestro IIS, algo similar a lo siguiente:     &lt;br /&gt;&amp;#160;&lt;a href="http://205.150.152.001/SourceSafe/VssService.asmx"&gt;http://205.150.152.001/SourceSafe/VssService.asmx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;     &lt;br /&gt;      &lt;br /&gt;Si todo esta bien aparecer&amp;#225; una ventanita pidiendo un usuario v&amp;#225;lido del servidor, ah&amp;#237; deber&amp;#225; darle el nombre y password de un usuario v&amp;#225;lido del server que tenga acceso a la carpeta compartida conde se halla la BD del server, debe tener permisos de lectura y escritura. Algo muy importante de entender en este punto es que si no usamos SSL, el WS (Web Service) de VSS utiliza la impersonalizaci&amp;#243;n lo cual significa que el usuario que prove&amp;#237;mos cuando&amp;#160; el Explorer nos lo solicit&amp;#243; debe tener permisos de lectura y escritura en la carpeta de la BD y adem&amp;#225;s DEBE estar creado como usuario en la base de datos del VSS, por &amp;#250;ltimo&amp;#160; debe activarse la opci&amp;#243;n &amp;quot;Usar el nombre de red para iniciar la sessi&amp;#243;n del usuario autom&amp;#225;ticamente&amp;quot; que est&amp;#225; en Herramientas /opciones/ general; esta est&amp;#225; configurada as&amp;#237; por default. Bien si todo esto se cumple el WS dar&amp;#225; un error pero uno en el cual veremos que efectivamente est&amp;#225; respondiendo, nos damos cuenta de esto por que el error tiene como t&amp;#237;tulo lo siguiente:&amp;quot;Error de servidor en la aplicaci&amp;#243;n '/SourceSafe'.&amp;quot;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bien ahora que ya tenemos todo bien configurado en el server, vamos a la m&amp;#225;quina remota que pretende acceder a la BD. Bien esta es la parte mas f&amp;#225;cil y consiste en lo siguiente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Abran el VS2005, vayan a Herramientas/opciones/Control de c&amp;#243;digo fuente/Selecci&amp;#243;n del complemento y ah&amp;#237; seleciona Microsoft Visual SourceSafe (internet) como en la siguiente figura&lt;/li&gt;    &lt;li&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://lh3.ggpht.com/stardio/SEJJr_X9X9I/AAAAAAAAADI/oN_YYu1MFVU/s1600-h/VSShttp3%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="266" alt="VSShttp3" src="http://lh6.ggpht.com/stardio/SEJJxvX9X-I/AAAAAAAAADQ/sHtCfVAo9xM/VSShttp3_thumb%5B1%5D.jpg?imgmax=800" width="435" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Ahora vaya a Herramientas/opciones/Control de c&amp;#243;digo fuente/Configuraci&amp;#243;n del complemento , coloque el nombre del usuario que tiene acceso a la BD y al server , luego presione avanzadas y destickee la opci&amp;#243;n de usar SSL, como enla figura siguiente:&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/stardio/SEJJ7_X9X_I/AAAAAAAAADY/ByoSR3SNgBA/s1600-h/VSShttp4%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="271" alt="VSShttp4" src="http://lh6.ggpht.com/stardio/SEJKCvX9YAI/AAAAAAAAADg/O6y8ZUWoXdM/VSShttp4_thumb%5B1%5D.jpg?imgmax=800" width="438" border="0" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bien eso es todo en cuanto a configuraci&amp;#243;n, ahora solo nos queda probar por ejemplo abriendo una soluci&amp;#243;n que ya tengamos en la BD. Para esto hay un procedimiento &amp;quot;Especial&amp;quot; se los comento a continuaci&amp;#243;n:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Abramos el VS2005&lt;/li&gt;    &lt;li&gt;Vamos a Abrir Proyecto y ah&amp;#237; seleccionemos a &amp;quot;SourceSafe (Internet)&amp;quot;&lt;/li&gt;    &lt;li&gt;Seleccionemos a &amp;quot;Agregar base de datos de SourceSafe&amp;quot;, aparecer&amp;#225; un asistente&amp;#160; que nos pedir&amp;#225; la IP o el nombre del dominio ( en mi ejemplo &lt;a href="http://205.150.152.001"&gt;http://205.150.152.001&lt;/a&gt;) y la carpeta compartida (&lt;a href="file://MiMaquina/MiBD"&gt;\\MiMaquina\MiBD&lt;/a&gt; ), al darle siguiente, si logra la conexi&amp;#243;n pedir&amp;#225; un usuario y password en la m&amp;#225;quina de destino, debemos proporcionarle el usuario , si autenticamos correctamente nos pedira que le demos un nombre a la conexi&amp;#243;n y listo. &lt;/li&gt;    &lt;li&gt;Ahora solo queda seleccionar el proyecto que queremos abrir en la BD y listo el VS2005 comenzar&amp;#225; la descara del proyecto en nuestra carpeta default de proyectos la cual esta configurara en (herramientas/opciones/proyectos y soluciones/general/ Ubicaci&amp;#243;n de proyectos de VS)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Les comento que yo utilizo esta forma y la verdad funciona muy bien, es f&amp;#225;cil de usar y su configuraci&amp;#243;n no es nada del otro mundo, solamente tengan cuidado con los permisos a las carpetas de la BD y aseg&amp;#250;rense de que los usuarios de su dominio que usan la BD est&amp;#225;n creados como usuarios de la BD&lt;/p&gt;  &lt;p&gt;Bien eso es todo por el momento, espero les sirva de gu&amp;#237;a, hasta pronto!!!, en otra les describo el acceso v&amp;#237;a SSL&lt;/p&gt;  &lt;p&gt;salu2   &lt;br /&gt;SergioT&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-5827363450332114213?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/5827363450332114213/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/vss-va-internet-http.html#comment-form' title='15 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5827363450332114213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5827363450332114213'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/06/vss-va-internet-http.html' title='VSS vía Internet HTTP'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/stardio/SEJJX_X9X6I/AAAAAAAAACw/PiD8g8BpEvI/s72-c/VSShttp1_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-9048370122914149961</id><published>2008-05-22T18:28:00.002-04:00</published><updated>2008-11-17T10:35:53.073-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>VB.net y el punto decimal en los textbox</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;El temita este de las referencias culturales y combinación con lo que dice la configuración regional la verdad que es mas que un dolor de cabeza, por lo menos para mí que no soy ningún gurú en esto. Una de las pocas cosas que extraño del dbase era el comando picture que con un simple modelo limitaba muy fácilmente las entradas de datos sobretodo a los números. Aquí en vb.net nos dan la "facilidad" de programar para diferentes referencias culturales de forma que el resultado puede ser mucho mas amigable al usuario final ya que el sistema se comportará de acuerdo a lo que dice la configuración regional del equipo, la burrera es que se complica bastante la programación , bueno... ni caso.&lt;/p&gt;&lt;p&gt;Aquí les dejo una recetita para manejar los textbox con números de forma que se use el punto "." como separador decimal independientemente a lo que se haya configurado en el panel de control, Asumamos que la máquina tiene a la coma "," como el separador de decimales y el punto separador de miles ( como es normalmente en latino América) &lt;/p&gt;&lt;p&gt;Coloquen un textbox, un button en un winform y peguen el siguiente código en el codebehind&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; Form1_Load(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:#0000ff;"&gt;Handles&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;MyBase&lt;/span&gt;.Load&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; x &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Decimal&lt;br /&gt;&lt;/span&gt;x = 25.356 &lt;span style="color:#008000;"&gt;'fijense que la asignacion es con punto&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox1.Text = x&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:#0000ff;"&gt;Handles&lt;/span&gt; Button1.Click&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; x &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Decimal&lt;br /&gt;&lt;/span&gt;x = &lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox1.Text &lt;span style="color:#008000;"&gt;'De aqui viene con coma y se convierte automaticamente a punto&lt;br /&gt;&lt;/span&gt;MsgBox(x)&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Hasta aquí todo funciona muy bien ya que al colocar un número con decimales a un textbox el punto se convierte en coma , tal y como dice la configuración regional y luego al pasar un textbox a un número la coma se convierte en punto.&lt;/p&gt;&lt;p&gt;Bien ahora supongamos que el usuario tiene la "tonta idea" de usar el punto para ingresar decimales. por que resulta que es un "comodon" que quiere ingresar números con velocidad y comodidad usando el teclado numérico de su teclado. hagan el intento  en el textbox que ya tenemos en pantalla y digiten "&lt;strong&gt;25.356&lt;/strong&gt;", luego opriman el botón y verán que les sale:"&lt;strong&gt;25356&lt;/strong&gt;" que pasó???  pues resulta que el muy  inteligente VB pensó que estamos usando el separador de miles "."  y lo desechó.&lt;/p&gt;&lt;p&gt;Bueno para darle la comodidad al usuario de usar su teclado numérico podemos construir un control de usuario y controlar cada presión de teclas para obligar a usar punto o programar los eventos del textbox para hacer lo mismo o podemos hacer una validación mas simple  en el momento de recuperar y asignar valores de textbox a números y viceversa. Bien para hacer esto último aumentemos un textbox y otro botón al winform y remplacemos él código anterior por lo siguiente:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; Form1_Load(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:#0000ff;"&gt;Handles&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;MyBase&lt;/span&gt;.Load&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; x &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Decimal&lt;br /&gt;&lt;/span&gt;x = 25.356 &lt;span style="color:#008000;"&gt;'fijense que la asignacion es con punto&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox1.Text = x&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox2.Text = x.ToString(System.Globalization.CultureInfo.InvariantCulture)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; &lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color:#0000ff;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:#0000ff;"&gt;Handles&lt;/span&gt; Button1.Click&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; x &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Decimal&lt;/span&gt;&lt;/p&gt;&lt;p&gt;x = &lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox1.Text &lt;span style="color:#008000;"&gt;'De aqui viene con coma y se convierte automaticamente a punto&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#0000ff;"&gt;If&lt;/span&gt; x.ToString &amp;lt;&amp;gt; &lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox1.Text &lt;span style="color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;MsgBox(&lt;/strong&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;&lt;strong&gt;"No es un número válido, use la coma decimal "&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;, MsgBoxStyle.Critical)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Return&lt;/span&gt;&lt;/strong&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;/p&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;strong&gt;If&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;MsgBox(x)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Private&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Button2_Click(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ByVal&lt;/span&gt;&lt;span style="font-size:85%;"&gt; sender &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;"&gt; System.Object, &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ByVal&lt;/span&gt;&lt;span style="font-size:85%;"&gt; e &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;"&gt; System.EventArgs) &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Handles&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Button2.Click&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Dim&lt;/span&gt;&lt;span style="font-size:85%;"&gt; x &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Decimal&lt;/span&gt;&lt;span style="font-size:85%;"&gt; = &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Decimal&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.Parse(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Me&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.TextBox2.Text, System.Globalization.CultureInfo.InvariantCulture)&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;If&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;strong&gt;x.ToString(System.Globalization.CultureInfo.InvariantCulture) &amp;lt;&amp;gt; &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;strong&gt;Me&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;.TextBox2.Text.Trim&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;blockquote&gt;&lt;p&gt;MsgBox(&lt;/p&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"No es un número válido, asegurese de usar punto decimal"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, MsgBoxStyle.Critical)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Return&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;If&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;MsgBox(x)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt; &lt;p&gt;Bien ahora explicaré los cambios que le hice al formulario: primero veamos en el evento load  la instrucción siguiente:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.TextBox2.Text = x.ToString(System.Globalization.CultureInfo.InvariantCulture)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Esta operación lo que hace es obtener una referencia a la  "instancia cultural de todos los idiomas" la cual se basa en la referencia cultural inglesa, que como saben maneja el punto como el separador de decimales,y por tanto lo que estamos logrando es ignorar la configuración regional!!!! por este motivo verán que en la pantalla (textbox2) aparece el número con el punto como separador de decimales, justo lo que quería lograr.&lt;/p&gt;&lt;p&gt;Ahora veremos el delegado del buuton2 donde recuperamos el valor del textbox y lo colocamos en la variable numérica&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;p&gt;Dim&lt;/p&gt;&lt;span style="font-size:85%;color:#000000;"&gt;x &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;color:#000000;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Decimal&lt;/span&gt;&lt;span style="font-size:85%;color:#000000;"&gt; = &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Decimal&lt;/span&gt;&lt;span style="font-size:85%;color:#000000;"&gt;.Parse(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Me&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;.TextBox2.Text, System.Globalization.CultureInfo.InvariantCulture)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt;En Esta línea convertimos el string del textbox por medio del método Parse de Decimal repitiendo la solicitud de la instancia independiente de la configuración regional, esto debido a que asumimos que en el texto hay punto como separador decimal.&lt;/p&gt;&lt;p&gt;Finalmente analicemos la validación que asegura que estemos usando el punto como separador de miles&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;p&gt;If&lt;/p&gt;&lt;span style="font-size:85%;color:#000000;"&gt;x.ToString(System.Globalization.CultureInfo.InvariantCulture) &amp;lt;&amp;gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Me&lt;/span&gt;&lt;span style="font-size:85%;color:#000000;"&gt;.TextBox2.Text.Trim &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;p&gt;MsgBox(&lt;/p&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"No es un número válido, asegurese de usar punto decimal"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, MsgBoxStyle.Critical)&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;If&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="color:#333333;"&gt;La validación es tan sencilla como comparar la cadena obtenida de la variable x contra el texto almacenado en el textbox2 del cual hicimos la conversión. Si son diferentes es que el usuario  utilizó la coma si son iguales es que el usuario utilizó el punto y todo está bien.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="color:#333333;"&gt;En este ejemplo verán que coloque las 2 opciones que son manejar todo con la configuración  regional ( manejado por textbox1 y button1) y el manejo con el punto como separador de decimales ( manejado por textbox2 y button2)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="color:#333333;"&gt;Espero les sirva&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="color:#333333;"&gt;Salu2&lt;br /&gt;SergioT&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-9048370122914149961?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/9048370122914149961/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/05/vbnet-y-el-punto-decimal-en-los-textbox.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/9048370122914149961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/9048370122914149961'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/05/vbnet-y-el-punto-decimal-en-los-textbox.html' title='VB.net y el punto decimal en los textbox'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7066154899472988342</id><published>2008-05-15T19:34:00.002-04:00</published><updated>2008-11-17T10:36:18.459-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Variables persistentes en postbacks</title><content type='html'>&lt;p&gt;Un problema al que nos enfrentamos los que programamos en asp.net es el hecho de que las variables declaradas  en un webform "mueren" después del primer postback, para salvar variables entre postbacks hay varias alternativas, el uso de Session, de Application  o de ViewState, que se use depende de lo que se quiere hacer, de forma muy simple les detallo cuando usar cada una de las 3 opciones&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Session&lt;/strong&gt;: Se debe usar si se quieren guardar variables u objetos durante toda la sesión , se entiende por sesión una conexión al servidor web desde un explorador. Las variables que coloquen en Session vivirán mientras el explorer esté abierto e interactuado con el sitio. para guardar variables aqui solo hay que hacer lo siguiente:&lt;br /&gt;&lt;br /&gt;dim xVar as integer=199&lt;br /&gt;Session("miVariable")=xVar&lt;br /&gt;&lt;br /&gt;y para recuperarla&lt;br /&gt;&lt;br /&gt;dim z as integer =session("miVariable")&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Application&lt;/strong&gt;: Las variables almacenadas aquí vivirán mientras la aplicación viva en el servidor web, normalmente se colocan aquí variables y obetos que usarán todos los usuarios que usen la aplicación, eso si, si uno de ellos cambia el valor de la variable guardada en application, este cambio se reflejará para todos los usuarios conectados ( todas las sessiones). Para guardar variables u objetos se hace:&lt;br /&gt;&lt;br /&gt;dim xVar as integer=199&lt;br /&gt;Application("miVariable")=xVar&lt;br /&gt;&lt;br /&gt;y para recuperarla&lt;br /&gt;&lt;br /&gt;dim z as integer =Application("miVariable")&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ViewState&lt;/strong&gt;: Las variables u objetos almacenados aquí viven  lo que vive un webform, ViewState es e mecanismo de ASP.Net para salvar valores de los controles web en los postbacks, en realidad es una variable oculta que va y viene del cliente con los valores de los controles del webForm. Lo que se hace normalmente es aprobechar este mecanismo para guardar variables propias del formulario que solo tienen importancia en el webForm, por tanto no es aconsejable guardarlas en Session o Application. Para usar ViewSate se hace:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;dim xVar as integer=199&lt;br /&gt;Me.ViewState("miVariable")=xVar&lt;br /&gt;&lt;br /&gt;y para recuperarla&lt;br /&gt;&lt;br /&gt;dim z as integer =Me.ViewState("miVariable")&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;En cualquiera de los 3 mecanismos hay que tener cuidado de no intentar recuperar una variable inexistente por que puede provocar un error en tiempo de ejecución ya que  los 3 mecanismos devuelven nothing cuando no hallan la variable&lt;/p&gt;&lt;p&gt;Para la próxima entrega les mostraré como guardar objetos propios en estos mecanismos aplicando la serialización, algo muy básico y fácil de usar.&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;Sergio &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7066154899472988342?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7066154899472988342/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/05/variables-persistentes-en-postbacks.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7066154899472988342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7066154899472988342'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/05/variables-persistentes-en-postbacks.html' title='Variables persistentes en postbacks'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-1633052364159960608</id><published>2008-03-27T08:52:00.001-04:00</published><updated>2008-03-27T08:55:00.631-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSS'/><title type='text'>Visual SourceSafe administrando fuentes</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;hace un algunos a&amp;#241;os que utilizo el VSS (Visual SourceSafe) para administrar programas fuente y no solo de VB si no tambi&amp;#233;n de otros lenguajes como Clipper y C, lo interesante de esta herramienta es que permite que varias personas trabajen sobre un proyecto de software de forma que cada uno tiene una copia local del software (o parte de el)&amp;#160; de tal manera que puede compilar , cambiar, borrar o adicionar programas y recursos nuevos. Las copias locales son descartables ya que los fuentes se hallan almacenados en una base de datos administrada por el VSS A continuaci&amp;#243;n les describo las funciones b&amp;#225;sicas y como empezar a utilizarlo suponiendo que lo que haremos ser&amp;#225; mantener los fuentes de un proyecto desde VS 2005.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Despues de instalar el VSS el cual se halla en el VS 2005 Team Edition, ver&amp;#225;n que se crearon&amp;#160; 2 accesos directos al VSS uno es &amp;quot;Administraci&amp;#243;n de Visual SourceSafe&amp;quot; y el otro es &amp;quot;Microsoft Visual SourceSafe&amp;quot;. El primero permite crear bases de datos, usuarios, permisos y publicaci&amp;#243;n mediante Web; el segundo sirve para trabajar con los archivos almacenados en los proyectos que est&amp;#225;n almacenados en la base de datos del VSS. &lt;/li&gt;    &lt;li&gt;Lo primero que deben hacer es crear una base de datos nueva, darle una ubicaci&amp;#243;n y nombre. Esto se hace desde&amp;#160; el administrador del VSS por medio de un asistente muy claro y f&amp;#225;cil. Luego se deben crear usuarios, de preferencia con el nombre de usuario del dominio, esto lo justificare cuando veamos el acceso v&amp;#237;a Web ( en un post futuro) &lt;/li&gt;    &lt;li&gt;Teniendo la BD ya creada entremos al VS y abramos la aplicaci&amp;#243;n que deseamos almacenarla en el VSS. En el Explorador de soluciones hagan clic derecho sobre la soluci&amp;#243;n y seleccionen la opci&amp;#243;n &amp;quot;Agregar proyecto al control de c&amp;#243;digo fuente&amp;quot;, se iniciara un asistente con los siguientes pasos:      &lt;ol&gt;       &lt;li&gt;Pedir&amp;#225; el usuario&amp;#160; del VSS que crear&amp;#225; e proyecto y la base de datos a la cual se quiere adicionar el proyecto y en la cual est&amp;#225; registrado el usuario indicado. &lt;/li&gt;        &lt;li&gt;Si el usuario y la BD existen aparecer&amp;#225; un cuadro pidiendo un nombre para la raiz del proyecto sugiriendo algo as&amp;#237; &amp;quot;MiSolucion.root&amp;quot;, yo prefiero borrar ese nombre y dejar el cuadro en blanco, otro campo es la ubicaci&amp;#243;n y aparecer&amp;#225; con el valor &amp;quot;$&amp;quot; que indica la ra&amp;#237;z de la BD, yo prefiero dejar esto sin cambiar, Terminada esta operaci&amp;#243;n la soluci&amp;#243;n quedar&amp;#225; almacenada en la BD &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt; &lt;a href="http://lh4.google.com/stardio/R-uYjGX43BI/AAAAAAAAACI/3XJ12bU3vWc/VSS_1%5B3%5D.jpg"&gt;&lt;img height="368" alt="VSS_1" src="http://lh4.google.com/stardio/R-uYkGX43CI/AAAAAAAAACQ/9eJf3qU9oM0/VSS_1_thumb%5B1%5D.jpg" width="380" border="0" /&gt;&lt;/a&gt;  &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Despu&amp;#233;s de almacena r la soluci&amp;#243;n en la BD el VSS tendr&amp;#225; el control de los fuentes y el proyecto aparecer&amp;#225; en el VS con una nueva caracter&amp;#237;stica al lado de cada archivo ver&amp;#225;n un candadito, el cual significa que el archivo est&amp;#225; guardado en la BD y disponible para modificaci&amp;#243;n, esto en la jerga del VSS se conoce como &amp;quot;archivo protegido&amp;quot;.&lt;/p&gt;  &lt;p&gt;Ahora al hacerle clic derecho a cualquier archivo dentro del explorador de soluciones aparecer&amp;#225; el siguiente men&amp;#250;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/stardio/R-uYlWX43DI/AAAAAAAAACY/IWexBfivbjY/VSS_24.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="415" alt="VSS_2" src="http://lh4.google.com/stardio/R-uYnGX43EI/AAAAAAAAACg/4gBuzWWdhh8/VSS_2_thumb2.jpg" width="409" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Las opciones del men&amp;#250; anterior sirven para&amp;#160; lo siguiente:&lt;/p&gt;  &lt;p&gt;&amp;quot;Desproteger para editar&amp;quot; habilita al archivo para que pueda ser editable y lo marca en la base de datos, de forma que ning&amp;#250;n otro usuario pueda modificarlo mientras dura nuestra edici&amp;#243;n. Lo anterior es cierto si la base de datos fue creada con el modelo &amp;quot;Bloquear-Modificar-Desbloquear&amp;quot; el cual no permite concurrencia en las modificaciones, existe otro modelo que es el de &amp;quot;Copiar-Modificar-Combinar&amp;quot; el cual permite la concurrencia en las modificaciones y que eran el &amp;#250;nico modelo soportado por la versi&amp;#243;n previa del VSS. Al &amp;quot;desproteger&amp;quot; (check out) el archivo pasa de ser ReadOnly a ReadAndWrite&lt;/p&gt;  &lt;p&gt;&amp;quot;Obtener &amp;#250;ltima versi&amp;#243;n&amp;quot; Trae de la base de datos la ultima versi&amp;#243;n del archivo seleccionado.&lt;/p&gt;  &lt;p&gt;&amp;quot;Comparar&amp;quot; compara la versi&amp;#243;n del archivo que se halla en nuestra m&amp;#225;quina contra la almacenada en la BD y muestra las diferencias en caso que las haya.&lt;/p&gt;  &lt;p&gt;&amp;quot;Ver historial&amp;quot; permite ver la historia de cambios del archivo, quien las hizo cuando y cuales fueron los cambios realizados, adem&amp;#225;s permite comparar versiones o comparar una versi&amp;#243;n con la copia local.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bueno esto como una introducci&amp;#243;n al VSS creo que les puede ser &amp;#250;til&lt;/p&gt;  &lt;p&gt;Salu2   &lt;br /&gt;Sergio&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-1633052364159960608?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/1633052364159960608/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/03/visual-sourcesafe-administrando-fuentes.html#comment-form' title='16 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1633052364159960608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1633052364159960608'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/03/visual-sourcesafe-administrando-fuentes.html' title='Visual SourceSafe administrando fuentes'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6679616298972956383</id><published>2008-03-07T16:51:00.002-04:00</published><updated>2008-11-17T10:38:25.057-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>VS2003 y Sql Server 2005</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;Después de una buena vacación vuelvo a escribir aquí esta vez retrocediendo en el tiempo con el VS 2003, les cuento mi caso, tengo sistemas en VS2003 y VS2005 y en SQL 2005 y SQL 2000 y como solo tengo una máquina de desarrollo,así que en ella tengo el VS 2003, el VS2005 y la verdad no hay ningún problema, también tengo el SQL Server Express 2005 y en él he restaurado una base de datos del sql 2000,  la verdad sin problema alguno he comenzado a trabajar con estas 3 herramientas, eso fue cierto hasta que intenté crear DataAdapters en clases componentes por medio del VS 2003, fue imposible, no se generaban los SPs la solución a este tema resultó bien fácil y se las comento , solo tienen que instalar el SP1 del VS 2003 y listo.&lt;/p&gt;&lt;p&gt;Acerca de utilizar el Sql2005  para manejar BD que fueron creadas con el sql2000 tengo un par de observaciones que las coloco aquí:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Restauren la Base de datos de un backup , sin crearla previamente el el sql2005, es decir vayqn directo a restaurar, no intenten crear primero y restaurar después.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tengan en cuenta que no podrán ya restaurar un backup hecho en el sql2005 en el sql 2000, por lo menos no encontré como hacerlo.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Bueno esta fue una entrega corta y sin código pero creo que muy útil para los que ya no quieren utilizar el Sql2000 y dar el salto al sql2005, por lo menos en sus máquinas de desarrollo&lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;Sergio &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6679616298972956383?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6679616298972956383/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/03/vs2003-y-sql-server-2005.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6679616298972956383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6679616298972956383'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/03/vs2003-y-sql-server-2005.html' title='VS2003 y Sql Server 2005'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-8306011175866500858</id><published>2008-01-05T10:10:00.001-04:00</published><updated>2008-01-05T10:10:37.167-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Ocultando tabPages en un tabcontrol</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;Comenzando el nuevo a&amp;#241;o con un poco de c&amp;#243;digo sencillo pero &amp;#250;til ... &lt;/p&gt;  &lt;p&gt;Como ver&amp;#225;n el control TabControl de los winForm contiene una colecci&amp;#243;n de controles TabPage, el tema es que los controles tabpage , quien sabe por que, no tienen la propiedad Visible por tanto no se los puede ocultar de forma directa y hay que recurrir a un peque&amp;#241;o truco que se los cuento a continuaci&amp;#243;n&lt;/p&gt;  &lt;p&gt;Hagamos lo siguiente:&lt;/p&gt;  &lt;p&gt;1. Coloquen un Tabcontrol con 2 tabpages&amp;#160; en un winform&lt;/p&gt;  &lt;p&gt;2.Coloquen un checkBox en el winform&lt;/p&gt;  &lt;p&gt;3.hagan 2 clicks sobre el checkBox para ir al c&amp;#243;digo&amp;#160; y ahi propramemos el delegado para el evento chechkedChanged, para que quede as&amp;#237;:&lt;/p&gt; &lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; CheckBox1_CheckedChanged(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Object, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.EventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; CheckBox1.CheckedChanged&lt;/font&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.CheckBox1.Checked &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then     &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Me&lt;/font&gt;&lt;font size="2"&gt;.TabControl1.TabPages.Remove(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.TabPage2)     &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.TabControl1.TabPages.Add(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.TabPage2)     &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;4. Ejecutemos la aplicaci&amp;#243;n y ver&amp;#225;n que al marcar el chekBox el segundo tab desaparece y al desmarcarlo vuelve a aparecer&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;bueno , eso es todo que tengan un feliz y prospero a&amp;#241;o nuevo&lt;/p&gt;  &lt;p&gt;Salu2   &lt;br /&gt;Sergio&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-8306011175866500858?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/8306011175866500858/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2008/01/ocultando-tabpages-en-un-tabcontrol.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8306011175866500858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8306011175866500858'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2008/01/ocultando-tabpages-en-un-tabcontrol.html' title='Ocultando tabPages en un tabcontrol'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-9097877809824900466</id><published>2007-12-06T09:01:00.002-04:00</published><updated>2008-11-17T10:37:30.110-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Reports'/><title type='text'>Imágenes en Crystal Reports</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;Buscando un poco por Internet encontré un articulo interesante sobre como mostrar imágenes en Crystal reports, aquí dejo el link para que lo vean y pruebe&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.dotnetcr.com/Libreria.aspx?art=62&amp;amp;tag=Mostrar-Imagenes-en-Crystal-Reports-al-estilo-de-Galeria"&gt;http://www.dotnetcr.com/Libreria.aspx?art=62&amp;amp;tag=Mostrar-Imagenes-en-Crystal-Reports-al-estilo-de-Galeria&lt;/a&gt;&lt;/p&gt;&lt;p&gt;salu2&lt;br /&gt;Sergio&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-9097877809824900466?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/9097877809824900466/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/12/imgenes-en-crystal-reports.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/9097877809824900466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/9097877809824900466'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/12/imgenes-en-crystal-reports.html' title='Imágenes en Crystal Reports'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-8801388395104772544</id><published>2007-11-27T15:48:00.001-04:00</published><updated>2007-11-27T15:48:07.548-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Cadenas de conexión</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;leyendo por ah&amp;#237; he encontrado este sitio&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.connectionstrings.com/"&gt;http://www.connectionstrings.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;visitenlo tiene cadenas de conexi&amp;#243;n para todo tipo de fuentes de datos&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;salu2   &lt;br /&gt;Sergio&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-8801388395104772544?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/8801388395104772544/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/cadenas-de-conexin.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8801388395104772544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8801388395104772544'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/cadenas-de-conexin.html' title='Cadenas de conexión'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-901764967553747251</id><published>2007-11-23T19:19:00.002-04:00</published><updated>2008-11-17T10:36:49.692-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Enviando Email por código</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;Algo que es muy interesante y útil es adicionar a nuestras aplicaciones la capacidad de enviar emails, por eso les paso el código siguiente que utiliza una cuenta de Gmail para hacer los envíos de correos, la ventaja de usar gmail es que siempre esta disponible por que es gratis jejeje, el unico cuidado que hay que tener es indicar el puerto smtp correcto y enviar por SSL, bueno ahi va el código.&lt;/p&gt;&lt;p&gt;1. Incluyan lo siguiente en el archivo fuente&lt;/p&gt;&lt;span style="color:#0000ff;"&gt;&lt;p&gt;Imports &lt;span style="color:#000000;"&gt;System.Net.Mail&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;2. El código para el envío por gmail va así&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;'Primero configuremos los paramentros para enviar a gmail&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; oSmtp &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; SmtpClient = &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; SmtpClient&lt;br /&gt;oSmtp.Credentials = &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; System.Net.NetworkCredential(&lt;span style="color:#a31515;"&gt;"MiCuenta@gmail.com"&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;"ElSuperPassw"&lt;/span&gt;)&lt;br /&gt;oSmtp.Port = 587 &lt;span style="color:#008000;"&gt;'Gmail necesita un puerto especifico &lt;/span&gt;&lt;br /&gt;oSmtp.Host = &lt;span style="color:#a31515;"&gt;"smtp.gmail.com"&lt;br /&gt;&lt;/span&gt;oSmtp.EnableSsl = &lt;span style="color:#0000ff;"&gt;True&lt;/span&gt; &lt;span style="color:#008000;"&gt;'Gmail necesita enviar por SSL&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; oMail &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; MailMessage = &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; MailMessage&lt;br /&gt;oMail.To.Add(&lt;span style="color:#a31515;"&gt;&lt;a href="mailto:destino1@gmail.com"&gt;destino1@gmail.com&lt;/a&gt;&lt;/span&gt;)&lt;br /&gt;oMail.To.Add(&lt;span style="color:#a31515;"&gt;&lt;a href="mailto:destino2@gmail.com"&gt;destino2@gmail.com&lt;/a&gt;&lt;/span&gt;)&lt;br /&gt;oMail.From = &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; MailAddress(&lt;span style="color:#a31515;"&gt;"MiCuenta@gmail.com"&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;""&lt;/span&gt;, System.Text.Encoding.UTF8)&lt;br /&gt;oMail.Subject = &lt;span style="color:#a31515;"&gt;"Este mail trata de...."&lt;/span&gt;&lt;/p&gt;&lt;p&gt;oMail.SubjectEncoding = System.Text.Encoding.UTF8&lt;/p&gt;&lt;p&gt;&lt;span style="color:#008000;"&gt;'----creacion del mensaje&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; s &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; System.Text.StringBuilder&lt;/p&gt;&lt;p&gt;s.Append(&lt;span style="color:#a31515;"&gt;"bla bla bla bla"&lt;/span&gt; &amp;amp; vbCrLf)&lt;br /&gt;s.Append(&lt;span style="color:#a31515;"&gt;"bla bla bla bla"&lt;/span&gt; &amp;amp; vbCrLf)&lt;br /&gt;s.Append(&lt;span style="color:#a31515;"&gt;"bla bla bla bla"&lt;/span&gt; &amp;amp; vbCrLf)&lt;/p&gt;&lt;p&gt;oMail.Body = s.ToString&lt;/p&gt;&lt;p&gt;oMail.BodyEncoding = System.Text.Encoding.UTF8&lt;br /&gt;oMail.IsBodyHtml = &lt;span style="color:#0000ff;"&gt;False&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Try&lt;br /&gt;&lt;/span&gt;       oSmtp.Send(oMail)&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; System.Net.Mail.SmtpException&lt;br /&gt;         msgbox "Error " &amp;amp;  ex.Message&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Try&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="color:#000000;"&gt;Bueno eso es todo , espero les sirva,&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color:#000000;"&gt;Salu2&lt;br /&gt;Sergio&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-901764967553747251?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/901764967553747251/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/enviando-email-por-cdigo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/901764967553747251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/901764967553747251'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/enviando-email-por-cdigo.html' title='Enviando Email por código'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7259609618540371075</id><published>2007-11-11T19:10:00.001-04:00</published><updated>2007-11-11T19:10:11.338-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>El path de la aplicación</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;  &lt;p&gt;He estado buscando la forma en la cual hallar la carpeta de la aplicaci&amp;#xF3;n y al final encontr&amp;#xE9; varias formas de hacerlo&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Forma 1: &lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Utilizando Reflection , podremos hallar el path de la assembly que se est&amp;#xE1; ejecutando, pero eso si tengan en cuenta que esto funciona en aplicaciones Windows, en aplicaciones web devuelve el path a un temporal, que no es el path de donde est&amp;#xE1; la dll que se est&amp;#xE1; ejecutando&lt;/p&gt;  &lt;p&gt;sPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location)&lt;/p&gt;  &lt;p&gt;por medio de la clase path extraemos solamente el directorio donde corre la asembly que ejecuta el comando&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Forma 2:&lt;/strong&gt;    &lt;br /&gt;sPath=System.AppDomain.CurrentDomain.RelativeSearchPath&lt;/p&gt;  &lt;p&gt;Este m&amp;#xE9;todo funciona bien en aplicaciones&amp;#xA0; web que llaman a la assembly en la cual se ejecuta el comando indicado , pero en aplicaciones windows no funciona, por que ? .. aun no se ( tal vez luego lo averigue) devuelve un valor nulo&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Forma3:&lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;sPath=System.AppDomain.CurrentDomain.BaseDirectory     &lt;br /&gt;Esta forma tiene un comportamiento interesante, cuando se ejecuta en una aplicaci&amp;#xF3;n Windows devuelve el directorio en el cual est&amp;#xE1; la DLL que corre el m&amp;#xE9;todo, pero cuando se lo prueba en una aplicaci&amp;#xF3;n Web o en un WebService lo que devuelve es la ra&amp;#xED;z de la aplicaci&amp;#xF3;n Web&lt;/p&gt;  &lt;p&gt;Una aplicaci&amp;#xF3;n para esto podria ser que quieran verificar la calve o licencia de su sistema y para ello deban leer un archivo que tiene la clave de la licencia y que est&amp;#xE1; alojado en la carpeta de la DLL que corre el m&amp;#xE9;todo de verificacion . Para eso creeen un m&amp;#xE9;todo en esa DLL&amp;#xA0; mas o menos as&amp;#xED;:&lt;/p&gt; &lt;font color="#0000ff" size="2"&gt;   &lt;p&gt;Public&lt;/p&gt;   &lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Shared&lt;/font&gt;&lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;&lt;font color="#000000" size="2"&gt; Licenciav&amp;#xE1;lida() &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Boolean&lt;/font&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; sPath &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font size="2"&gt;sPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location) &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&lt;/font&gt;    &lt;p&gt;sPath &amp;amp; = &amp;quot;\MiFile.txt&amp;quot;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;     &lt;br /&gt;If&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Not&lt;/font&gt;&lt;font size="2"&gt; File.Exists(sPath) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then     &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;sPath = System.AppDomain.CurrentDomain.RelativeSearchPath      &lt;br /&gt;&lt;font color="#800000"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; sPath &amp;amp; = &amp;quot;\MiFile.txt&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; If&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Not&lt;/font&gt;&lt;font size="2"&gt; File.Exists(sPath) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then     &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;sPath = System.AppDomain.CurrentDomain.BaseDirectory      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; sPath &amp;amp; = &amp;quot;\MiFile.txt&amp;quot;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If     &lt;br /&gt;&lt;font size="2"&gt;&lt;/font&gt;      &lt;p&gt;f = &lt;/p&gt;     &lt;font color="#0000ff" size="2"&gt;New&lt;/font&gt;&lt;font size="2"&gt; StreamReader(sPath)       &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; s_CLave &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; = f.ReadLine       &lt;br /&gt;f.Close()        &lt;br /&gt;f = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;      &lt;p&gt;return VerificarClave( s_Clave)&lt;/p&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;/font&gt;      &lt;p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Eso es todo por hoy&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Salu2           &lt;br /&gt;Sergio&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/font&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7259609618540371075?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7259609618540371075/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/el-path-de-la-aplicacin.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7259609618540371075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7259609618540371075'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/el-path-de-la-aplicacin.html' title='El path de la aplicación'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4540131241183703338</id><published>2007-11-08T12:11:00.002-04:00</published><updated>2008-11-17T10:35:13.373-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Como abrir archivos desde la aplicacion</title><content type='html'>&lt;p&gt;Hola&lt;/p&gt;&lt;p&gt;Algo interesante en windows es el hecho de hacer 2 clics con el mouse sobre un archivo y que este se abra con el programa que corresponde, bien la verdad hacerlo desde nuestras aplicaciones windows es bastante facil, en realidad se resume a una sola linea de código que es la siguiente:&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Shell(&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"rundll32.exe url.dll,FileProtocolHandler "&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &amp;amp; (&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"c:\windows\system32\calc.exe"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;))&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Shell(&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"rundll32.exe url.dll,FileProtocolHandler "&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &amp;amp; (&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"c:\Milibro.xls"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;))&lt;/span&gt;&lt;/p&gt;&lt;p&gt;En los 2 ejemplos anteriores tenemos 2 casos el primero que abre a la calculadora de windows y el segundo abre el excel y carga en él al libro de nombre MiLibro.xls&lt;/p&gt;&lt;p&gt;Ese código solo lo tienen que colocar en algún &lt;a href="http://www.dotnetcr.com/Libreria.aspx?art=96&amp;amp;tag=Delegados-en-NET-Parte-1-" target="_blank"&gt;delegado&lt;/a&gt; y listo, como puede ser el manejador del evento click de un boton como porejemplo.&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Private&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Button1_Click(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ByVal&lt;/span&gt;&lt;span style="font-size:85%;"&gt; sender &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;"&gt; System.Object, &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;ByVal&lt;/span&gt;&lt;span style="font-size:85%;"&gt; e &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;As&lt;/span&gt;&lt;span style="font-size:85%;"&gt; System.EventArgs) &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Handles&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Button1.Click&lt;/span&gt; &lt;p&gt;Shell(&lt;/p&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"rundll32.exe url.dll,FileProtocolHandler "&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &amp;amp; (&lt;/span&gt;&lt;span style="font-size:85%;color:#a31515;"&gt;"c:\windows\system32\calc.exe"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;))&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;End&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Sub&lt;/span&gt;&lt;/span&gt; &lt;p&gt; &lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;Sergio&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4540131241183703338?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4540131241183703338/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/como-abrir-archivos-desde-la-aplicacion.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4540131241183703338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4540131241183703338'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/como-abrir-archivos-desde-la-aplicacion.html' title='Como abrir archivos desde la aplicacion'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-2198744018098525464</id><published>2007-11-07T12:05:00.001-04:00</published><updated>2007-11-07T12:07:33.565-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>10  puntos que saber sobre VS2008 y el Framework 3.5</title><content type='html'>&lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;Daniel Moth, desarrollador de Microsoft, public&amp;#xF3;&amp;#xA0; un post llamado &lt;a href="http://www.danielmoth.com/Blog/2007/11/top-10-things-to-know-about-visual.html"&gt;10 puntos para conocer sobre el Visual Studio 2008 y .NET framework 3.5&lt;/a&gt;&amp;#xA0; aqui lo traduzco y adiciono un par de conceptos referidos en la pagina de Daniel Moth.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Su Lanzamiento&lt;/strong&gt;    &lt;br /&gt;VS2008 y .NET framework 3.5 ser&amp;#xE1;n lanzados oficialmente juntos el pr&amp;#xF3;ximo febrero. Sin embargo, estar&amp;#xE1;n disponibles para desarrolladores a finales de noviembre del 2007. Los mismos tipos de editores y versiones es decir Expreess, Standar y Professional solo que en esta la versi&amp;#xF3;n Profesional incluir&amp;#xE1; un m&amp;#xF3;dulo de pruebas,&amp;#xA0; estar&amp;#xE1;n disponibles en VS2008 mas una nueva versi&amp;#xF3;n llamada &lt;a href="http://msdn2.microsoft.com/en-gb/vstudio/bb510103.aspx"&gt;VS2008 Shell&lt;/a&gt; la cual traer&amp;#xE1; nuevas ventajas ya que est&amp;#xE1; dise&amp;#xF1;ado exclusivamente para Vista, parece que ahora el XP comenz&amp;#xF3; su camino al retiro    &lt;br /&gt;&lt;strong&gt;2. Compatibilidad con versiones anteriores&lt;/strong&gt;    &lt;br /&gt;.NET framework 3.5 contin&amp;#xFA;a la l&amp;#xED;nea iniciada por el framework 3.0 en lo que se refiere a mantener las versiones es decir que no se modifican las librer&amp;#xED;as desde el framework 2.0 y lo &amp;#xFA;nico que se hace es &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=333940"&gt;a&amp;#xF1;adir nuevos ensamblados propios de Framework 3.5&lt;/a&gt; a las librer&amp;#xED;as de las versiones 2.0 y 3.0 del framework, las aplicaciones actuales no se ver&amp;#xE1;n afectadas. Eso s&amp;#xED;, se necesitar&amp;#xE1;n los Service Packs 1 de ambas plataformas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Generaci&amp;#xF3;n multiplataforma ( mas bien multi framework)&lt;/strong&gt;    &lt;br /&gt;Visual Studio 2008 incluye la capacidad de crear proyectos para m&amp;#xFA;ltiples plataformas .NET, es decir, la 2.0, 3.0 y 3.5, desde el mismo entorno. Por tanto, no ser&amp;#xE1; necesario tener VS2005 instalado para generar ensamblados para .NET 2.0. Con esto podemos decir adios al VS2005 , solo que no podremos hacer lo mismo con el vs2003 o 2002 (si que aun hay) &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Muchas novedades en C# 3.0 y VB9&lt;/strong&gt;    &lt;br /&gt;Propiedades autom&amp;#xE1;ticas, &lt;a href="http://www.danielmoth.com/Blog/2007/08/relaxed-delegates.html"&gt;delegados &amp;quot;relajados&amp;quot;&lt;/a&gt;, inicializadores de objetos, inferencia de tipos, tipos an&amp;#xF3;nimos, m&amp;#xE9;todos de extensi&amp;#xF3;n, funciones lambda y m&amp;#xE9;todos parciales, entre otros.    &lt;br /&gt;Lo mas interesante es que podremos usar las nuevas caracter&amp;#xED;sticas en la generacion de aplicaciones de la versi&amp;#xF3;n 2.0 &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5. LINQ&lt;/strong&gt;    &lt;br /&gt;El nuevo terremoto en manejo de datos una de las grandes revoluciones que nos trae MS con el VS2008. Language INtegrated Query es una nueva forma de acceder a los datos totalmente integrada en el lengua .net ya sea vb,c#... etc Lo interesante de esto es que es independiente de la fuente de donde provengan los datos, el punto clave es que creo describe mejor la importancia de LINQ (&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=323545"&gt;Un video de LINQ&lt;/a&gt; )es que ahora podemos mezclar diferentes or&amp;#xED;genes de datos en una consulta, or&amp;#xED;genes tan diversos como colecciones, XML, BD. Seg&amp;#xFA;n Daniel es lo mas importante de la nueva versi&amp;#xF3;n.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;6. ASP.NET con AJAX integrado!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Visual Studio, as&amp;#xED; como el nuevo framework, ya incluir&amp;#xE1;n ASP.NET AJAX, as&amp;#xED; como &lt;a href="http://www.danielmoth.com/Blog/2007/08/aspnet-35-controls.html"&gt;3 nuevos controles&lt;/a&gt;&amp;#xA0; que son ListView, DataPager y LinqDataSource. Adem&amp;#xE1;s, el IDE ha sido muy mejorado e incluye soporte para intellisense y depuraci&amp;#xF3;n de Javascripts!! (esto es una gran ventaja), tambi&amp;#xE9;n ahora incorporaron el anidamiento de masterpages.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;7. Para proyectos Windows&lt;/strong&gt;    &lt;br /&gt;VS2008 incluir&amp;#xE1; nuevas plantillas de proyectos, as&amp;#xED; como un dise&amp;#xF1;ador para WPF integrado con soporte para la comunicaci&amp;#xF3;n entre &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=348624"&gt;WPF y Windows Forms&lt;/a&gt;. Tambi&amp;#xE9;n se ha a&amp;#xF1;adido el soporte para Firefox de la tecnolog&amp;#xED;a ClickOnce y &lt;a href="http://www.xbap.org/"&gt;XBAP&lt;/a&gt; (XAML Browser Applications).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;8. Para los que desarrollan sobre office&lt;/strong&gt;    &lt;br /&gt;Se ofrece soporte total para las personalizaciones (customisations) de Office 2007, as&amp;#xED; como para las plantillas de Office 2003.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;9. Para desarrollador de servidor&lt;/strong&gt;    &lt;br /&gt;Se han incluido nuevas plantillas para WCF y WF para un mejor trabajo en conjunto, ahora WCF soporta el modelo de programaci&amp;#xF3;n HTTP SOAP-less, serializacion JSON, una colecci&amp;#xF3;n de links sobre estos temas &lt;a href="http://blogs.thinktecture.com/cweyer/archive/2007/10/29/414951.aspx"&gt;aqui&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10. Para el desarrollador en dispositivos m&amp;#xF3;viles&lt;/strong&gt;    &lt;br /&gt;Hay toneladas de nuevas caracter&amp;#xED;sticas, como el soporte para las versiones compactas de LINQ y WPF, o, a nivel de IDE, Unit Testing for Devices, entre muchas nuevas &lt;a href="http://www.danielmoth.com/Blog/2007/03/visual-studio-for-devices-features-in.html"&gt;ideas del equipo de desarrollo&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11. C&amp;#xF3;digo del framework&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ahora v&amp;#xED;a VS2008 podremos depurar m&amp;#xE9;todos del framework!!! Esto por que MS se le ocurri&amp;#xF3; abrir parte del c&amp;#xF3;digo fuente del framework, &lt;a href="http://www.danielmoth.com/Blog/2007/10/releasing-source-code-for-net-framework.html"&gt;aqu&amp;#xED; un link del tema&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Salu2   &lt;br /&gt;Sergio&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-2198744018098525464?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/2198744018098525464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/10-puntos-que-saber-sobre-vs2008-y-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2198744018098525464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2198744018098525464'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/10-puntos-que-saber-sobre-vs2008-y-el.html' title='10  puntos que saber sobre VS2008 y el Framework 3.5'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-8271877799735231960</id><published>2007-11-03T00:03:00.001-04:00</published><updated>2007-11-03T00:10:15.332-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Columnas invisibles en un gridview</title><content type='html'>&lt;p&gt;El nuevo gridview tiene un par de cosas que lo hacen un poco mas complicado de manejar frente al datagrid, pero tambi&amp;#xE9;n tiene un mejor desempe&amp;#xF1;o. una de las cosas que menos me gusta es el hecho de que ahora cuando se marca a una columna como visible=false, resulta que esa columna no es accesible desde RowCommand, lo cual obliga a hacer artilugios para tener acceso a los datos que est&amp;#xE1;n como invisibles. Les muestro ahora mi &amp;quot;artilugio&amp;quot;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Hagamos lo siguiente, creen un gridview enlazado a una tabla o a alg&amp;#xFA;n origen de datos, luego coloquen una de las columnas en visible=false, adicionen un campo plantilla y en el coloquen un &amp;quot;Button&amp;quot; de nombre &amp;quot;btn&amp;quot; y un &amp;quot;label &amp;quot;de nombre &amp;quot;lbl&amp;quot;. Esto para lograr que cuando el usuario presione el bot&amp;#xF3;n de la columna plantilla se realice alguna acci&amp;#xF3;n en funci&amp;#xF3;n a la columna que est&amp;#xE1; como invisible. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Una vez hecho lo anterior habremos preparado el terreno, ahora programaremos el procedimiento que nos permitir&amp;#xE1; tener acceso a un dato de una columna invisible&lt;/p&gt;  &lt;p&gt;Ahora programaremos el delegado &amp;quot;GridView1_RowDataBound&amp;quot; &lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;Protected&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; GridView1_RowDataBound(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI.WebControls.GridViewRowEventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; GridView1.RowDataBound&lt;/font&gt; &lt;/font&gt;    &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; e.Row.RowType = DataControlRowType.DataRow &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; btn &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Button      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; lbl &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Label&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; btn = e.Row.FindControl(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;btn&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Not&lt;/font&gt;&lt;font size="2"&gt; btn &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Is&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;btn.CommandArgument = e.Row.RowIndex      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; btn.CommandName = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;EDITAR&amp;quot;      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;lbl = e.Row.FindControl(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;lbl&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; lbl.Text = e.Row.DataItem(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;codper&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Explicando un poco: Con el primer IF seleccionamos las filas de datos, luego declaramos 2 variables una de tipo Bot&amp;#xF3;n y la otra de tipo label, estas servir&amp;#xE1;n para hacer referencia al bot&amp;#xF3;n y al label que colocamos en la comuna plantilla. El siguiente paso es &amp;quot;ubicar&amp;quot; al bot&amp;#xF3;n en la fila y obtener su referencia en la variable &amp;quot;btn&amp;quot;, hasta ah&amp;#xED; todo f&amp;#xE1;cil, ahora viene lo rayado del asunto.&lt;/p&gt;  &lt;p&gt;Tenemos que guardar el numero de fila en la propiedad commandArgument del bot&amp;#xF3;n para posteriormente saber &amp;quot;el bot&amp;#xF3;n de que fila fue presionado&amp;quot; esto en el evenro RowCommand que lo veremos luego. Luego asignamos &amp;quot;EDITAR&amp;quot; como nombre de comando del bot&amp;#xF3;n, esto tambi&amp;#xE9;n servir&amp;#xE1; en el evento rowCommand, para identificar el tipo de acci&amp;#xF3;n que deberemos hacer cuando el bot&amp;#xF3;n sea presionado.&lt;/p&gt;  &lt;p&gt;Finalmente ubicamos el label que colocamos en la columna plantilla y en la propiedad text guardamos el campo de la columna invisible obteni&amp;#xE9;ndolo con e.Row.DataItem(&amp;quot;codper&amp;quot;) en el caso del ejemplo &amp;quot;codper&amp;quot;&amp;#xA0; es el nombre del campo de una tabla enlazada al grid, la propiedad DataItem es la colecci&amp;#xF3;n que contiene los datos enlazados de la fila asociada.&lt;/p&gt;  &lt;p&gt;Finalmente debemos programar el evento que usar&amp;#xE1; la informaci&amp;#xF3;n de la columna invisible, ah&amp;#xED; va:&lt;/p&gt; &lt;font size="2"&gt;   &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;Protected&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;font size="2"&gt; GridView2_RowCommand(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; sender &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Object&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; e &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; System.Web.UI.WebControls.GridViewCommandEventArgs) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Handles&lt;/font&gt;&lt;font size="2"&gt; GridView2.RowCommand&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;If&lt;/font&gt;&lt;font size="2"&gt; e.CommandName = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;EDITAR&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; gvr &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; GridViewRow      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; lbl &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Label&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;    &lt;p&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; 'e.CommandArgument tiene el numero de fila seleccionada      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/p&gt;   &lt;font color="#008000" size="2"&gt;'Obtenemos la fila y buscamos en ella el label &amp;quot;lbl&amp;quot;      &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;#xA0;&amp;#xA0; gvr = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Me&lt;/font&gt;&lt;font size="2"&gt;.GridView2.Rows(e.CommandArgument)      &lt;br /&gt;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;lbl = gvr.FindControl(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;lbl&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2"&gt;&amp;#xA0;&amp;#xA0; If&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Not&lt;/font&gt;&lt;font size="2"&gt; lbl &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Is&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Nothing&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then      &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; nElDatoInvisible &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer      &lt;br /&gt;&lt;font color="#008000" size="2"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; 'Obtenemos el dato &amp;quot;invisible&amp;quot; para usarlo luego&lt;/font&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;&amp;#xA0;&amp;#xA0; &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; nElDatoInvisible = lbl.Text       &lt;br /&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#008000" size="2"&gt;' desde aqui ya se puede usar el dato de la columna invisible&lt;/font&gt;       &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;#xA0;&amp;#xA0; End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Sub&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;Como se v&amp;#xE9; en el c&amp;#xF3;digo anterior la obtenci&amp;#xF3;n del valor &amp;quot;invisible&amp;quot;&amp;#xA0; consiste en basicamente: identidicar la accion por medio de e.CommandName, ubicar la fila del grid en la cual se produjo la presi&amp;#xF3;n del bot&amp;#xF3;n por medio de e.CommandArrgument y finalmente buscar el label &amp;quot;lbl&amp;quot; que contiene el dato de la columna invisible para la fila seleccionada&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;Espero les sirva&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#333333"&gt;Salu2        &lt;br /&gt;SergioT&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-8271877799735231960?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/8271877799735231960/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/columnas-invisibles-en-un-gridview.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8271877799735231960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8271877799735231960'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/11/columnas-invisibles-en-un-gridview.html' title='Columnas invisibles en un gridview'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-9210902563956848402</id><published>2007-10-25T11:54:00.000-04:00</published><updated>2007-10-25T12:41:38.369-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Table Adapters y el futuro</title><content type='html'>hola&lt;br /&gt;&lt;br /&gt;la evolución de la combinación de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;datasets&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;tipados&lt;/span&gt; con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;dataadapters&lt;/span&gt; ha dado surgimiento a los nuevos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;tableadapters&lt;/span&gt; que ahora llevan un nivel mayor de abstracción que los mencionados, estas clases generadas por el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;VS&lt;/span&gt;2005  son muy &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;faciles&lt;/span&gt; de usar y además proporcionan métodos con los cuales es posible enlazar los datos muy &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;facilmente&lt;/span&gt; e incluso manejar las operaciones de  altas , bajas y modificaciones de una manera transparente.&lt;br /&gt;&lt;br /&gt;Yo cambie mi modelo de programación hacia ellos y he tenido muy buenos resultados ya que se me ha simplificado el código y he podido separar las capas de mi aplicación de manera muy fácil y clara, así que si aun no los conocen les dejo un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;link&lt;/span&gt; que los presenta con mucho detalle&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/141105/voices/tableadapters.mspx"&gt;http://www.microsoft.com/spanish/msdn/articulos/archivo/141105/voices/tableadapters.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;habrá que ver como se comportan y como sobreviven ante la próxima generación de acceso a datos llamada &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;LinQ&lt;/span&gt; que se viene con el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;VS&lt;/span&gt;2008 y que ya está disponible, bueno &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MS&lt;/span&gt; como siempre &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;moviendonos&lt;/span&gt; el piso con nuevas innovaciones que la verdad hacen que sea muy difícil seguirles el paso en profundidad y al nivel de detalle que uno quisiera,  pero bueno... ahí vamos  programando y aprendiendo lo que venga, les dejo unos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;links&lt;/span&gt; de este tema&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/LINQ_Project.mspx"&gt;http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/LINQ_Project.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/Default.aspx?loc=es"&gt;http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/Default.aspx?loc=es&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;otra novedad que se viene es El Marco de Entidades de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;ADO&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;NET&lt;/span&gt;, lo cual permitirá aplicar mayor grado de abstracción en nuestros desarrollos en relación al modelo del problema y la representación y manipulación del almacenamiento de los datos, aquí les dejo un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;link&lt;/span&gt; interesante al respecto&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/adonetentity.mspx"&gt;http://www.microsoft.com/spanish/msdn/articulos/archivo/041206/voices/adonetentity.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;salu&lt;/span&gt;2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-9210902563956848402?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/9210902563956848402/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/table-adapters-y-el-futuro.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/9210902563956848402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/9210902563956848402'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/table-adapters-y-el-futuro.html' title='Table Adapters y el futuro'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6748164273328515313</id><published>2007-10-24T16:15:00.000-04:00</published><updated>2008-12-09T07:17:16.774-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Formato de fechas en un GridView</title><content type='html'>&lt;div&gt;Hola&lt;br /&gt;&lt;br /&gt;Para lograr un formato de fecha corta en un gridview, les voy a dar 2 recetas ya verán ustedes cual prefieren utilizar&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;La primera&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;En relación con el post anterior de los tildes y "eñes" había comentado que la forma de hacer que no aparezcan símbolos raros era deshabilitar el htmlencode de la columna del grid que muestra el símbolo, pues bien ahora me toca dar la misma receta pero para otro tema que la verdad me volvio loco por unas buenas horas la primera vez que me encontré con él, me refiero a dar l formato de fecha en dd/mm/yyyy a una columna enlazada a datos de un grid.&lt;br /&gt;&lt;br /&gt;En resumen, lo que hay que hacer para que una columna enlazada de un grid a un campo fecha la muestre en formato de fecha corta, colocando a HtmlEncode en false es lo siguiente:&lt;br /&gt;&lt;br /&gt;Si tienen VS2005 &lt;/div&gt;&lt;ol&gt;&lt;li&gt;Entrar a tareas de GridView&lt;/li&gt;&lt;li&gt;Editar columnas&lt;/li&gt;&lt;li&gt;Seleccionar el campo enlazado a la fecha&lt;/li&gt;&lt;li&gt;asignar &lt;strong&gt;False &lt;/strong&gt;a la propidad &lt;strong&gt;HtmlEncode&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;asignar &lt;strong&gt;{0:d} &lt;/strong&gt;a la propiedad &lt;strong&gt;DataFormatString&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Eso es todo&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Si programan en el bloc de notas u otro editor significa que son lo suficientemente capos para no necesitar esta ayuda jejeje, pero en caso de que quisiesen escribir el código a mano definan la columna del grid como sigue:&lt;/p&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;La Segunda Forma&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;La otra forma es convirtiendo la columna enlazada en una columna template o plantilla, para ello hagan lo siguiente&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Entrar a tareas de GridView&lt;/li&gt;&lt;li&gt;Editar columnas&lt;/li&gt;&lt;li&gt;Seleccionar el campo enlazado a la fecha&lt;/li&gt;&lt;li&gt;Seleccionar el link button &lt;strong&gt;Convertir esta columna en TemplateField&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;hacer clic derecho en el grid , editar plantillas y seleccionar la columna plantilla que acabamos de crear&lt;/li&gt;&lt;li&gt;Ahi veremos que hay un "label" , entonces entramos a las tareas de ese label, donde en realidad solo hay "Editar DataBinding", que es lo que queremos hacer&lt;/li&gt;&lt;li&gt;luego en "Personalizar enlace" hay que colocar lo siguiente:&lt;br /&gt;&lt;br /&gt;Bind("ElCampoFecha","{0:d}")&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Aceptar hasta cerrar y eso es todo&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;asp:templatefield headertext="xxx"&gt;En el caso de hacerlo por codigo seria:&lt;br /&gt;&lt;/p&gt;&lt;/asp:templatefield&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5125014125487222946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_6chgYcbG6a4/Rx-1MZKGcKI/AAAAAAAAABQ/i87cOIeFxyM/s400/ColumnaTemplateFEcha.jpg" border="0" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Bueno eso es todo espero les sirva&lt;/p&gt;&lt;div&gt;salu2&lt;br /&gt;Sergio&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6748164273328515313?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6748164273328515313/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/formato-de-fechas-en-un-gridview.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6748164273328515313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6748164273328515313'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/formato-de-fechas-en-un-gridview.html' title='Formato de fechas en un GridView'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6chgYcbG6a4/Rx-1MZKGcKI/AAAAAAAAABQ/i87cOIeFxyM/s72-c/ColumnaTemplateFEcha.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4334220147003129894</id><published>2007-10-18T11:49:00.000-04:00</published><updated>2007-10-18T12:08:14.538-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Tildes y "eñes" se convierten simbolos raros</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Un "&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;problema&lt;/span&gt;" interesante es el del tratamiento de tildes y eñes cuando estos vienen de un campo de un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;grid&lt;/span&gt; por ejemplo o de cualquier control que tenga habilitado el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;htmlencode&lt;/span&gt;. Si no les pasó pueden generar el error haciendo lo siguiente&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Coloquen un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;textbox&lt;/span&gt; en la pantalla y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;llamenlo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;txtFilaDelGrid&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Coloquen un segundo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;textbox&lt;/span&gt; y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;llamenlo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;txtCelda&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Coloquen un &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;botón&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Creen un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;GridView&lt;/span&gt; que toma datos de una tabla por ejemplo, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;asegúrense&lt;/span&gt; que los datos tienen "ñ" y tildes para que vean el problema&lt;/li&gt;&lt;li&gt;Programemos el evento &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;click&lt;/span&gt; de &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;botón&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;agragandole&lt;/span&gt;  lo siguiente&lt;br /&gt;&lt;br /&gt;me.txtCelda.text=me.GidView1.rows(cint(me.txtFilaGrid.text)).cells(3).text&lt;br /&gt;&lt;br /&gt;Ojo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;fijense&lt;/span&gt; que coloqué 3 en la celda, remplacen eso &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;por&lt;/span&gt; la celda en la que tienen las "ñ" o tildes&lt;/li&gt;&lt;li&gt;Corran la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;aplicacion&lt;/span&gt; ,luego en el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;textbox&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;txtFilaGrid&lt;/span&gt; escriban el numero de linea que tiene texto con "ñ" o tildes, luego presionen el botón y verán lo que sale en él&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Para corregir&lt;/strong&gt; esto la solución es &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;demaciado&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_21"&gt;fácil&lt;/span&gt; pero la verdad que no muy "visible", bueno lo único que hay que hacer es  colocar la propiedad &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;HTMLEnCode&lt;/span&gt; en falso  para la columna del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;grid&lt;/span&gt; en la cual están los datos "problemáticos" Lo que ocurre es que es cuando esta propiedad está habilitada el contenido del control se toma como si fuese html y no texto plano lo cual deriva en la traducción de las "ñ" y tildes.&lt;/p&gt;&lt;p&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Salu&lt;/span&gt;2&lt;br /&gt;Sergio&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4334220147003129894?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4334220147003129894/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/tildes-y-ees-se-convierten-simbolos.html#comment-form' title='29 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4334220147003129894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4334220147003129894'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/tildes-y-ees-se-convierten-simbolos.html' title='Tildes y &quot;eñes&quot; se convierten simbolos raros'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6029068937957787804</id><published>2007-10-15T11:56:00.000-04:00</published><updated>2007-10-16T15:31:18.609-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Reports'/><title type='text'>Reportes con crystal reports</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;A veces lo que cuesta es comenzar &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;así&lt;/span&gt; que &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;aquí&lt;/span&gt; les dejo el procedimiento para mostrar un reporte creado con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;crystal&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;reports&lt;/span&gt; desde un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;winform&lt;/span&gt;, la intención es simplemente indicar como se muestra un reporte en un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;winform&lt;/span&gt;, no enseñar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Crystal&lt;/span&gt;. Bueno &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;ahí&lt;/span&gt; va el procedimiento&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Definir un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;table&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;adapter&lt;/span&gt; que recupere la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;información&lt;/span&gt; hacia un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;dataset&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;tipado&lt;/span&gt;. &lt;/li&gt;&lt;li&gt;Adicionen a su proyecto un nuevo &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;elemento&lt;/span&gt; de tipo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Crystal&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Report&lt;/span&gt; y sigan el asistente de configuración:&lt;br /&gt;2.1 Seleccionar el tipo de reporte &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;Estándar&lt;/span&gt; y presionar siguiente&lt;br /&gt;2.2 Crear una nueva conexión del reporte con el esquema del origen de datos para ello seleccionen las siguientes opciones &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;ADO&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Net&lt;/span&gt;/ buscar el archivo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;XSD&lt;/span&gt; del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;dataset&lt;/span&gt; que utilizaremos como origen de datos&lt;br /&gt;2.3 Luego de elegir el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;DS&lt;/span&gt; hay que seleccionar la tabla, campos, agrupaciones, etc. Eso se logra siguiendo el asistente&lt;/li&gt;&lt;li&gt;Adicionen un nuevo formulario &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;WinForm&lt;/span&gt; y coloquen en ~el un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;CrystalReportViewer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Finalmente en el evento load del nuevo formulario ingresar el siguiente código&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Dim&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;cr&lt;/span&gt; &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; &lt;span style="color:#3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;New&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;crPrueba&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;Dim&lt;/span&gt;&lt;/span&gt; da &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt;&lt;span style="color:#3366ff;"&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;New&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;DS&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;pruebaTableAdapters&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;ProductsTableAdapter&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Dim&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;dt&lt;/span&gt; &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; &lt;span style="color:#3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;New&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;DataTable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;dt.Merge(da.GetData)&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;cr&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;SetDataSource&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;dt&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Me&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;CrystalReportViewer&lt;/span&gt;1.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;ReportSource&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;cr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Explicando un poco el código vemos que hay que instanciar un objeto del tipo del reporte que se quiere mostrar, en nuestro ejemplo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;crPrueba&lt;/span&gt; es instanciado en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;cr&lt;/span&gt;. Luego creamos una &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_45"&gt;instancia&lt;/span&gt; de un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;TableAdapter&lt;/span&gt; que será el que obtenga los datos y finalmente un objeto &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;DataTable&lt;/span&gt; que será el que reciba los datos del &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;tableadapter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;lo primero que hay que hacer es llenar la tabla con los datos , con el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;metodo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;merge&lt;/span&gt;, luego esa tabla llena se la pasamos al reporte y finalmente el reporte ya con datos se lo pasamos al visor.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Como ultimo paso &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_51"&gt;estaría&lt;/span&gt; el llamar al nuevo formulario desde un menú o &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_52"&gt;botón&lt;/span&gt; en otro formulario&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Lo interesante del código presentado es que es el mismo que se &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_53"&gt;usaría&lt;/span&gt; en una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;aplicación&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;web&lt;/span&gt;. &lt;/p&gt;&lt;p&gt;Espero sirva de guia para quien nunca hizo nada con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;crystal&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;Reports&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;Salu&lt;/span&gt;2&lt;br /&gt;Sergio&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6029068937957787804?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6029068937957787804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/reportes-con-crystal-reports-1.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6029068937957787804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6029068937957787804'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/reportes-con-crystal-reports-1.html' title='Reportes con crystal reports'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6568355324005890512</id><published>2007-10-02T03:04:00.000-04:00</published><updated>2007-10-15T12:33:13.151-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Traductor de código C#  a VB.Net</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Encontré una pagina en la que hay un interesante traductor de código de C# a VB.Net y viceversa, estaba bastante bueno ya lo utilicé un par de veces y funcionó muy bien, En muchas ocasiones he encontrado código interesante en la web pero en C# y con esta herramienta lo paso a VB muy facilmente&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.carlosag.net/Tools/CodeTranslator/Default.aspx"&gt;http://www.carlosag.net/Tools/CodeTranslator/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6568355324005890512?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6568355324005890512/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/traductor-de-cdigo-c-vbnet.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6568355324005890512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6568355324005890512'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/10/traductor-de-cdigo-c-vbnet.html' title='Traductor de código C#  a VB.Net'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-971302368152708858</id><published>2007-09-19T16:41:00.001-04:00</published><updated>2007-10-15T11:55:53.499-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Reports'/><title type='text'>Compatibilidad Win2003 Sp2 y Crystal Reports for .net 1.1</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Si instalan el sp2 en un windows server 2003 y tienen una aplicación con framework 1.1 que utiliza el crystal reports como motor de reportes, preparense para dejar de exportar reportes desde crystal en formato excel, la verdad que me costó encontrar pero habia existido una solución que esta en la siguiente dirección&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="ftp://ftp1.businessobjects.com/outgoing/CHF/crnet11win_en.zip" href="ftp://ftp1.businessobjects.com/outgoing/CHF/crnet11win_en.zip"&gt;ftp://ftp1.businessobjects.com/outgoing/CHF/crnet11win_en.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lo que yo hice fue descargar ese file, descomprimirlo ejecutar el archivo de instalación que se genera e instalar solamnte a:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ExportModeller.dll&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Aparentemente es la que funcionaba mal y es la DLL que dicen ellos que hay que cambiar, con eso se arregló el problema&lt;br /&gt;&lt;br /&gt;salu2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-971302368152708858?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/971302368152708858/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/09/compatibilidad-win2003-sp2-y-crystal.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/971302368152708858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/971302368152708858'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/09/compatibilidad-win2003-sp2-y-crystal.html' title='Compatibilidad Win2003 Sp2 y Crystal Reports for .net 1.1'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-416060497605505137</id><published>2007-09-12T10:11:00.000-04:00</published><updated>2007-09-12T10:13:50.259-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Comparacion de versiones de SQL Server 2005</title><content type='html'>hola&lt;br /&gt;&lt;br /&gt;en el link que paso a continuacion hay una comparacion detallada de las diferentes versiones de Sql Server 2005 , esta bonito ya que resume todo el tema&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/spain/sql/productinfo/features/compare-features.mspx"&gt;http://www.microsoft.com/spain/sql/productinfo/features/compare-features.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;salu2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-416060497605505137?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/416060497605505137/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/09/comparacion-de-versiones-de-sql-server.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/416060497605505137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/416060497605505137'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/09/comparacion-de-versiones-de-sql-server.html' title='Comparacion de versiones de SQL Server 2005'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-5855291602751624144</id><published>2007-08-09T19:15:00.001-04:00</published><updated>2008-11-17T10:38:53.722-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>depuración de scripts desde VS</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Muchas veces tenemos scripts complejos que desamos depurarlos como si se tratase de código de servidor, yo tenia la "curiosidad" de que a veces podia hacerlo y otras no y la verdad parecia cosa de brujas :) pero no había sido así la verdad es que era tan facil como hacer la siguiente receta:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ir al escritorio, botón derecho sobre el icono de Internet Explorer, seleccionar Propiedades (esen el IE ir a Herramientas -&gt; Opciones de Internet).&lt;br /&gt;En la pestaña Opciones Avanzadas. bajo la sección "Examinar" hay que desseleccionar dos lineas que son: Deshabilitar la depuración de secuencias de comandos (Internet Explorer)" y "Deshabilitar la depuración de secuencias de comandos (otros)".&lt;/li&gt;&lt;li&gt;Luego aplicar y aceptar hasta salir y eso es todo!!!&lt;/li&gt;&lt;li&gt;corrert la aplñicacion desde el VS con F5 y colocar los puntos de ruptura en el script que deseamos depurar&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Salu2&lt;br /&gt;SergioT&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-5855291602751624144?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/5855291602751624144/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/08/depuracin-de-scripts-desde-vs.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5855291602751624144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/5855291602751624144'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/08/depuracin-de-scripts-desde-vs.html' title='depuración de scripts desde VS'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6085645925296308229</id><published>2007-08-02T11:10:00.000-04:00</published><updated>2007-08-02T12:19:27.320-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>primeros pasos en ajax</title><content type='html'>Algún rato habia que comenzar a ver AJAX (Asynchronous Javascript and XML),  hay que aclarar que ajax no es un tecnologia por si misma sino un conjunto de tecnologias  ya conocidas que unificadas forman Ajax, su proposito principal es crear aplicaciones mas amigables y rapidas via web,  Ajax es una evolución de dhtml , utiliza xhtml, javascript, css, DOM (document object model) para visualizar la información en el explorador, tambien se apoya en XML y XSTL para manipular la información mostrada, utiliza al objeto XMLHttpRequest (inventado por Microsoft desde el IE 5) junto a javascript para actualizar la pantalla sin hacer los feos postbacks a los que estamos acostumbrados en las aplicaciones web.&lt;br /&gt;&lt;br /&gt;Bueno como yo utilizo VS2005 tengo un primer ejercicio tremendamente sencillo para que puedan ver ajax en funcionamiento&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Crear un nuevo proyecto que sea de tipo AJAX Enabled web application&lt;br /&gt;&lt;/li&gt;&lt;li&gt;En la pagina default coloquen de la barra de herramientas un scriptManager , solo en el caso que no estuviese ya en la pagina, por que solo puede haber uno por pagina&lt;br /&gt;&lt;/li&gt;&lt;li&gt;coloquen un DropDownList en la pagina y llenen los datos de la coleccion items con algo que deseen y activen la propiedad autopostback a true&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Coloquen un UpdatePanel en la pagina y dentro de el coloquen un label&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hagan 2 clicks en el dropdownlist y coloquen&lt;br /&gt;&lt;strong&gt;label1.text = dropdownlist1.selectedvalue&lt;br /&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Vuelvan a la pantalla de diseno  y seleccionen el UpdatePanel, en la ventana de propiedades ingresen a la coleccion de triggers y añadan un nuevo triger , seleccionen como &lt;strong&gt;ControlId el dropdownlist1&lt;/strong&gt; y como &lt;strong&gt;EventName a SelectedIndexChanged&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Eso es todo ahora ejecuten la aplicacion y veran que al cambiar el elemento seleccionado en el dropdownlist el label toma el value del elemento seleccionado si que se vea el refresh de la pantalla, es como si no se produjera el postback!!! &lt;/p&gt;&lt;p&gt;Antes de poder hacer esto deberan instalar el sp1 del VS 2005 y ademas &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=CA9D90FA-E8C9-42E3-AA19-08E2C027F5D6&amp;displaylang=en"&gt;Descargar Ajax&lt;/a&gt; e instalarlo&lt;/p&gt;&lt;p&gt;Algunos enlaces que vale la pena ver sobre ajax &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.maestrosdelweb.com/editorial/ajax/"&gt;Ajax: Un nuevo acercamiento a las aplicaciones web&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.asp.net/ajax/"&gt;El sitio oficial de ajax de Microsoft&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gl.wikipedia.org/wiki/AJAX"&gt;En wikipedia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.programacionweb.net/cursos/curso.php?num=2"&gt;Curso de Ajax&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6085645925296308229?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6085645925296308229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/08/primeros-pasos-en-ajax.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6085645925296308229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6085645925296308229'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/08/primeros-pasos-en-ajax.html' title='primeros pasos en ajax'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4991001293897794342</id><published>2007-06-27T12:11:00.000-04:00</published><updated>2007-06-27T12:24:03.311-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Habilitar y deshabilitar subcontroles</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Cuando tenemos forms o contenedores que tienen varios controles y queremos deshabilitar o habilitar según sea la funcíón de la pantalla debemos hacer una sub que coloque en true o false la propiedad enabled de controles como textbox, dropdowlist y otros, para evitar la fatiga hice la siguiente función la cual recibe como parametro un control y habilita o deshabilita a sus sub controles de una sola vez, ahi va&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Public Sub&lt;/span&gt; HabDesHabCtrls(&lt;span style="color:#3333ff;"&gt;ByVal&lt;/span&gt; oControl &lt;span style="color:#3333ff;"&gt;As Control&lt;/span&gt;, ByVal lHabilita &lt;span style="color:#3333ff;"&gt;As Boolean&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; oCtrl &lt;span style="color:#3333ff;"&gt;As Control&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;For Each&lt;/span&gt; oCtrl &lt;span style="color:#3333ff;"&gt;In&lt;/span&gt; oControl.Controls&lt;br /&gt;       &lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; TypeOf oCtrl Is TextBox &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;              CType(oCtrl, TextBox).Enabled = lHabilita&lt;br /&gt;       &lt;span style="color:#3333ff;"&gt;ElseIf&lt;/span&gt; TypeOf oCtrl Is DropDownList &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;              CType(oCtrl, DropDownList).Enabled = lHabilita&lt;br /&gt;       &lt;span style="color:#3333ff;"&gt;ElseIf&lt;/span&gt; TypeOf oCtrl Is CheckBox Then&lt;br /&gt;              CType(oCtrl, CheckBox).Enabled = lHabilita&lt;br /&gt;        &lt;span style="color:#000099;"&gt;ElseIf&lt;/span&gt; TypeOf oCtrl Is ListBox &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;              CType(oCtrl, ListBox).Enabled = lHabilita&lt;br /&gt;       &lt;span style="color:#3333ff;"&gt;ElseIf&lt;/span&gt; oCtrl.Controls.Count &gt; 0 &lt;span style="color:#3333ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Then&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;HabDesHabCtrls&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;oCtrl&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;lHabilita&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;       &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;End&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;End&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La idea mas interesante aplicada en esta función es la recursividad, como pueden ver esta función trabaja apagando o encendiendo a todos los controles del contenedor y de los contenedores que se hallé.&lt;br /&gt;&lt;br /&gt;La recursividad es sumamente útil en todo tipo de situaciones en las cuales se forme una jerarquía, en este caso hay una jerarquía de controles y &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;subcontroles&lt;/span&gt;, también es sumamente útil para cargar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;treeviews&lt;/span&gt; desde &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;datatables&lt;/span&gt;  o colecciones que tienen jerarquías, en otra ocasión haré un ejemplo aplicado a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;treviews&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;salu&lt;/span&gt;2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4991001293897794342?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4991001293897794342/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/06/habilitar-y-deshabilitar-subcontroles.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4991001293897794342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4991001293897794342'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/06/habilitar-y-deshabilitar-subcontroles.html' title='Habilitar y deshabilitar subcontroles'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-1017875161146424843</id><published>2007-06-13T12:45:00.000-04:00</published><updated>2008-12-09T07:17:18.067-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Enlazar una colección genérica a un GridView</title><content type='html'>&lt;p&gt;Que ocurre si queremos mostrar datos en un grid de una clase que devuelve una coleccion y no un dataset? como lo enlazamos? bien este es un pequeño ejemplo de como se debe hacer, sin mas charla vamos al código &lt;/p&gt;&lt;p&gt;Haremos lo siguiente &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Se debe crear un sitio web nuevo desde el vs.net&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Definiremos la clase con las propiedades necesarias e incluiremos un método que devuelve una colección de objetos del tipo que necesitamos , para enlazar al gridview&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adicionaremos las ¨condiciones¨ para que el objeto ObjetdataSource pueda ¨navegar¨ por la colección &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Crearemos la pagina web y adicionaremos un gridview y lo enlazaremos con nuestra colección&lt;/li&gt;&lt;/ol&gt;Comencemos&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Creen un sitio web&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tendremos una clase de Afiliado que tendrá simplemente los datos de un afiliado que serán el nombre el telefono y la ciudad en la cual vive. a continuación listo la clase completa para explicar algunos detalles un poco mas adelante&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;Imports&lt;/span&gt; Microsoft.VisualBasic&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Imports&lt;/span&gt; System.Collections.Generic&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;[componentmodel.dataobject(true)] _&lt;br /&gt;&lt;/strong&gt;&lt;span style="color:#000099;"&gt;Public&lt;/span&gt; Class clsAfiliado&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public&lt;/span&gt; sNombre As String&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public&lt;/span&gt; sCiudad As String&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public&lt;/span&gt; sTelefono As String&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Sub New&lt;/span&gt;(ByVal s_Nombre &lt;span style="color:#000099;"&gt;As String&lt;/span&gt;, ByVal s_Ciudad &lt;span style="color:#000099;"&gt;As String&lt;/span&gt;, ByVal s_Telefono &lt;span style="color:#000099;"&gt;As String&lt;/span&gt;)&lt;br /&gt;sNombre = s_Nombre&lt;br /&gt;sCiudad = s_Ciudad&lt;br /&gt;sTelefono = s_Telefono&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;strong&gt;[componentmodel.dataobjectfield(true)] _&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public Property&lt;/span&gt; Nombre() As String&lt;br /&gt;&lt;span style="color:#000099;"&gt;Get&lt;/span&gt;&lt;br /&gt;Return sNombre&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Get&lt;br /&gt;Set(&lt;/span&gt;ByVal value As String)&lt;br /&gt;sNombre = value&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Set&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;End Property&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;[componentmodel.dataobjectfield(true) ]&lt;/strong&gt; _&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public Property&lt;/span&gt; Ciudad() As String&lt;br /&gt;&lt;span style="color:#000099;"&gt;Get&lt;/span&gt;&lt;br /&gt;Return sCiudad&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Get&lt;br /&gt;Set&lt;/span&gt;(ByVal value As String)&lt;br /&gt;sCiudad = value&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Set&lt;br /&gt;End Property&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;[componentmodel.dataobjectfield(true)]&lt;/strong&gt; _&lt;br /&gt;&lt;span style="color:#000099;"&gt;Public Property&lt;/span&gt; Telefono()&lt;br /&gt;&lt;span style="color:#000099;"&gt;Get&lt;br /&gt;&lt;/span&gt;Return sTelefono&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Get&lt;br /&gt;Set&lt;/span&gt;(ByVal value)&lt;br /&gt;sTelefono = value&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Set&lt;br /&gt;End Property&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;[ComponentModel.DataObjectMethod(ComponentModel.DataObjectMethodType.Select, True)] _&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Public Shared Function &lt;span style="color:#000000;"&gt;GetclsAfiliados()&lt;/span&gt; As &lt;span style="color:#000000;"&gt;List(Of clsAfiliado)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;Dim&lt;/span&gt; L As &lt;span style="color:#000099;"&gt;New&lt;/span&gt; List(Of clsAfiliado)&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Sergio ", "Santa Cruz", "3454344"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Rodrigo ", "Santa Cruz", "5434562"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New &lt;/span&gt;clsAfiliado("Claudia ", "Foz de Iguazu", "423412343"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Patricio ", "Santiago", "54345"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Fernando ", "Mexico D.F.", "5432454"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Roger ", "Santiago", "3452453"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Alberto ", "Cochabamba", "423412343"))&lt;br /&gt;L.Add(&lt;span style="color:#000099;"&gt;New&lt;/span&gt; clsAfiliado("Diego ", "Cochabamba", "423412343"))&lt;br /&gt;&lt;span style="color:#000099;"&gt;Return&lt;/span&gt; L&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Function&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Class&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Como pueden notar esta clase tiene 3 propiedades un constructor y un método que devuelve una coleccion de objetos del tipo clsAfiliado, este será el metodo que utilicemos en el objectDataSource mas adelante a la hora de crear el enlace&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El codigo anterior existen algunos atributos (que los coloqué en negrita) tanto delante del nombre de la clase como de las propiedades y del método que devuelve la coleccion , estos son los atributos con los cuales trabaja ObjectDataSource y que le permiten reconocer a las propiedades mediante la reflexion y lograr la integración con los aistentes del visual studio. Un detalle , por culpa del editor tuve que quitar los simbolos "&lt;" y "&gt;" los cuales deben encerrar a los atributos en lugar de los corchetes que puse.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ahora en la pagina aspx lancemos un GridView y mediante el menu contextual de "Tareas del grid" y en "Elegir origen de datos" seleccionen "Nuevo Origen de datos" como en la figura siguiente&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5076432126434758546" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_6chgYcbG6a4/RnMcH3aGT5I/AAAAAAAAAAo/DgeDnWzrsw4/s320/Colec_Grid1.JPG" border="0" /&gt;&lt;br /&gt;Luego aparecerá el asistente, ahi seleccionen a "Objeto" y seleccionen siguiente para continuar. A continuacion seleccionen la clase en el combo como se ve a continuación&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5076432994018152354" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_6chgYcbG6a4/RnMc6XaGT6I/AAAAAAAAAAw/bHprmdn1b8Y/s320/Colec_Grid2.JPG" border="0" /&gt;&lt;br /&gt;Oprimiendo siguiente llegamos a la última pantalla de configuracion del origen de datos en la cual seleccionaremos el metodo que necesitamos y oprimiremos Finalizar&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5076434295393243058" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_6chgYcbG6a4/RnMeGHaGT7I/AAAAAAAAAA4/1qhMZUzITO0/s320/Colec_Grid3.JPG" border="0" /&gt;&lt;br /&gt;El resultado que deben ver en la pantalla aspx al terminar el asistente es el grid ya configurado con las columnas correspondiendo a las propiedades de la clase clsAfiliado , como muestro a continuacion:&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5076434299688210370" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_6chgYcbG6a4/RnMeGXaGT8I/AAAAAAAAABA/CJ_pRBKtjo0/s320/Colec_Grid4.JPG" border="0" /&gt;&lt;br /&gt;Eso es todo si oprimen el f5 veran como se llena el grid con los datos de la coleccion&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;En conclusión podemos ver que se puede enlazar la coleccion directamente al gridview, en este sencillo ejemplo solo mostré como ver una coleccion en un grid pero es posible tambien definir los métodos de insercion, update, delete y lograr una operacion completa sobre los datos mostrados en el grid, eso si esto implica ya el acceso a datos lo que no toqué en este articulo ya que el objetivo era solamente mostrar la colección de objetos en el grid&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;Sergio&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-1017875161146424843?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/1017875161146424843/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/06/enlazar-una-coleccion-generica-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1017875161146424843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/1017875161146424843'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/06/enlazar-una-coleccion-generica-un.html' title='Enlazar una colección genérica a un GridView'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6chgYcbG6a4/RnMcH3aGT5I/AAAAAAAAAAo/DgeDnWzrsw4/s72-c/Colec_Grid1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-2942102726487723693</id><published>2007-06-08T12:27:00.000-04:00</published><updated>2007-06-11T12:19:55.832-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Combobox en formularios windows</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Normalmente utilicé controles enlazados a datatables por tanto cargar un combo me parecía bien fácil y sin mucho secreto, luego me dedique a desarrollar con asp.net y ahí llenar un dropdownlist es facilisimo, Resulta que para llenar un combo a mano en un formulario de windows la cuestion habia sido un poco mas "vueltera", si lo que se quiere es tener el típico par de Código y descripción donde la descripción se muestra en el combo pero no el código , el cual se usa luego para alguna otra cosa. Es trabajoso pero no del otro mundo ahi va:&lt;br /&gt;&lt;br /&gt;Vamos a hacer un ejemplito en el que llenaremos un combo con nombres de personas y la banda a la que pertenecen de forma que cuando cambiemos en el combo aparezca en unos labels el nombre seleccionado en combo y la banda en la cual toca.&lt;br /&gt;&lt;br /&gt;Les resumo lo que hay que hacer para luego ver todo paso a paso&lt;br /&gt;&lt;br /&gt;1.Abrir un proyecto windows y adicionar un formulario con un combo y 2 labels&lt;br /&gt;2.Definir una clase que contenga Cod, Nombre,Banda; la llamaremos Persona&lt;br /&gt;3. llenar una colección con objetos del tipo de la clase Persona&lt;br /&gt;4.Enlazar el combo con la colección de Personas&lt;br /&gt;5.Programar el evento SelectedIndexChanged del combo&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. abran un nuevo form de windows coloquen un combo y 2 labels&lt;br /&gt;2.Una clase podría ser asi:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Private Class Persona&lt;br /&gt;Public Cod As Integer&lt;br /&gt;Public Nombre As String&lt;br /&gt;Public Banda As String&lt;br /&gt;&lt;br /&gt;Sub New(ByVal n_Cod As Integer, ByVal s_Nombre As String, ByVal s_Banda As String)&lt;br /&gt;Cod = n_Cod&lt;br /&gt;Nombre = s_Nombre&lt;br /&gt;Banda = s_Banda&lt;br /&gt;End Sub&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;End Class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si, si, ya se que no es una clase muy formal por que en cualquier clase que se precie de seria las variables deberían ser private o protected y publicarse a travez de propertys, pero como el caso aquí es mostrar como llenar el combo, no seré tan formal. Bueno volviendo al tema esta clase la pueden crear en el mismo formulario&lt;br /&gt;&lt;br /&gt;3. Ahora llenemos una colección, para eso programaremos el método Form_load y utilizaré colecciones genéricas ( que son una maravillita ), no se olviden incluir :&lt;br /&gt;&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;&lt;br /&gt;En el formulario. Ahora programaemos el evento Load así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Dim gLista As New List(Of Persona)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;gLista.Add(New Persona(1, "David Gilmour", "Pink Floyd"))&lt;br /&gt;gLista.Add(New Persona(2, "Nick Mason", "Pink Floyd"))&lt;br /&gt;gLista.Add(New Persona(3, "Dave Mustain", "Megadeth"))&lt;br /&gt;gLista.Add(New Persona(4, "Kirk Hammet", "Metallica"))&lt;br /&gt;gLista.Add(New Persona(4, "Bruce Dickinson", "Iron Maiden"))&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Me.ComboBox1.DataSource = gLista&lt;br /&gt;Me.ComboBox1.DisplayMember = "Nombre"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4.Ahora lo último programar el evento SelectedIndexChanged, ahi va:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Dim oPer As Persona&lt;br /&gt;oPer = Me.ComboBox1.SelectedItem&lt;br /&gt;Me.Label1.Text = oPer.Nombre&lt;br /&gt;Me.Label2.Text = oPer.Banda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bien eso es todo, tampoco es dificil cierto?, Una gran ventaja de esta forma de utilizar los combos es que no solo se asocia el codigo si no lo que uno quiera, es muy flexible y poderoso&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;SergioT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-2942102726487723693?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/2942102726487723693/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/06/combobox-en-formularios-windows.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2942102726487723693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/2942102726487723693'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/06/combobox-en-formularios-windows.html' title='Combobox en formularios windows'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4542981052486364511</id><published>2007-05-31T16:44:00.000-04:00</published><updated>2007-06-01T18:49:03.861-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Control de acceso a paginas  en sitio autentificado por formularios</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Me topé con la siguiente situación, el sitio usa autenticación por formulario, pero resulta que los usuarios pueden o no tener acceso a ciertas paginas las cuales están en un menu del sitio que se configura segun el usuario, es decir que el usuario despues de ingresar su login y su password ve un menú con lo que él está autorizado a utilzar y nada mas.&lt;br /&gt;&lt;br /&gt;Si tengo un usuario "avivado" que se da cuenta que colocando la direccion de una pagina en la barra de direcciones puede entrar a cualquier pagina del sitio aunque no esté en su menú como me protejo???&lt;br /&gt;&lt;br /&gt;Bueno he resuelto esto de forma muy sencilla, puede que hayan mejore formas de hacerlo pero la que les cuento a continuación es facilinga, ahi va:&lt;br /&gt;&lt;br /&gt;Tengo dos formas de hacer casi lo mismo y son:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Crearemos una subrutina que será llamada desde todas las paginas que quiera proteger contra usuarios avivados, en el evento init o en el load&lt;/li&gt;&lt;li&gt;Colocar el código de protección en el global.asax para proteger a absolutamente todas las paginas del sitio&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Primera Forma&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cuando el usuario es validado y está a por ser direccionado a la pagina que solicitó es necesario cargar entre sus variables de session una variable con todas las paginas a las cuales tiene acceso, esto se puede hacer de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; oUsuario &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; clsUsuario&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; oUsuario.Login(txtNombre.Text, txtPassword.Text) &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FormsAuthentication.SetAuthCookie(oUsuario.Coduser, False)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Session("Paginas") = oUsuario.DevListaDePaginas&lt;/strong&gt; 'Lista de paginas autorizadas&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#3333ff;"&gt;Page&lt;/span&gt;.Response.Redirect(Request.ApplicationPath + _&lt;br /&gt;"/paginainicial.aspx?id=" &amp; oUsuario.Coduser, True)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Else&lt;/span&gt;&lt;br /&gt;lblError.Text = oUsuario.Errores&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End if&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Este seria el codigo para el boton de login, como verán asumo que hay una clase usuario que tiene un método Login que devuelve true o false segun sea el caso.&lt;br /&gt;Aqui lo importante es el metodo que lo presento en negrilla, DevListaDePaginas , este devolverá una cadena con las paginas a las cuales hay acceso, les coloco el código a continuación... aunque es muy facil haganlo uds no mas.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;El siguiente paso es crear una subrutina que busque una pagina entre las paginas autorizadas, Esta rutina se la puede colocar en un modulo que tenga funciones de proposito general, y que esté en el proyecto web o en cualquier clase que se desee, el código puede ser así:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Public Sub&lt;/span&gt; AccesoAPagina()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; sPaginasAut &lt;span style="color:#3333ff;"&gt;As String&lt;/span&gt; = &lt;strong&gt;HttpContext.Current.Session("Paginas")&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; sPaginaActual &lt;span style="color:#3333ff;"&gt;As String&lt;/span&gt; = &lt;strong&gt;HttpContext.Current.Request.Url.ToString()&lt;br /&gt;&lt;/strong&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; i &lt;span style="color:#3333ff;"&gt;As Int16&lt;/span&gt; = sPaginaActual.LastIndexOf("/")&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; i &gt; -1 &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;sPaginaActual = sPaginaActual.Substring(i)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End If&lt;br /&gt;If&lt;/span&gt; sPaginasAut.IndexOf(sPaginaActual) = -1 &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;HttpContext.Current.Response.Redirect&lt;/strong&gt;(HttpContext.Current.Request.ApplicationPath &amp;amp; _&lt;br /&gt;"/wfAccesoNegado.aspx")&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End If&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta Sub se la debe llamar de todas las paginas para las cuales queremos controlar acceso en el evento onLoad y listo eso es todo.&lt;br /&gt;El secreto aqui es utilizar a HttpContext.Current para obtener la session actual y recuperar la variable que tiene la cadena con las paginas autorizadas, mas facil que pescar en tina no ? &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Segunda forma&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;En realidad la segunda forma es practicamente identica a la primera, la diferencia está en el punto de control en este caso utilizaremos el global.asax, para controlar a absolutamente todas las paginas del sitio , sin correr el riesgo de olvidarnos llamar a la subrutina de control de acceso en una de ellas, bueno ahi va.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Abran el global.asax.vb y llenemos el delegado &lt;strong&gt;Application_BeginRequest&lt;/strong&gt; así:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;br /&gt;Sub &lt;span style="color:#000000;"&gt;Application_BeginRequest&lt;/span&gt;(ByVal &lt;span style="color:#000000;"&gt;sender&lt;/span&gt; As Object, ByVal &lt;span style="color:#000000;"&gt;e&lt;/span&gt; As EventArgs)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; sPaginaActual &lt;span style="color:#3333ff;"&gt;As String&lt;/span&gt; = &lt;strong&gt;HttpContext.Current.Request.Url.ToString()&lt;br /&gt;&lt;/strong&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; i &lt;span style="color:#3333ff;"&gt;As Int16&lt;/span&gt; = sPaginaActual.LastIndexOf("/")&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; i &gt; -1 &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;sPaginaActual = sPaginaActual.Substring(i+1)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End If&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;if&lt;/span&gt; &lt;strong&gt;sPaginaActual&lt;&gt;"fLogin.aspx" andalso sPaginaActual.Substring(0,1)="f"&lt;/strong&gt; &lt;span style="color:#3333ff;"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim &lt;strong&gt;&lt;span style="color:#000000;"&gt;sPaginasAut&lt;/span&gt;&lt;/strong&gt; As String = &lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;HttpContext.Current.Session("Paginas")&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; sPaginasAut.IndexOf(sPaginaActual) = -1 &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;HttpContext.Current.Response.Redirect&lt;/strong&gt;(HttpContext.Current.Request.ApplicationPath _&lt;br /&gt;&amp;amp; "/wfAccesoNegado.aspx")&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End If&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Como pueden ver es el mismo codigo de control que el de la funcion, solo que aumenté un IF para no controlar la pagina Login y para asegurarme de que entre solo si es un pagina del sitio, por eso asumo que las paginas del sitio tienen el prefijo "f"&lt;br /&gt;&lt;br /&gt;Bueno eso es todo espero les sirva&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;SergioT&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4542981052486364511?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4542981052486364511/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/control-de-acceso-paginas-en-sitio.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4542981052486364511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4542981052486364511'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/control-de-acceso-paginas-en-sitio.html' title='Control de acceso a paginas  en sitio autentificado por formularios'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7481252816853531652</id><published>2007-05-25T11:10:00.000-04:00</published><updated>2007-06-01T18:50:27.910-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Sobrecarga de operadores</title><content type='html'>&lt;p&gt;Para los que hemos utilizado c++ en alguna ocasión nos es familiar el tema de la sobrecarga de operadores, lo cual en realidad simplifica la lógica de la aplicacion de operaciones sobre objetos para los programadores que utilicen las clases que tienen implementada la sobrecarga.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Resumiendo la sobrecarga consiste en darle un significado particular a los operadores como + - / para operaciones entre objetos de la misma clase. Por ejemplo si hacemos 1 + 1 el resultado es 2, si hacemos " juan" + "ete" el resultado es "juanete", en estos ejemplos vemos al operador + funcionando de dos maneras diferentes, en la primera suma dos numero y en la segunda concatena dos cadenas, esta funcionalidad está dada por el lenguaje , que pasaría si deseáramos sumar dos objetos definidos por nosotros? pues de esto se trata la sobrecarga de operadores dar funcionalidad a un operador en función de nuestros requerimientos.&lt;br /&gt;&lt;br /&gt;Para ejemplificar mejor veamos un problema sencillo, Cada persona es la suma genetica de un padre y una madre cierto? entonces no estaria mal decir que hijo= padre+madre cierto?, veamos esto en código:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Primero.&lt;br /&gt;&lt;/strong&gt;Definiremos una clase Persona que guarda los datos de la persona y el nombre que el quisiera tenga su hijo y el operador + sobrecargado para la clase clsPersona, digamos algo así:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;Public&lt;/span&gt; Class&lt;/span&gt; clsPersona&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Private&lt;/span&gt; sNombre &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Private&lt;/span&gt; sApPaterno &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Private&lt;/span&gt; sApMaterno &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Private&lt;/span&gt; sNombreHijo &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Sub&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;New&lt;/span&gt;()&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Sub&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;New&lt;/span&gt;(ByVal s_Nombre &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;, ByVal s_ApPaterno &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;, ByVal s_ApMaterno &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;, ByVal s_NombreHijo &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;)&lt;br /&gt;sNombre = s_Nombre&lt;br /&gt;sApPaterno = s_ApPaterno&lt;br /&gt;sApMaterno = s_ApMaterno&lt;br /&gt;sNombreHijo = s_NombreHijo&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt; Nombre() &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Return&lt;/span&gt; sNombre&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;(ByVal value &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;)&lt;br /&gt;sNombre = value&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt; ApPaterno() &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Return&lt;/span&gt; sApPaterno&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;(ByVal value &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;)&lt;br /&gt;sApPaterno = value&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt; ApMaterno() &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Return&lt;/span&gt; sApMaterno&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;(ByVal value &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;)&lt;br /&gt;sApMaterno = value&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt; NombreHijo() &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Return&lt;/span&gt; sNombreHijo&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Get&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;(ByVal value &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;)&lt;br /&gt;sNombreHijo = value&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Set&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Property&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;Shared Operator +(&lt;/span&gt;ByVal oPadre As clsPersona, ByVal oMadre As clsPersona) As clsPersona&lt;br /&gt;Dim oHijo As &lt;span style="color:#6633ff;"&gt;New&lt;/span&gt; clsPersona&lt;br /&gt;oHijo.Nombre = oPadre.NombreHijo &amp; " " &amp;amp; oMadre.NombreHijo&lt;br /&gt;oHijo.ApPaterno = oPadre.ApPaterno&lt;br /&gt;oHijo.ApMaterno = oMadre.ApPaterno&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Return&lt;/span&gt; oHijo&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; Operator&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Public&lt;/span&gt; Overrides &lt;span style="color:#6633ff;"&gt;Function&lt;/span&gt; ToString() &lt;span style="color:#6633ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;Return&lt;/span&gt; Me.Nombre &amp; " " &amp;amp;amp; Me.ApPaterno &amp; " " &amp;amp; Me.ApMaterno&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6633ff;"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;End&lt;/span&gt; &lt;span style="color:#6666cc;"&gt;Class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Segundo&lt;/strong&gt; en una pagina aspx coloquen lo siguiente en el evento Page_Load&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;Dim&lt;/span&gt; oP &lt;span style="color:#6666cc;"&gt;As New&lt;/span&gt; clsPersona("Sergio", "Tardío", "Mostajo", "Raul")&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;Dim&lt;/span&gt; oM &lt;span style="color:#6666cc;"&gt;As New&lt;/span&gt; clsPersona("Silvana", "Lara", "Dominguez", "Daniel")&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;&lt;br /&gt;Dim&lt;/span&gt; oHijo &lt;span style="color:#6666cc;"&gt;As&lt;/span&gt; clsPersona&lt;br /&gt;&lt;span style="color:#ff6600;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff6600;"&gt;oHijo = oP + oM&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;Response.Write(oHijo.ToString)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Explicación&lt;/strong&gt;: Como ven la clase clsPersona tiene sobrecargado el operador + de forma que cuando se suman dos objetos de tipo persona el resultado es un nuevo objeto que lleva como nombre la suma del nombre que quiere el padre con el nombre que quiere la madre, como apellido paterno el del padre y como apellido materno el de la madre, logramos definir un comportamiento especifico para el operador + en nuestra clase, de esto se trata la sobrecarga de operadores&lt;/p&gt;&lt;p&gt;informacion mas detallada la podran ubicar en:&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms379613(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms379613(VS.80).aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;SergioT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7481252816853531652?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7481252816853531652/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/sobrecarga-de-operadores.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7481252816853531652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7481252816853531652'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/sobrecarga-de-operadores.html' title='Sobrecarga de operadores'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7814761674092325942</id><published>2007-05-24T11:10:00.000-04:00</published><updated>2007-06-01T18:50:56.632-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Colecciones Genericas</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;las colecciones genericas son realmente algo que faltaban en el framework 1.1 y uno no se da cuenta hasta que aparecieron en el 2.0 , ahora es mas facil crear colecciones personalizadas , mas facil que patear a un borracho en el suelo :)&lt;br /&gt;&lt;br /&gt;Aqui les coloco un ejemplito muy sencillo que que sirve para demostrar su poder, vamos paso a paso:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Incluir en el programa la referencia a:&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Imports&lt;/span&gt; System.Collections.Generic&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Vamos a crear una coleccion de nombres de personas, para eso definiré una estructura sencilla que representa a una persona&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Public&lt;/span&gt; &lt;span style="color:#3366ff;"&gt;Structure&lt;/span&gt; Nombre&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Public&lt;/span&gt; Id &lt;span style="color:#3366ff;"&gt;As Integer&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;Public&lt;/span&gt; Nombre &lt;span style="color:#3366ff;"&gt;As String&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Sub New&lt;/span&gt;(ByVal x &lt;span style="color:#3366ff;"&gt;As Integer&lt;/span&gt;, ByVal y &lt;span style="color:#3366ff;"&gt;As String&lt;/span&gt;)&lt;br /&gt;Id = x&lt;br /&gt;Nombre = y&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;Public Overrides Function&lt;/span&gt; ToString() &lt;span style="color:#3366ff;"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Return&lt;/span&gt; "Id: " &amp; Id &amp;amp; " Nombre: " &amp; Nombre&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;End Structure&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ahora creemos la coleccion generica que albergará a varios objetos del tipo "Nombre". Para probar esto en un proyecto web cualquiera adicionen una pagina y en el load de ella coloquen lo siguiente&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; l &lt;span style="color:#3366ff;"&gt;As New&lt;/span&gt; List(Of Nombre)&lt;br /&gt;&lt;br /&gt;l.Add(&lt;span style="color:#3366ff;"&gt;New&lt;/span&gt; Nombre(1, "Juan"))&lt;br /&gt;l.Add(&lt;span style="color:#3366ff;"&gt;New&lt;/span&gt; Nombre(2, "Juanete"))&lt;br /&gt;l.Add(&lt;span style="color:#3366ff;"&gt;New&lt;/span&gt; Nombre(3, "Juancho"))&lt;br /&gt;l.Add(&lt;span style="color:#3366ff;"&gt;New&lt;/span&gt; Persona(4, "Juancillo"))&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; aux &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; Nombre&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; s &lt;span style="color:#3366ff;"&gt;As New&lt;/span&gt; System.Text.StringBuilder&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;For Each&lt;/span&gt; aux In l&lt;br /&gt;s.Append(aux.ToString &amp;amp; ", ")&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Next&lt;/span&gt;&lt;br /&gt;Response.Write(s.ToString)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Eso es todo, facil no? ya se acabaron los lios para definir colecciones de clases personalizadas&lt;br /&gt;&lt;br /&gt;Salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7814761674092325942?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7814761674092325942/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/colecciones-genericas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7814761674092325942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7814761674092325942'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/colecciones-genericas.html' title='Colecciones Genericas'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6424261655337612382</id><published>2007-05-22T11:08:00.001-04:00</published><updated>2008-11-17T10:40:02.041-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Reports'/><title type='text'>Tutorial de Crystal y Vb.net</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Por si a alguien le interesa les dejo un link interesante acerca de crystal reports y vb.net&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.elguille.info/colabora/puntoNET/ElMoreno_CrystalVB.htm"&gt;http://www.elguille.info/colabora/puntoNET/ElMoreno_CrystalVB.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;es un punto de partida&lt;br /&gt;&lt;br /&gt;salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6424261655337612382?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6424261655337612382/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/tutorial-de-crystal-y-vbnet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6424261655337612382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6424261655337612382'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/tutorial-de-crystal-y-vbnet.html' title='Tutorial de Crystal y Vb.net'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-6963815118857632852</id><published>2007-05-11T23:11:00.000-04:00</published><updated>2007-05-25T10:19:22.662-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET'/><title type='text'>Excel y ADO.NET</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;En algunas ocasiones podriamos necesitar generar una planilla Excel desde una base de datos en una aplicacion .Net, para esto hay dos maneras de hacerlo,&lt;br /&gt;&lt;br /&gt;Una es utilizando el excel con OLE Automation es decir utilizando al Excel como un objeto dentro de la aplicación y utilizando los métodos publicados por el excel, en esta ocasión no hablaré de este método, tal vez en otra&lt;br /&gt;&lt;br /&gt;La segunda forma es la de crear el libro excel directamente con ADO.Net y crear la tabla en el libro por medio de una consulta de inserción común y corriente. Ahora va el código:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Definir una cadena de conexion para crear el libro excel: Como ejemplo a continuación les muestro la cadena de conexión necesaria para crear el libro excel en la raiz del disco C&lt;br /&gt;&lt;br /&gt;Private sCnn &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; String = _&lt;br /&gt;"Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _&lt;br /&gt;"Data Source=C:\MiLibro.xls;" &amp; _&lt;br /&gt;"Extended Properties='Excel 8.0;'"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Crear la hoja en el libro excel: Para eso utilizaremos una intreución sql como la siguiente&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dim sSql As String = "CREATE TABLE Hoja1 (" &amp; _&lt;br /&gt;"IdPersona INT," &amp;amp; _&lt;br /&gt;"Nombre NVARCHAR," &amp; _&lt;br /&gt;"email NVARCHAR," &amp;amp; _&lt;br /&gt;"Direccion NVARCHAR)"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Insertamos datos en la planilla: por medio de una consulta de insercion como la siguiente&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt; sql &lt;span style="color:#3366ff;"&gt;As&lt;/span&gt; String = "INSERT INTO Hoja1 (" &amp; _&lt;br /&gt;"IdPersona, Nombre, email, direccion)" &amp;amp; _&lt;br /&gt;"VALUES(1, 'James Hetfield', &lt;a href="mailto:"&gt;'jhetfield@metallica.com'&lt;/a&gt;, 'Calle Orion #7')"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eso es todo lo básico necesario , ahora viene el código ado.net que podriamos utilizar para ejecuutar las consultas descritas anteriormente, ahi va:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Private Function&lt;/span&gt;&lt;/strong&gt; Ejecutar(&lt;strong&gt;ByVal&lt;/strong&gt; sCnn &lt;strong&gt;As&lt;/strong&gt; String, _&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;ByVal&lt;/span&gt;&lt;/strong&gt; sSql &lt;strong&gt;&lt;span style="color:#3366ff;"&gt;As&lt;/span&gt;&lt;/strong&gt; String) &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;As&lt;/span&gt;&lt;/strong&gt; Int32&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt;&lt;/strong&gt; oCnn As New OleDbConnection(sCnn)&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt;&lt;/strong&gt; cmd &lt;span style="color:#3366ff;"&gt;&lt;strong&gt;As&lt;/strong&gt; &lt;strong&gt;New&lt;/strong&gt;&lt;/span&gt; OleDbCommand(sSql, oCnn)&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Try&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;oCnn.Open()&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Dim&lt;/span&gt;&lt;/strong&gt; nRegAfectados As Int32&lt;br /&gt;nRegAfectados = cmd.ExecuteNonQuery()&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Return&lt;/span&gt;&lt;/strong&gt; numRegAfectados&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Catch&lt;/span&gt;&lt;/strong&gt; ex &lt;strong&gt;&lt;span style="color:#3366ff;"&gt;As&lt;/span&gt;&lt;/strong&gt; Exception&lt;br /&gt;MessageBox.Show(ex.Message)&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Return&lt;/span&gt;&lt;/strong&gt; -1&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Finally&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;oCnn.Close()&lt;br /&gt;oCnn = Nothing&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;End Try&lt;br /&gt;End Function&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Pasandole a esta funcion la cadena de conexion definida en el punto 1 y pasandole la consulta de insercion lograremos el objetivo que es el de crear un libro excel a puro ado.net, facil no?&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Espero les sirva nos vemos en otra,&lt;/p&gt;&lt;p&gt;SergioT&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-6963815118857632852?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/6963815118857632852/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/excel-y-adonet.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6963815118857632852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/6963815118857632852'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/05/excel-y-adonet.html' title='Excel y ADO.NET'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-7522728752126485021</id><published>2007-03-29T23:37:00.000-04:00</published><updated>2007-04-27T12:20:03.652-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>Abrir un popUp y pasarle un parametro</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Un temita super facil pero que tambien suele sacar canas verdes cuando uno está aprendiendo es como abrir una ventana popup y como pasarle un parametro?? Bien aqui coloco una explicaion sencilla y corta acerca de lo referido.&lt;br /&gt;&lt;br /&gt;Vamos por pasos&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abrir una nueva aplicacion asp.net desde el VS.NET&lt;/li&gt;&lt;li&gt;Colocar 2 paginas aspx a una de ellas llamarla Calc.aspx que será el popup y la otra puede ser Default.aspx que será la pagina que llama al popup&lt;/li&gt;&lt;li&gt;En Default.aspx colocar un button y llamarlo nutton1, luego en la parte del head en el codigo html colocar :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script language="javascript" type="text/javascript"&gt;&lt;br /&gt;&lt;!-- function AbrirVentana(parametro) { window.open('calc.aspx?txt='+parametro+'','Ventana','resizable=1,width=640,height=480') } // --&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Esa es la funcion en jscript que abrirá el popUp, la funcion window.open tiene 3 parametros que son:&lt;br /&gt;&lt;br /&gt;url: la dirección url de la página que se abrirá en la nueva ventana.&lt;br /&gt;nombre: el nombre de la nueva ventana. Con este nombre se podrá hacer referencia a la ventana creada.&lt;br /&gt;lista_parametros: es una lista de parámetros, separados por coma, que controlan la apariencia la ventana y pueden ser lo siguiente:&lt;br /&gt;resizable indica si la ventana se podrá cambiar de tamaño&lt;br /&gt;toolbar indica si la barra de herramientas será visible&lt;br /&gt;location indica si la barra de dirección será visible&lt;br /&gt;directories indica si los vínculos serán visibles&lt;br /&gt;menubar indica si aparece la barra de menú&lt;br /&gt;scrollbars indica si aparecen las barras de scroll&lt;br /&gt;width indica el ancho de la nueva ventana&lt;br /&gt;height indica el alto de la nueva ventana&lt;br /&gt;top indica la distancia a la parte superior de la pantalla donde aparecerá la nueva ventana (Explorer)&lt;br /&gt;left indica la distancia a la parte izquierda de la pantalla donde aparecerá la nueva ventana (Explorer)&lt;br /&gt;screenY indica la distancia a la parte superior de la pantalla donde aparecerá la nueva ventana (Netscape)&lt;br /&gt;screenX indica la distancia a la parte izquierda de la pantalla donde aparecerá la nueva ventana (Netscape)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;luego colocamos la vista de diseñño y hacemos docle clic para editar el codigo de servidor, ahi colocamos lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;&lt;br /&gt;Me.Button1.Attributes.Add("onClick", "AbrirVentana('" &amp; Me.TextBox1.Text &amp;amp; "')")&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Ese codigo añade el atributo onclick al boton que ejecutara a la funcion abrirVentana&lt;br /&gt;&lt;/li&gt;&lt;li&gt;En la otra pagina en calc.aspx colocarun label, un textbox y un boton, luego en la parte del head incluir el siguiente codigo jscript que servirá para cerrar el popup&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script language="javascript"&gt;&lt;br /&gt;function Cerrar()&lt;br /&gt;{&lt;br /&gt;window.close();&lt;br /&gt;}&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;luego is al code behind o codigo de servidor y en el evento load de la pagina colocar:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;&lt;br /&gt;Me.Button1.Attributes.Add("onclick", "Cerrar()")&lt;br /&gt;If Not IsPostBack Then&lt;br /&gt;Me.Label1.Text = Request.QueryString("txt")&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Con esto logramos colocar el llamado a la funcion que cierra el popup en el boton y colocamos el parametro recibido en el textbox&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Como ven es bastante sencillo, en este ejemplo vimos como abrir un popup, pasarle un parametro, recibirlo , añadimos atributos a botones y cerramos una venta desde jscript&lt;/p&gt;&lt;p&gt;Espero les sirva&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Salu2&lt;br /&gt;SergioT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-7522728752126485021?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/7522728752126485021/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/03/abrir-un-popup-y-cambiar-controles-de.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7522728752126485021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/7522728752126485021'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/03/abrir-un-popup-y-cambiar-controles-de.html' title='Abrir un popUp y pasarle un parametro'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-4899992377734322203</id><published>2007-03-26T23:19:00.000-04:00</published><updated>2007-04-27T12:21:24.953-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.Net'/><title type='text'>mensajes tipo msgbox para asp.net</title><content type='html'>Hola a todos&lt;br /&gt;&lt;br /&gt;la primera entrada será de algo muy sencillo que todo el mundo necesita y busca cuando está comenzando con asp.net y viene de una programación Windows, todos quieren hacer un&lt;br /&gt;&lt;br /&gt;msgbox("Metallica Rules!!!")&lt;br /&gt;&lt;br /&gt;Se puede construir un funcion que se coloque en un modulo y que sea accesible a todo el proyecto web&lt;br /&gt;&lt;br /&gt;La funcion basicamente lo unico que hace es agregar un pequeño script a la pagina que se ejecutará inmediatamente la pagina vuelva al cliente.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Function&lt;/strong&gt; Mensaje(&lt;strong&gt;ByRef&lt;/strong&gt; oPage &lt;strong&gt;As&lt;/strong&gt; &lt;strong&gt;Page&lt;/strong&gt;, &lt;strong&gt;ByVal&lt;/strong&gt; sAviso &lt;strong&gt;As&lt;/strong&gt; &lt;strong&gt;String&lt;/strong&gt;)&lt;br /&gt;&lt;strong&gt;If&lt;/strong&gt; sAviso.Trim.Length &gt; 0 &lt;strong&gt;Then&lt;/strong&gt;&lt;br /&gt;Dim s As String = "alert('" &amp; sAviso &amp;amp; "') "&lt;br /&gt;oPage.RegisterStartupScript("OnLoad", s)&lt;br /&gt;&lt;strong&gt;End If&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;End Function &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Para utilizarla solo hay que llamarlade la siguiente manera&lt;br /&gt;&lt;br /&gt;Mensaje(me, "Hola este es un mensaje enviado por el servidor")&lt;br /&gt;&lt;br /&gt;Facil no? El primer parametro es la pagina en la cual se está produciendo el postback y el segundo parametro es el texto a mostrar&lt;br /&gt;&lt;br /&gt;Eso es todo espero les sirva&lt;br /&gt;&lt;br /&gt;Chau&lt;br /&gt;Salu2&lt;br /&gt;Sergio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-4899992377734322203?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/4899992377734322203/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/03/mensajes-tipo-msgbox-para-aspnet.html#comment-form' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4899992377734322203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/4899992377734322203'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/03/mensajes-tipo-msgbox-para-aspnet.html' title='mensajes tipo msgbox para asp.net'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9026135486753591487.post-8047925227321413244</id><published>2007-03-26T22:46:00.000-04:00</published><updated>2007-04-26T22:54:05.445-04:00</updated><title type='text'>Hola</title><content type='html'>Hola&lt;br /&gt;&lt;br /&gt;Esta primera entrega es para resumir el objetivo de mi blog, aqui pretendo colocar articulos y ejemplos sobre programacion en asp.net que sirvan para personas que recien se inician en asp.net&lt;br /&gt;&lt;br /&gt;Asi que espero que los aportes sean de utilidad&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Salu2&lt;br /&gt;SergioT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9026135486753591487-8047925227321413244?l=sergiotardio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergiotardio.blogspot.com/feeds/8047925227321413244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sergiotardio.blogspot.com/2007/04/hola.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8047925227321413244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9026135486753591487/posts/default/8047925227321413244'/><link rel='alternate' type='text/html' href='http://sergiotardio.blogspot.com/2007/04/hola.html' title='Hola'/><author><name>Sergio Tardío</name><uri>https://profiles.google.com/110793211182335274461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JycEvR3dHuc/AAAAAAAAAAI/AAAAAAAAAKY/hVOpenbEA6g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
