<?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-30114406</id><updated>2012-02-16T17:54:16.515+01:00</updated><category term='Windows Vista'/><category term='Ajax Control ToolKit'/><category term='Atlas'/><category term='Ajax'/><title type='text'>Thinking in Code</title><subtitle type='html'>Only One Thing In Mind, Less Code To Debug... Less Code To Break... Less Code To Maintain...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pedroafa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pedroafa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pedroafa</name><uri>http://www.blogger.com/profile/07153665369715083458</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30114406.post-8208550110311987968</id><published>2007-02-16T15:40:00.000+01:00</published><updated>2007-02-16T15:59:42.199+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><title type='text'>Teclas Rápidas en Vista</title><content type='html'>&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;Win-Space&lt;/strong&gt;:&lt;/span&gt; Mostar sidebar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-D:&lt;/span&gt;&lt;/strong&gt; Mostar Escritorio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-Tab:&lt;/span&gt;&lt;/strong&gt; Flip 3D.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Ctrl Win-Tab:&lt;/span&gt;&lt;/strong&gt; Deja activado el Flip 3D para poder navegar entre las pantallas usando las teclas direccionales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-E:&lt;/span&gt;&lt;/strong&gt; Abrir explorador de ventana.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-R:&lt;/span&gt;&lt;/strong&gt; Abrir la ventana de ejecución.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-T:&lt;/span&gt;&lt;/strong&gt; Navega entre las aplicaciones abiertas en la barra de tareas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-Q:&lt;/span&gt;&lt;/strong&gt; Lanza el Office communicator.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-F:&lt;/span&gt;&lt;/strong&gt; Abrir la ventana de búsqueda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-G:&lt;/span&gt;&lt;/strong&gt; Da el foco a la Sidebar y cuando presionas esta combinación de teclas puedes navegar entre los gadgets que se encuentran en ella.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-L:&lt;/span&gt;&lt;/strong&gt; Bloquear el ordenador. Muy útil en la mi oficina.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-U:&lt;/span&gt;&lt;/strong&gt; Abrir Ease of Access Center.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-M:&lt;/span&gt;&lt;/strong&gt; Minimizar todas las ventanas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Shift Win-M:&lt;/span&gt;&lt;/strong&gt; Maximizar ventanas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-X:&lt;/span&gt;&lt;/strong&gt; Abrir Windows Mobility center.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Win-Number:&lt;/span&gt;&lt;/strong&gt; Presiona la tecla Win y elige el número de la aplicación que se encuentra en la barra de enlaces rápidos (quick launch task bar). Por ejemplo el tercer icono de la barra de enlaces rápidos es el Explorer, así que si presionas Win-3 se abrirá el navegador.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;Ctrl-Shift-Esc:&lt;/span&gt;&lt;/strong&gt; Abrir el Task Manager.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30114406-8208550110311987968?l=pedroafa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroafa.blogspot.com/feeds/8208550110311987968/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30114406&amp;postID=8208550110311987968' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/8208550110311987968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/8208550110311987968'/><link rel='alternate' type='text/html' href='http://pedroafa.blogspot.com/2007/02/teclas-rpidas-en-vista.html' title='Teclas Rápidas en Vista'/><author><name>Pedroafa</name><uri>http://www.blogger.com/profile/07153665369715083458</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30114406.post-1127744695599490270</id><published>2007-02-01T12:44:00.000+01:00</published><updated>2007-02-01T15:54:15.282+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax Control ToolKit'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Atlas'/><title type='text'>Globalizando el Calendar de Ajax Control ToolKit</title><content type='html'>&lt;div align="justify"&gt;Ayer estuve probando los nuevos controles que incorpora la última versión de Ajax Control ToolKit, para decidir si los incorporaba al proyecto en el que estoy trabajando.&lt;/div&gt;&lt;/br&gt;
&lt;div align="justify"&gt;
Una de las primeras cosas que intente hacer fue cambiar el idioma del control a español, ya que por defecto se muestra en inglés. Así que me fui directo a las propiedades del control y busqué a ver si por un casual había una donde le pudieras indicar la cultura que quieres utilizar, pero mi gozo en un pozo no hay tal propiedad. A buscar en el google…&lt;/div&gt;&lt;/br&gt;
&lt;div align="justify"&gt;
En un foro de Microsoft ya encontré que se podía poner la propiedad &lt;span style="color:#ff0000;"&gt;EnableScriptGlobalization&lt;/span&gt; del &lt;span style="color:#cc0000;"&gt;ScriptManager&lt;/span&gt; a &lt;span style="color:#3333ff;"&gt;True&lt;/span&gt; para habilitar la globalización de los controles. ¡¡¡Bien!!! Las etiquetas de los días ahora están en Español, pero… la etiqueta de cabecera (January 2007) y la del pie (Today: January 30,2007) siguen en inglés. Entonces, ¿¿¿Qué tengo que hacer para poner esto en español???.&lt;/div&gt;
&lt;div align="justify"&gt;&lt;/div&gt;&lt;/br&gt;

&lt;div align="justify"&gt;Sencillísimo… Ir al código fuente del control y en el archivo js (CalendarBehavior.js) que lo acompaña cambiar lo siguiente:&lt;/div&gt;&lt;/br&gt;

1- this._title.innerHTML = visibleDate.format("MMMM, yyyy") por &lt;span style="color:#3366ff;"&gt;this._title.innerHTML = visibleDate.localeFormat("MMMM yyyy");&lt;/span&gt;&lt;/br&gt;&lt;/br&gt;



2- dayCell.title = currentDate.format("D"); por &lt;span style="color:#3366ff;"&gt;dayCell.title = currentDate.localeFormat("dd/MM/yyyy");&lt;/span&gt;
&lt;/br&gt;&lt;/br&gt;


3- this._today.innerHTML = "Today: " + todaysDate.format("MMMM d, yyyy"); por &lt;span style="color:#3366ff;"&gt;this._today.innerHTML = "Hoy: " + todaysDate.localeFormat("dd – MMMM - yyyy");&lt;/span&gt;&lt;/br&gt;&lt;/br&gt;




El &lt;span style="color:#3366ff;"&gt;Today&lt;/span&gt; está puesto a pelo en el código así que no se puede globalizar.&lt;/br&gt;&lt;/br&gt;




A la, ya esta globalizado o por lo menos apañado, ¿¿¿no se les podría haber ocurrido hacerlo antes???.
&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30114406-1127744695599490270?l=pedroafa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroafa.blogspot.com/feeds/1127744695599490270/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30114406&amp;postID=1127744695599490270' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/1127744695599490270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/1127744695599490270'/><link rel='alternate' type='text/html' href='http://pedroafa.blogspot.com/2007/02/globalizando-el-calendar-de-ajax.html' title='Globalizando el Calendar de Ajax Control ToolKit'/><author><name>Pedroafa</name><uri>http://www.blogger.com/profile/07153665369715083458</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30114406.post-115738437882946632</id><published>2006-09-04T16:33:00.000+02:00</published><updated>2006-11-30T16:11:18.183+01:00</updated><title type='text'>Los Libros Son Muy Caros</title><content type='html'>Hace unos mes me recomendaron esta lista de libros sobre: refactoring, xp, patrones de diseño y esas cosas, pues bueno, se nos ocurrió meterla en Amazon a ver cuánto podrían costar todos eso libros y hay esta el resultado, un pastón. Menos mal que existen fuentes más económocas…

Os dejo la lista de libros, seguramente os resulte interesante.

&lt;table border="0" cellpadding="2" cellspacing="2" width="100%"&gt;   &lt;tbody&gt;&lt;tr&gt;
&lt;td style="color: rgb(255, 102, 0); text-align: center; font-weight: bold;"&gt;TÍTULOS
&lt;/td&gt;&lt;td style="color: rgb(255, 102, 0); text-align: center; font-weight: bold;"&gt;
PRECIOS

&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Coder to Developer: Tools and Strategies for Delivering Your Software
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $19.79
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Writing Secure Code, Second Edition
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $32.99
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $46.54
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $16.49
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Code Complete, Second Edition
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $32.99
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Extreme Programming Explained: Embrace Change (2nd Edition)
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $37.99
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Refactoring to Patterns (Addison-Wesley Signature Series)
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $37.11
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Refactoring: Improving the Design of Existing Code
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $41.88
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Don't Make Me Think: A Common Sense Approach to Web Usability (2nd Edition)
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $22.05
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; User Interface Design for Programmers
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $19.77
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; Object Thinking (DV-Microsoft Professional)
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $49.99
&lt;/span&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;&lt;span style="font-size:85%;"&gt; The Pragmatic Programmer: From Journeyman to Master (Paperback)
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right; color: rgb(51, 102, 255);"&gt;&lt;span style="font-size:85%;"&gt; $34.59
&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;TOTAL $&lt;/span&gt;
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;$392.18&lt;/span&gt;
&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
&lt;td style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;TOTAL €&lt;/span&gt;
&lt;/span&gt;  &lt;/td&gt;&lt;td style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;305,86€&lt;/span&gt;
&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30114406-115738437882946632?l=pedroafa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroafa.blogspot.com/feeds/115738437882946632/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30114406&amp;postID=115738437882946632' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/115738437882946632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/115738437882946632'/><link rel='alternate' type='text/html' href='http://pedroafa.blogspot.com/2006/09/los-libros-son-muy-caros.html' title='Los Libros Son Muy Caros'/><author><name>Pedroafa</name><uri>http://www.blogger.com/profile/07153665369715083458</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30114406.post-115686826060794385</id><published>2006-08-29T18:17:00.000+02:00</published><updated>2006-09-13T00:46:48.033+02:00</updated><title type='text'>SQL DINÁMICO</title><content type='html'>&lt;span style=";font-size:100%;color:black;"  &gt;En ocasiones es necesario crear consultas dinámicamente dentro de un procedimiento almacenado, este proceso no es muy díficil de realizar como se puede ver en el pequeño ejemplo que se muestra a continuación, pero es importante tener cuidado con él porque puede ser un arma de doble filo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;     &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;USE&lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt; AdventureWorks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;CREATE&lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; FilterCustomers &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt; @field &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;),&lt;/span&gt; @filter &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;250&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
AS&lt;o:p&gt;&lt;/o:p&gt;
BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color:blue;"&gt;    DECLARE&lt;/span&gt; @query &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1000&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:gray;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;    /*consulta dinámica*/&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;    SELECT&lt;/span&gt; @query &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;'SELECT * FROM Person.Contact WHERE '&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @field &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:red;"&gt;'='&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; @filter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:85%;color:blue;"  &gt;    EXEC&lt;/span&gt;&lt;span style=";font-size:85%;color:gray;"  &gt;(&lt;/span&gt;&lt;span style="font-size:85%;"&gt;@query&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:gray;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="text-align: justify;font-family:times new roman;"&gt;&lt;span style="line-height: 115%;font-size:100%;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;END&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="text-align: justify;font-family:times new roman;"&gt;&lt;span style="line-height: 115%;font-size:100%;color:black;"  &gt;Esta técnica debe ser usada con mucho cuidado, ya que puede ser una puerta a la inyección de sql por parte del usuario. A través de las variables pasadas como parametros podemos introducir código malicioso y concatenarlo a la sentencia que estamos creando.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Otro problema con el que nos podemos encontrar, es que el rendimiento de la aplicación puede verse disminuido notablemente. Al usar &lt;b style=""&gt;EXEC()&lt;/b&gt; para ejecutar la consulta el procedimiento almacenado que la contenga no quedará compilado. Por lo tanto, tendrá que recompilarse cada vez que sea necesario su uso, ya que el optimizador de consultas del SQL Server no será capaz de volver a utilizar el plan de ejecución generado en el primer uso del procedimiento.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Estos dos problemas pueden solucionarse utilizando &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;SP_EXECUTESQL &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;en vez de&lt;span style=""&gt;  &lt;/span&gt;&lt;b style=""&gt;EXEC(),&lt;/b&gt; &lt;span style=""&gt; &lt;/span&gt;ya que &lt;u&gt;si la consulta permanece constante y sólo cambian los parametros de entrada&lt;/u&gt; el optimizador del SQL Server podrá reutilizar el plan de ejecución. Y además se solucionan los problemas de seguridad ya que se hace uso de parámetros.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;USE&lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt; AdventureWorks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;CREATE&lt;/span&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; FilterCustomers &lt;o:p&gt;&lt;/o:p&gt;
&lt;span style="color:blue;"&gt;    DECLARE&lt;/span&gt; @field &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;),&lt;/span&gt; @filter &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;250&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;
AS&lt;o:p&gt;&lt;/o:p&gt;
BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:gray;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;         &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color:blue;"&gt;    DECLARE&lt;/span&gt; @query &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1000&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;    /*consulta dinámica*/&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;    SELECT&lt;/span&gt; @query &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;'SELECT * FROM Person.Contact WHERE '&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;quotename&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@fiel&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin: 0cm 0cm 0.0001pt 70.8pt; text-indent: 35.4pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:gray;"  lang="EN-US" &gt;+&lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt; &lt;span style="color:red;"&gt;' = @filter'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:red;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color:blue;"&gt;    EXEC&lt;/span&gt; &lt;span style="color:maroon;"&gt;sp_executesql&lt;/span&gt; @query&lt;span style="color:gray;"&gt;,&lt;/span&gt; N&lt;span style="color:red;"&gt;'@filter NVARCHAR(250)'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;@filter&lt;span style="color:gray;"&gt;=&lt;/span&gt;@filter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span style=";font-size:85%;color:blue;"  &gt;END&lt;/span&gt;&lt;span lang="EN-US"  style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"  style="margin-bottom: 0.0001pt; line-height: normal;font-family:times new roman;"&gt;&lt;span lang="EN-US"  style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; line-height: normal;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b  style="font-family:times new roman;"&gt;&lt;u&gt;&lt;span style=""&gt;Nota&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;: &lt;b style=""&gt;QUOTENAME&lt;/b&gt;: &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;Devuelve una cadena Unicode con los delimitadores agregados para convertirla en un identificador delimitado válido de Microsoft SQL Server 2005.&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&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/30114406-115686826060794385?l=pedroafa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroafa.blogspot.com/feeds/115686826060794385/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30114406&amp;postID=115686826060794385' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/115686826060794385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30114406/posts/default/115686826060794385'/><link rel='alternate' type='text/html' href='http://pedroafa.blogspot.com/2006/08/sql-dinmico.html' title='SQL DINÁMICO'/><author><name>Pedroafa</name><uri>http://www.blogger.com/profile/07153665369715083458</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
