<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://spar.unicauca.edu.co/celulaunicauca/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">Tecnologia</title><subtitle type="html" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/atom.aspx</id><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/default.aspx" /><link rel="self" type="application/atom+xml" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2007-08-27T21:11:56Z</updated><entry><title>Editar un mensaje existente</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/10/06/editar-un-mensaje-existente.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/10/06/editar-un-mensaje-existente.aspx</id><published>2007-10-06T16:47:00Z</published><updated>2007-10-06T16:47:00Z</updated><content type="html">&lt;p&gt;Hola de nuevo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Al regresar el sitio de la Célula de la UNICAUCA, regreso también para contribuir con algunas entradas que espero sean de su interés.&lt;/p&gt;
&lt;p&gt;Alguna ves les ha interesado exportar un datagrid (dicese del&amp;nbsp; prehistórico control hoy mejor llamado GridView)&amp;nbsp;a Excel? Les cuento que me toco alguna ves y es tarea nada díficil, además de ser muy útil ya que los datos en un datagrid no le sirven de mucho a nuestros usuarios, quienes finalmente son los que piden que puedan transportarlos a excel para poder hacer operaciones y todo lo que ya sabemos se puede hacer con la data en Excel. Digamos, manipular?&lt;/p&gt;
&lt;p&gt;Pongamos manos a la obra:&lt;/p&gt;
&lt;p&gt;1. Creamos un proyecto de tipo ASP.NET donde quieran, VS.NET 2003, VS.NET 2005 o VS.NET 2008 Beta&lt;/p&gt;
&lt;p&gt;2. Arrastren un Datagrid o GridView&amp;nbsp;a su página web, y coloquen un botón que diga algo así como, Exportar a Excel.&lt;/p&gt;
&lt;p&gt;3. Supongamos que tenemos SQL Server 2000 o 2005 y la archi conocida Northwind a la mano y consultemos cualquier información de alguna de sus tablas. El siguiente código coloquenlo en el Load de la página o dende sus manitas creativas se les antoje!!&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (!Page.IsPostBack)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;SqlConnection&lt;/font&gt;&lt;font size="2"&gt; miConexion = &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="#2b91af" size="2"&gt;SqlConnection&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;server=orion;database=northwind;trusted_connection=true&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#2b91af" size="2"&gt;SqlDataAdapter&lt;/font&gt;&lt;font size="2"&gt; miAdaptador = &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="#2b91af" size="2"&gt;SqlDataAdapter&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;SELECT * FROM PRODUCTS&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;,miConexion);&lt;/font&gt;&lt;/p&gt;&lt;font color="#2b91af" size="2"&gt;DataSet&lt;/font&gt;&lt;font size="2"&gt; miDs = &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="#2b91af" size="2"&gt;DataSet&lt;/font&gt;&lt;font size="2"&gt;();&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;miAdaptador.Fill(miDs);&lt;/p&gt;Session[&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Datos&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;] = miDs.Tables[0];&lt;/font&gt;&lt;font size="2"&gt;GridView1.DataSource = Session[&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Datos&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;] &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="#2b91af" size="2"&gt;DataTable&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;GridView1.DataBind();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Si si ya se, donde está mi separación de capas, ya me parezco algunos libros, pero la excusa es que: es un simple jemplo y no quiero mostrar ahora otras cosas, así que todo el código queda en el codebehind de la página. Pero recuerden, esto no se debe hacer, y estoy señalando con el dedo. Si si ya se, meter toda esa data en Sesion, no me culpen, es solo un ejemplo. Recuerden meter tanta información en las variables de sesion paga un alto costo en los recursos del servidor, así que se debe tener mucho cuidado. O por lo menos remover la variable cuando ya no la vayan a utilizar, por ejemplo: Session.Remove()...&lt;/p&gt;
&lt;p&gt;4. Hagase la luz!! , ahora a exportar toda esa información listada en el control. Pero antes referencien algunos espacios de nombre (Name Spaces), antes de que el compilador grite desesperado:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Data.SqlClient;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.IO;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Text;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;En el handler del evento Click del botón coloquen:&lt;/p&gt;&lt;font color="#2b91af" size="2"&gt;StringWriter&lt;/font&gt;&lt;font size="2"&gt; miStringWrite = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#2b91af" size="2"&gt;HtmlTextWriter&lt;/font&gt;&lt;font size="2"&gt; miHtmlWrite = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;{&lt;/p&gt;&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;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.Rows.Count &amp;gt; 0 &amp;amp;&amp;amp; Session[&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Datos&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;] != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Clear();&lt;/p&gt;Response.AddHeader(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;content-disposition&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;attachment;filename=FileName.xls&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;Response.ContentType = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;application/vnd.xls&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;Response.Charset = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;UTF-8&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;Response.ContentEncoding = &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Encoding&lt;/font&gt;&lt;font size="2"&gt;.Default;&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;miStringWrite = &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="#2b91af" size="2"&gt;StringWriter&lt;/font&gt;&lt;font size="2"&gt;();&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;miHtmlWrite = &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="#2b91af" size="2"&gt;HtmlTextWriter&lt;/font&gt;&lt;font size="2"&gt;(miStringWrite);&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.EnableViewState = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.AllowPaging = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.DataSource = (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;DataSet&lt;/font&gt;&lt;font size="2"&gt;)Session[&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Datos&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;];&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.DataBind();&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.CssClass = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.RenderControl(miHtmlWrite);&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;Response.Write(miStringWrite.ToString());&lt;/p&gt;
&lt;p&gt;Response.End();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt; ex)&lt;/font&gt;&lt;font size="2"&gt; 
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;{&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Response.Write(ex.Message);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;finally&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;/font&gt;&lt;p&gt;&lt;font size="2"&gt;{&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;miStringWrite.Flush();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;miHtmlWrite.Flush();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;miStringWrite.Close();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;miHtmlWrite.Close();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;Ah y recuerden, para el Datrgid tenmos la propiedad Items, en cambio para el nuevo engendro llamado GridView tenemos Rows, ay que cosas!!&lt;br /&gt;Si no me creen preguntenle al compilador en la línea: &lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font size="2"&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;this&lt;/font&gt;&lt;font size="2"&gt;.GridView1.Rows.Count &amp;gt; 0 &amp;amp;&amp;amp; Session[&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Datos&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;] != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Y con esto señores solo me resta decirles... Feliz exportación!! y la importación??&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Att. Andres Ortiz&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=140" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="ASP.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ASP.NET/default.aspx" /><category term="Exportar" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Exportar/default.aspx" /><category term="DataGrid" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/DataGrid/default.aspx" /><category term="GridView" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/GridView/default.aspx" /><category term="Excel" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Excel/default.aspx" /></entry><entry><title>Conexion a SQLServer desde ASPNET en Windows 2003 Server</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/28/conexion-a-sqlserver-desde-aspnet-en-windows-2003-server.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/28/conexion-a-sqlserver-desde-aspnet-en-windows-2003-server.aspx</id><published>2007-08-28T17:13:40Z</published><updated>2007-08-28T17:13:40Z</updated><content type="html">&lt;p&gt;En mi clase ASPNET en el diplomado trate de montar una Solución Web que hace parte de las presentaciones que Microsoft libero en su página &lt;a href="http://www.tutorialparaprofesores.com/"&gt;&lt;b&gt;http://www.tutorialparaprofesores.com&lt;/b&gt;&lt;/a&gt; y me encontré con&amp;nbsp; una sorpresa!!!, la cuenta que utiliza Windows 2003 Server desde ASP para acceder a una base de datos es: &lt;strong&gt;&amp;quot;NT AUTHORITY\Servicio de red&amp;quot;&lt;/strong&gt;… ya no es la cuenta &lt;strong&gt;ASPNET&lt;/strong&gt;!, lógicamente después de realizar todo el proceso correspondiente al despliegue la aplicación no funcionaba! Debido a que esta cuenta no tenia permisos de conexión a la base de datos... así que me puse en la tarea de solucionar el problema.... lo único que hay que hacer es adicionar la cuenta &amp;quot;NT AUTHORITY\Servicio de red&amp;quot; al las cuenta de inicio de sesión de SQL y otorgarle los permisos adecuados para nuestra Base de datos y listo!... pero después de haber arreglado el problema me surge una duda...... porque cambiaron la cuenta????.... ah claro . Por cuestiones de seguridad. La cuenta de SERVICIO DE RED, es mucho más limitada que la cuenta ASPNET, todo se resume a que se mejora la seguridad porque se supone que estamos en un Servidor &lt;p&gt;Att. Jaime Lopez&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=93" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="SQL" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/SQL/default.aspx" /><category term="ASP.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ASP.NET/default.aspx" /><category term="ADO.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ADO.NET/default.aspx" /></entry><entry><title>Un buscador exclusivo para .NET</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/28/un-buscador-exclusivo-para-net.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/28/un-buscador-exclusivo-para-net.aspx</id><published>2007-08-28T16:18:53Z</published><updated>2007-08-28T16:18:53Z</updated><content type="html">&lt;p&gt;Dando vueltas por Internet encontré algo muy interesante un señor llamado Dan Appleman creó un sitio para búsquedas específicas de temas de .Net y a diferencia de los buscadores normales, éste sitio agrupa fuentes confiables, filtrando sitios de dudosa reputación, también te da la posibilidad de filtrar tus búsquedas por temas generales de la tecnología .NET o buscar componentes o libros espero lo visiten!.  &lt;p&gt;Site: &lt;a href="http://www.searchdotnet.com/"&gt;http://www.searchdotnet.com/&lt;/a&gt; &lt;p&gt;Att. Carlos Muñoz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=91" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /></entry><entry><title>Estripando Crystal Reports desde el Código</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/estripando-crystal-reports-desde-el-c-243-digo.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/estripando-crystal-reports-desde-el-c-243-digo.aspx</id><published>2007-08-28T02:49:51Z</published><updated>2007-08-28T02:49:51Z</updated><content type="html">&lt;p&gt;&lt;/p&gt; &lt;p&gt;Hola amigos y amigas &lt;p&gt;Hoy les traigo un código muy útil cuando trabajen con crystal. &lt;p&gt;Primero que todo CR trae una caracteristica llamada SubReportes, simplemente es que en un reporte principal ustedes pueden insertar lo que se llaman subreportes, que no son más que reportes comunes y normales. &lt;p&gt;El siguiente código les muestra como manipular un subreporte que se encuentra dentro de un reporte principal. &lt;p&gt;Recuerden que es código mio y pues si lo usan deben ajustar los valores a sus proyectos.&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;SubreportObject sbrObjetoContadorCierre = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;

ReportDocument rdOficinasCierre    = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ReporteCierreOficinas();

&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; strSubReporteNombre = &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;

ReportDocument rdContadoresCierre = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ReportDocument();

&lt;span style="color:#008000;"&gt;//Obtener el ReportObject por nombre como un SubreportObject para Contadores de Cierre&lt;/span&gt;
     sbrObjetoContadorCierre = 
      rdOficinasCierre.ReportDefinition.ReportObjects[5] &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; SubreportObject;
     &lt;span style="color:#008000;"&gt;//Obtiene el nombre del subreporte&lt;/span&gt;
     strSubReporteNombre = sbrObjetoContadorCierre.SubreportName;
     &lt;span style="color:#008000;"&gt;//Abre el subreporte como un ReportDocument.&lt;/span&gt;
     rdContadoresCierre = rdOficinasCierre.OpenSubreport(strSubReporteNombre);
     &lt;span style="color:#008000;"&gt;//Fija la fuente de datos del subreporte de Oficinas Pendientes     &lt;/span&gt;
     rdContadoresCierre.SetDataSource(dtReporteContadoresCierre);  

     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;(rdOficinasCierre);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Arriba entonces defino los objetos que necesito, y la aprte de abajo va má o menos así:
&lt;p&gt;En sbrObjetoContadorCierre por casteo normal y corriente se obtiene de la colección
&lt;p&gt;ReportObjects el objeto tipo &amp;nbsp;SubreportObject que está incrustado en el reporte principal que está identificado por rdOficinasCierre.
&lt;p&gt;Luego strSubReporteNombre&amp;nbsp;almacena el nombre del subreporte, nombre que ustedes pueden manipular a través de la ventana de propiedades del subreporte en la propiedad SubreportName.
&lt;p&gt;Luego fijense que con el nombre almacenado en strSubReporteNombre se obtiene el objeto SubReporte que al final es un ReportDocument como les dije anteriormente, es un reporte comun y corriente.
&lt;p&gt;Luego para rdContadoresCierre se fija la fuente de datos que puede ser DataTable, DatSet, en fin una fuente de datos, pero finalmente se retorna el rdOficinasCierre que es el reporte principal que contiene al subreporte.
&lt;p&gt;recuerden que&amp;nbsp; pueden tener varios subreportes dentro del principal, obviamente hasta que el diseño y su necesidad lo permita.
&lt;p&gt;Un abrazo
&lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=88" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /></entry><entry><title>Jerarquia de grupos en Crystal Reports</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/jerarquia-de-grupos-en-crystal-reports.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/jerarquia-de-grupos-en-crystal-reports.aspx</id><published>2007-08-28T02:47:06Z</published><updated>2007-08-28T02:47:06Z</updated><content type="html">&lt;p&gt;Hola, saludos amigos &lt;p&gt;Esta ves vamos a hablar de los grupos en reportes de crystal, pero de manera jerarquica. &lt;p&gt;Hace unos dias se me presentaba el siguiente problema: &lt;p&gt;Tenía que mostrar un reporte, donde por página mostrar los datos para cada registro principal, y adicionalmente&amp;nbsp;agrupar por un tipo específico esos registros. &lt;p&gt;Para entender mejor veamos este ejemplo: &lt;p&gt;Supongamos que tenemos una tabla de ciudades, por cada ciudad debo generar una página del reporte. En una entrada anterior les conté como hacer eso. Ahora, supongamos que por cada ciudad necesito mostrar información de mujeres y hombres. Pero entonces necesito&amp;nbsp;agrupar los hombres y las mujeres por aparte en la misma página para esa ciudad. Cómo se hace esto? &lt;p&gt;Se necesita adicionar un grupo, al cual se le asigna por el ejemplo el código de la Ciudad. Luego crean otro grupo al cual se le asigna el tipo (hombre&amp;nbsp; y mujer). Con el primer grupo logramos que por cada ciudad se cree una página en el reporte, y con el segundo grupo se agrupa la información por hombres y mujeres. &lt;p&gt;Aparentemente una tarea que resultaría ser algo compleja o tomarnos algo de tiempo en resolver, es verdaderamente sencilla, con los grupos jerarquicos en Crystal Reports. &lt;p&gt;Felices lineas de código. &lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=87" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /></entry><entry><title>Actualizar XSD asociado tú reporte</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/actualizar-xsd-asociado-t-250-reporte.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/actualizar-xsd-asociado-t-250-reporte.aspx</id><published>2007-08-28T02:44:45Z</published><updated>2007-08-28T02:44:45Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Algo que&amp;nbsp;a veces causa algo de problema, es el tema de cambiar el XSD (llamese DataSet) asociado a un reporte de Crystal. El problema rádica en que al cambiarse el XSD, cuando intentamos actualizar estos cambios en el reporte, estos no se ven reflejados, y muchos terminamos desasociando el XSD del reporte, y lo que Crystal hace por nosotros es eliminar todos los campos que fueron arrastarados en diseño. Grave problema. &lt;p&gt;Ahora bien, dado esto, debería haber una forma de que el XSD sea actualizado y la cache sea reinicializada para que los cambios se reflejen en nuestro reporte. Aqui les presento un link muy bueno sobre este tema, y se ahorren tiempo de diseño de sus rpts. &lt;p&gt;&lt;a href="http://aspadvice.com/blogs/rjdudley/archive/2005/05/27/2606.aspx"&gt;http://aspadvice.com/blogs/rjdudley/archive/2005/05/27/2606.aspx&lt;/a&gt; &lt;p&gt;Felices lineas de código &lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=86" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /></entry><entry><title>Programando Crystal Reports New Page After</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/programando-crystal-reports-new-page-after.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/programando-crystal-reports-new-page-after.aspx</id><published>2007-08-28T02:41:44Z</published><updated>2007-08-28T02:41:44Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Hace unos dias se me pedia que por cada registro diferente de mi consulta se mostraran los mismos en diferentes páginas. Por ejemplo, tenemos n registros, donde podemos hacer un agrupamiento por Pais. Entonces cada grupo se debe mostrar en una página diferente. Estoy admirando mucho las posibilidades que brinda crystal en este sentido. La idea es capturar ciertos eventos que ocurren en las diferentes secciones de un reporte y cuando eso suceda programar al estilo Visual Basic, para que suceda lo que necesitamos con el reporte. &lt;p&gt;Para el caso que les describo se debe hacer lo siguiente: &lt;p&gt;1. Cuando se agrega un grupo al reporte se crea una sección Group Header. Sobre esta sección hacemos click derecho y en la ventana emergente selecionamos Section Expert. Se despliega un ventana con diferentes eventos. El que necesitamos es New Page After. Lo amrcamos y hacemos click en el botón asociado y en la ventana de edición que aparece, agregane ste código: &lt;p&gt;if(NOT ONLASTRECORD AND {FUENTE.PAIS} = NEXT({FUENTE.PAIS}))THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; false &lt;p&gt;Primero recuerden, esto es un ejemplo y deberan cambiar el campo PAIS por el que les corresponda, además de la fuente que aqui la he llamado FUENTE, pero para suc aso ha de cambiar.  &lt;p&gt;Fijense que el IF es muy senciilo, primero verifica que no se alcance la ultima fila y adicionalmente con la función NEXT , se chequea que el país del registro actual corresponda al del siguiente registro, para mostrar todos los registros del país actual en la misma página del reporte. &lt;p&gt;Entonces fijense que false, le indica al reporte que no ocurrira un evento New Page After, es decir no creará una nueva página hasta que encuentre un nuevo país. &lt;p&gt;2. El siguiente código es la solución a un problema que se presenta cuando usamos esta técnica. Si lo siguiente no se hace, crystal genera la primera página del reporte en blanco, y de ahi en adelante muestra la información. No recuerdo bien, pero creo que en mi reporte, solo mostraba a página en blanco y las demás no salian. Entonces aqui lespresento la solución a esto. Básicamente en la sección Group Footer, igualmente capturamos el evento New Page After y colocan lo siguiente: &lt;p&gt;Not(OnLastRecord)  &lt;p&gt;Fácil? yo creo que sip, para conseguir un resultado que a primera vista pareciera algo del otro mundo.  &lt;p&gt;En conclusión Crystal nos brinda una amplia gama de tareas programables. Lo único que le hace falta es que se pueda programar en C#, ya que a veces para determinadas acciones, toca conocer un poco de Visual Basic. &lt;p&gt;Felices lineas de código. &lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=85" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /></entry><entry><title>Ahora los charts de Crystal</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/ahora-los-charts-de-crystal.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/ahora-los-charts-de-crystal.aspx</id><published>2007-08-28T02:38:49Z</published><updated>2007-08-28T02:38:49Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Se habia presentado un problema con un reporte que despliega un gráfico de barras, para el cual la opción Show Legend está chequeda. &lt;p&gt;El gráfico tiene algo particular y es que en la sección Data del Chart Expert, se asocian dos campos de la base de datos en el campo Show Values. &lt;p&gt;El problema es que en la leyenda asociada al gráfico se despliega por ejmplo: Sum tabla.campo, es decir la operación que el Crystal asocia sobre ese campo que se está graficando, pero no lo que se espera, por ejemplo Campo sin el resto de cosas que salen en la leyenda. &lt;p&gt;Cómo podemos entonces editar la leyenda de un reporte? &lt;p&gt;1. No pierdan el tiempo tratando de editar esto desde Visual Studio, no se puede. &lt;p&gt;2. Consiganse el Crystal por aparte y ahi sise puede editar la leyenda. &lt;p&gt;3. La edición de&amp;nbsp; la leyenda no es para nada buena, a mucho las fuentes y una que otra cosa, pero no soluciona este problema. &lt;p&gt;4. Quieten la opción Show Legend de su gráfico y creen su propia leyenda, según sus necesidades. &lt;p&gt;Me parece barbaro esto, pero hasta el momento es la única solución. &lt;p&gt;Felices líneas de código. &lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=84" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /></entry><entry><title>Problema Exportando a Excel en CrystalReports</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/problema-exportando-a-excel-en-crystalreports.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/problema-exportando-a-excel-en-crystalreports.aspx</id><published>2007-08-28T02:36:49Z</published><updated>2007-08-28T02:36:49Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Esto si es muy corto, pero sustancioso. &lt;p&gt;En el mundo real, suceden cosas que quitan bastante tiempo, y aveces suelen ser tan sencillas como esto: &lt;p&gt;Se quiere exportar a Excel un reporte de Crystal que esta siendo generado en una aplicación asp.net. Cuando se ejecuta la exportación, se carga en una nueva ventana el reporte exportado en Excel, pero la información que deberia mostrarse no se despliega adecuadamente, en mi caso, solo se exporta de manera desordenada los filtros usados para generar el reporte, filtros que no tenían porque mostrarse, y la información del reporte&amp;nbsp;no aparece por ningun lado. &lt;p&gt;Esto ocurre con un cliente que utiliza Office 2000. &lt;p&gt;Buscando por ahi, encontré que es un bug del office 2000, detectado para MIME TYPES apuntados&amp;nbsp;a Excel. El pobre Office no entiende este tipo y lo que hace es exportar, en este caso a Excel, el archivo físico, en este caso la página aspx, pero no el contenido. La gente de MS hizo pruebas con Javascript embebido en una simple página asp, y efectivamente, no muestra el contenido en Excel de la página, o a veces muestra el código de javascript en el Excel. &lt;p&gt;Solución? muy pero muy sencillo, correr el&amp;nbsp; Service Release (SR1a) para Office 2000 o service pack que le llaman. &lt;p&gt;Un abrazo,&amp;nbsp; felices lineas de código!! &lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=83" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /><category term="Office" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Office/default.aspx" /></entry><entry><title>Formato de fecha según la "cultura" del servidor</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/formato-de-fecha-seg-250-n-la-quot-cultura-quot-del-servidor.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/formato-de-fecha-seg-250-n-la-quot-cultura-quot-del-servidor.aspx</id><published>2007-08-28T02:29:59Z</published><updated>2007-08-28T02:29:59Z</updated><content type="html">&lt;p&gt;Hola a todos &lt;p&gt;Vamos con una entrada muy corta pero creanme, le spuede costar o más bien evitar tiempo perdido cuando trabajan ya en el mundo real. &lt;p&gt;En tan solo una linea de código pueden obtener el formato de fecha según la &amp;quot;cultura&amp;quot; del computador o servidor donde reside su aplicación.&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La propiedad ShortDatePattern les devuelve un string, y con esto tienen la cadena del formato adecuado según la cultura. El caso está en que muchas veces nuestro ambiente de desarrollo está en una cultura totalmente diferente a la máquina servidora donde va residir la aplicación, para que nuestros clientes la utilicen, así que es mejor curarse en salud y usar ese tipo de cosas que dejan la cosa genérica.
&lt;p&gt;Ejemplos de culturas&amp;nbsp;son: Estados Unidos (en-US), España&amp;nbsp;(es-ES), y así muchas más según el lenguaje y el país.
&lt;p&gt;Cabe destacar también este trozo de código que nos permite determinar si la&amp;nbsp;cultura actual de la máquina correspodne a determinada cultura:&lt;/p&gt;
&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (System.Globalization.CultureInfo.CurrentCulture.Name.Equals(&lt;span style="color:#006080;"&gt;&amp;quot;en-US&amp;quot;&lt;/span&gt;))&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Felices líneas de código
&lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=82" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="Globalization" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Globalization/default.aspx" /></entry><entry><title>Qué pasa cuando mi fecha no habla inglés</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/qu-233-pasa-cuando-mi-fecha-no-habla-ingl-233-s.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/qu-233-pasa-cuando-mi-fecha-no-habla-ingl-233-s.aspx</id><published>2007-08-28T02:27:54Z</published><updated>2007-08-28T02:27:54Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Como siempre ocurre, en desarrollo la fecha utilizando ToDateLongString(), aparace en español, pero claro mi sistema está en español. Luego se lleva al cliente, y la fecha aparace en inglés, pero claro el servidor está en inglés. Cómo solucionar eso de manera sencilla, aparace la globalización y lo siguiente a nivel de página: &lt;p&gt;Entonces en la directiva @Page colocar lo siguiente:&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="background-color:#ffff00;"&gt;&amp;lt;%@ Page UICulture=&amp;quot;es&amp;quot; Culture=&amp;quot;es-ES&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bueno, en&amp;nbsp;la cultura si pueden poner el país que ustedes quiran, pero la idea es que el lenguaje sea español.
&lt;p&gt;Esto también puede colocarse a nivel de toda la aplicación en una sección del archivo web.config.
&lt;p&gt;Felices lineas de código!!
&lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=81" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="ASP.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ASP.NET/default.aspx" /><category term="Globalization" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Globalization/default.aspx" /></entry><entry><title>Opacidad</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/opacidad.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/opacidad.aspx</id><published>2007-08-28T02:24:31Z</published><updated>2007-08-28T02:24:31Z</updated><content type="html">&lt;p&gt;Si han visto por ahi el Microsoft ScoreBoard, se habran dado cuenta de que podemos opacar la ventana. Esta es una simple aplicación lectora de RSS para mantenernos al tanto de los resultados del mundial. &lt;p&gt;Bien pero este no es el tema central de esta entrada. La idea es mostrarles como pueden jugar con la opacidad de una forma windows para que vean lo fácil que es hacer un efecto de Fade o desvanecimiento, sin necesidad de escribir mucho código. &lt;p&gt;Primero que todo, creamos un proyecto Windows Forms. Luego en el evento Load de la forma cargamos esta línea:&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Opacity = 0; &lt;span style="color:#008000;"&gt;//Hace que se muestre la forma totalmente opaca&lt;/span&gt;
timer1.Enabled = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;; //Activa el timer&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si señores eso significa que deben añadir un control Timer a su proyecto windows, simplemente arrastrandolo desde el ToolBox a su ventana de diseño.
&lt;p&gt;Ahora con el Timer, configuran su propiedad Interval por ejemplo con un valor de 50.
&lt;p&gt;El Timer no ofrece el evento Tick que se ejecuta por cada pasada del intervalo, es decir ya que el intervalo es un valor en milisegundos, el tick esta ves se ejecutará cada 50 ms, lo cual es bastante rápido, pero suficiente para dar ele efecto con la opacidad del formulario.
&lt;p&gt;Capturamos entonces el evento Tick del timer, dando doble click sobre el timer, y escriben ahi estas lineas:&lt;/p&gt;
&lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Opacity += 0.005;

&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Opacity &amp;gt;= 0.99)
{
  &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Opacity = 1;
  timer1.Enabled = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;El código nterior simplemente le dice que la propiedad opacity de la forma se irá incrementando en 0.005 por cada pasada del timer.
&lt;p&gt;Por cada 50ms, se va preguntando si ya se llego al límite de la opcidad, es decir si la ventana ya es visible completamente, si es así, asigna 1 a la opacidad, con lo cual deja la ventana totalmente visible. Y finalmente desactiva el timer para parar su ejecución.
&lt;p&gt;Muchas gracias, espero lo prueben para que se diviertan y lo usen en sus proyecto.
&lt;p&gt;Un abrazo
&lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=80" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="Windows Forms" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Windows+Forms/default.aspx" /></entry><entry><title>RadioButton en DataGrid para ASP.NET</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/radiobutton-en-datagrid-para-asp-net.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/radiobutton-en-datagrid-para-asp-net.aspx</id><published>2007-08-28T02:19:42Z</published><updated>2007-08-28T02:19:42Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Necesitaba adicionar RadioButtons en un DataGrid y ocurrió lo siguiente. La funcionalidad en una página .aspx es correcta, pero cuando la colocan sobre una .ascx y luego montan su control de usuario sobre su .aspx, el evento CheckedChanged disparado por los RadioButton supuestamente se dispara pero no se obtiene nada. Qué se de hacer? muy sencillo, no escribir el vento CheckedChanged dentro del .ascx sino escribir un método y desde la definición del radiobutton dentro de los tags del DataGrid llamar a ese método por medio del evento así:&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;center&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:RadioButton&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;rbnSeleccionar&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;AutoPostBack&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;OnCheckedChanged&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SSeleccionar&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
       &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;center&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Se dan cuenta SSeleccionar es un método dentro de nuestra .ascx, y asunto arreglado
&lt;p&gt;Subí esto por si alguien lo necesita alguna vez.
&lt;p&gt;Un abrazo
&lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=79" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="ASP.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ASP.NET/default.aspx" /><category term="ADO.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ADO.NET/default.aspx" /></entry><entry><title>Crystal Reports, más programatico que nunca</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/crystal-reports-m-225-s-programatico-que-nunca.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/crystal-reports-m-225-s-programatico-que-nunca.aspx</id><published>2007-08-28T02:17:49Z</published><updated>2007-08-28T02:17:49Z</updated><content type="html">&lt;p&gt;Hola &lt;p&gt;Esta ves veamos primero un link a un personaje, algo así como un gurú en el tema de Crystal, que tiene enlaces por todos lados cada ves que se busca algo sobre el tema de reportes en Crystal. &lt;p&gt;Si nosotros tenemos nuestro esquema XML, creado a través de un Datset, que usaremos como fuente de datos para nuestro reporte, se debe tener cuidado, que a la hora de escribir código se tengan en cuenta als recomendaciones de este personaje, para evitarse un error típico en nuestras aplicaciones Web, que muestran reportes de Crystal: &lt;p&gt;&lt;a href="http://aspadvice.com/blogs/rjdudley/archive/2005/05/13/2589.aspx"&gt;http://aspadvice.com/blogs/rjdudley/archive/2005/05/13/2589.aspx&lt;/a&gt; &lt;p&gt;Ahora bien, quiero compartirles un par de lineas de código que les van servir en el siguiente contexto. &lt;p&gt;Supongan que tienen su reporte principal, y este está configurado como Portrait, es decir está vertical la hoja del reporte. Ahora bien, este reporte contiene diferentes subreportes pegados a el, los cuales se encuentran en diferentes secciones del principal, secciones de tipo Details, lo típico. Pero que ocurre cuando uno de los subreportes está configurado como LandScape, es decir la hoja se debe mostrar horizontal, ya que contiene gran volumen de columnas y neecsita esta configuración. &lt;p&gt;En un principio pensé que la solución era más compleja pero no, llega al rescate un evento disparado por el CrystalReportViewer. Este es el control que arrastramos a nuestras páginas aspx, para mostrar los reportes. &lt;p&gt;Ahora si aqui está el código.&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;background-color:#f4f4f4;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CrystalReportViewer1_DrillDownSubreport(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; source, CrystalDecisions.Web.DrillSubreportEventArgs e)
  {
   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;(e.NewSubreportName == &lt;span style="color:#006080;"&gt;&amp;quot;Subreport1&amp;quot;&lt;/span&gt;)
   {
    CustomerOrders.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;
   }
  }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La idea entonces es capturar el evento&amp;nbsp;DrillDownSubreport, del CrystalReportViewer, y fijense entonces que es simplemente utilizar el objeto CustomerOrders, que es una instancia de tipo ReportDocument, que es básicamente el representante en código de nuestro subreporte.
&lt;p&gt;&amp;quot;Subreport1&amp;quot; es básicamente el nombre asignado al Reporte que hace las veces de subreporte, no es sino que miren las propiedades del reporte y busquen la propiedad Name, ahi está asignado un nombre por defecto, o el que ustedes le quieran poner.
&lt;p&gt;Como no gano indulgencias con camandulas ajenas, aqui está link a los dueños de Crystal, quienes dieron la solución. Eso si la explicación es muy mala, y toco recurrira algo más para poner a funcionar la cosa, pero fue buena guia.
&lt;p&gt;&lt;a href="http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&amp;amp;docType=kc&amp;amp;externalId=c2012989&amp;amp;sliceId=&amp;amp;dialogID=6892327&amp;amp;stateId=1%200%206890766"&gt;http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&amp;amp;docType=kc&amp;amp;externalId=c2012989&amp;amp;sliceId=&amp;amp;dialogID=6892327&amp;amp;stateId=1%200%206890766&lt;/a&gt;
&lt;p&gt;Si señores así de sencillo, un abrazo, y felices lineas de código!!
&lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=78" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /><category term="C#" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/C_2300_/default.aspx" /><category term="ASP.NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/ASP.NET/default.aspx" /><category term="Crystal Reports" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/Crystal+Reports/default.aspx" /></entry><entry><title>Delphi .NET</title><link rel="alternate" type="text/html" href="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/delphi-net.aspx" /><id>http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/2007/08/27/delphi-net.aspx</id><published>2007-08-28T02:11:56Z</published><updated>2007-08-28T02:11:56Z</updated><content type="html">&lt;p&gt;Hola a todos &lt;p&gt;Hoy mi mensaje va más halla de hablar de alguna tecnología Microsoft, pero al fin de cuentas si tiene que ver con el .NET Framework. &lt;p&gt;Son ya tantos los lenguajes que se han acogido a la especificacion del Framework, quiza por moda? no, yo creería que si no lo hacen quedan obsoletos. &lt;p&gt;Por ejemplo Delphi como IDE de desarrollo ahora en su versión 8, ha incluido su propio compilador al estilo Object Pascal .NET. &lt;p&gt;He estado mirando la cosa, y pues ustedes saben, el Framework es uno solo, y la cosa fluye para los que venimos, o dedicamos el dia a dia a C#, pero toca tener en cuenta ciertos detalles del propio Object Pascal usado en Delphi, para no tener demoras. &lt;p&gt;Para que vean lo fácil que es por ejemplo usar esta cosa de GDI+ en object Pascal .NET usando Delphi 8, aqui un pequeño sample: &lt;p&gt;Omitire las declaraciones de los eventos, porque, joder, no tengo aqui el IDE y quien se va aprender eso. &lt;p&gt;//En esta sección se declaran los namespaces &lt;p&gt;uses System.Drawing; &lt;p&gt;//Esta sección var, se declaran las variables locales dentro del evento &lt;p&gt;//Esto lo pueden incluir en el evento onPaint de la Forma Windows &lt;p&gt;//para un proyecto WindowsForms &lt;p&gt;var &lt;p&gt;&amp;nbsp; objGrafico : Graphics; &lt;p&gt;BEGIN &lt;p&gt;&amp;nbsp; //Esto le dice que el área de dibujado es la propia Forma &lt;p&gt;&amp;nbsp; objGrafico := Self.CreateGraphics(); //En C# &lt;strong&gt;this.CreateGraphics()&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp; //&lt;/strong&gt;Si quieren pueden usar el objecto de tipo PaintEventArgs que se define en el  &lt;p&gt;&amp;nbsp; //evento onPaint &lt;p&gt;&amp;nbsp; //objGrafico := e.Graphics; Esto queda comentado porque usan la una o la otra &lt;p&gt;&amp;nbsp; //Además fijense que el objeto e yua tiene es una propiedad Graphics &lt;p&gt;&amp;nbsp; //que retorna el engendro tipo Graphics &lt;p&gt;&amp;nbsp; //Haganlo como se les antoje muchachones!! &lt;p&gt;&amp;nbsp; //Dibuja una linea con coordenadas (100,100) y (400,100) &lt;p&gt;&amp;nbsp; objGrafico.DrawLine(Pen(Color.Red),100,100,400,100); &lt;p&gt;&amp;nbsp; //Dibuja un&amp;nbsp;cuadrado de 100x100 &lt;p&gt;&amp;nbsp; objGrafico.DrawRectangle(Pen(Color.Blue),200,200,100,100); &lt;p&gt;END; &lt;p&gt;Además de cosas como el var, el BEGIN, que parecen de Visual Basic, fijense que el terminador de cada línea es un punto y coma como en C#, el paso de parémtros a los métodos es muy transparente, etc etc. La cosa fluye. &lt;p&gt;A mí me parece bien que exista Delphi.NET, desafortunadamente, cuando ustedes instalan el Delphi Studio for .NET, la cosa usa Framework 1.1, cosa grave porque ya vamos en la V2, y los cambios han sido bastantes. &lt;p&gt;Pero bueno, para los que quieran migrar sus escritos en C# a Delphi.NET, aqui hay un link a algo que está haciendo Borland, para convertir la cosa, y pues que sea más rápida la exportación a su engendro Delphi.NET. &lt;p&gt;&lt;a href="http://dotnet.borland.com/babelclient/BabelClient.aspx"&gt;http://dotnet.borland.com/babelclient/BabelClient.aspx&lt;/a&gt; &lt;p&gt;Att. Andres Ortiz&lt;/p&gt;&lt;img src="http://spar.unicauca.edu.co/celulaunicauca/aggbug.aspx?PostID=77" width="1" height="1"&gt;</content><author><name>admin</name><uri>http://spar.unicauca.edu.co/celulaunicauca/members/admin.aspx</uri></author><category term=".NET" scheme="http://spar.unicauca.edu.co/celulaunicauca/blogs/tecnologia/archive/tags/.NET/default.aspx" /></entry></feed>