<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>solo VB.NET - Visual Basic .Net &#187; Tutoriales</title>
	<atom:link href="http://www.solovb.net/index.php/category/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.solovb.net</link>
	<description>Visual Basic.NET, VB.NET, Programación, Tutoriales, Ejemplos</description>
	<lastBuildDate>Fri, 16 Jul 2010 21:16:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Exporta Automaticamente DataTable a Microsoft Excel</title>
		<link>http://www.solovb.net/index.php/2009/11/22/exporta-automaticamente-datatable-a-microsoft-excel/</link>
		<comments>http://www.solovb.net/index.php/2009/11/22/exporta-automaticamente-datatable-a-microsoft-excel/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 13:15:35 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Exportar]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=687</guid>
		<description><![CDATA[Hoy quiero mostrarles un ejemplo que me ha servido durante mucho tiempo y aún lo sigo utilizando.
Haremos un ejemplo para exportar un DataTable completo a Excel sin importar la cantidad de columnas o filas que este tenga.]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-6779957923342232";
/* BloqueGrafico */
google_ad_slot = "7782048177";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p><p>Hoy quiero mostrarles un ejemplo que me ha servido durante mucho tiempo y aún lo sigo utilizando.<br />
Haremos un ejemplo para <strong>exportar </strong>un <strong>DataTable</strong> completo a <strong>Excel </strong> sin importar la cantidad de <strong>columnas </strong>o <strong>filas </strong>que este tenga.</p>
<p>Puede que existan muchas formas de realizar esta tarea, pero encuentro realmente útil este método dado que <strong>sirve para cualquier versión de excel</strong>. Por cuestiones de compatilidad con las nuevas versiones de Excel solo manejaremos 256 columnas.</p>
<p>Lo primero que necesitamos es agregar una referencia a Microsoft.Office.Interop.Excel y lo hacemos de la siguiente forma:</p>
<div id="attachment_689" class="wp-caption aligncenter" style="width: 581px"><img class="size-full wp-image-689" title="ExportarExcel001" src="http://www.solovb.net/wp-content/uploads/2009/11/ExportarExcel001.jpg" alt="Importar referencia a Excel" width="571" height="480" /><p class="wp-caption-text">Importar referencia a Excel</p></div>
<div id="attachment_690" class="wp-caption aligncenter" style="width: 581px"><img class="size-full wp-image-690" title="ExportarExcel002" src="http://www.solovb.net/wp-content/uploads/2009/11/ExportarExcel002.jpg" alt="Importar referencia Excel" width="571" height="452" /><p class="wp-caption-text">Importar referencia Excel</p></div>
<p>Luego necesitamos un <strong>formulario</strong>, un <strong>botón</strong>, un <strong>dataGridView </strong>y una <strong>barra de progreso</strong>. Lo podemos disponer como se ve en la imagen:</p>
<div id="attachment_693" class="wp-caption aligncenter" style="width: 581px"><img class="size-full wp-image-693" title="ExportarExcel003" src="http://www.solovb.net/wp-content/uploads/2009/11/ExportarExcel003.jpg" alt="Formulario aplicación para exportar dataset a excel" width="571" height="355" /><p class="wp-caption-text">Formulario aplicación para exportar dataset a excel</p></div>
<p>Ahora quiero mostrarles <strong>todo el código</strong>, realmente es <strong>sencillo </strong>lo más importante es que <strong>se adapta a cualquier tabla</strong>. Lo van a poder <strong>reutilizar </strong>sin problemas.</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Office.Interop

Public Class Form1
    Private ds As New DataSet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '//////////////////////////////////////////////////
        '// Creamos la conexión y llenamos el DataGridView
        '//////////////////////////////////////////////////
        Dim cnn As New SqlConnection("Data Source=localhost\sqlexpress;Initial Catalog=Northwind; Integrated Security=True")
        Dim da As New SqlDataAdapter("Select * from customers", cnn)
        da.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
    End Sub

    Private Sub btnExportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExportar.Click
        '/////////////////////////////
        '// Creamos el Objeto Excel
        '/////////////////////////////
        Dim m_Excel
        Dim objLibroExcel
        Dim objHojaExcel
        m_Excel = CreateObject("Excel.Application")
        objLibroExcel = m_Excel.Workbooks.Add()
        objHojaExcel = objLibroExcel.Worksheets(1)
        objHojaExcel.Name = "Customers"
        objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
        objHojaExcel.Activate()

        '/////////////////////////////////////////////////////////
        '// Definimos dos variables para controlar fila y columna
        '/////////////////////////////////////////////////////////
        Dim fila As Integer = 1
        Dim columna As Integer = 1

        '/////////////////////////////////////////////////
        '// Armamos la linea con los títulos de columnas
        '/////////////////////////////////////////////////
        objHojaExcel.Range("A1").Select()
        For Each dc In ds.Tables(0).Columns
            objHojaExcel.Range(nombreColumna(columna) &amp; 1).Value = dc.ColumnName
            columna += 1
        Next
        fila += 1

        '/////////////////////////////////////////////
        '// Le damos formato a la fila de los títulos
        '/////////////////////////////////////////////
        Dim objRango As Excel.Range = objHojaExcel.Range("A1:" &amp; nombreColumna(ds.Tables(0).Columns.Count) &amp; "1")
        objRango.Font.Bold = True
        objRango.Cells.Interior.ColorIndex = 35

        objRango.Cells.Borders(Excel.XlBordersIndex.xlDiagonalDown).LineStyle = Excel.XlLineStyle.xlLineStyleNone
        objRango.Cells.Borders(Excel.XlBordersIndex.xlDiagonalUp).LineStyle = Excel.XlLineStyle.xlLineStyleNone
        objRango.Cells.Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlLineStyleNone
        objRango.Cells.Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous
        objRango.Cells.Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous
        objRango.Cells.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous

        '//////////////////////////////////////////
        '// Cargamos todas las filas del datatable
        '//////////////////////////////////////////
        ProgressBar1.Maximum = ds.Tables(0).Rows.Count
        columna = 1
        ProgressBar1.Value = 0
        For Each dr In ds.Tables(0).Rows
            columna = 1
            For Each dc In ds.Tables(0).Columns
                objHojaExcel.Range(nombreColumna(columna) &amp; fila).Value = dr(dc.ColumnName)
                columna += 1
            Next
            fila += 1
            ProgressBar1.Value += 1
        Next

        '//////////////////////////////////////
        '// Ajustamos automaticamente el ancho
        '// de todas las columnas utilizada
        '//////////////////////////////////////
        objRango = objHojaExcel.Range("A1:" &amp; nombreColumna(ds.Tables(0).Columns.Count) &amp; ds.Tables(0).Rows.Count.ToString)
        objRango.Select()
        objRango.Columns.AutoFit()

        '/////////////////////////////////////
        '// Le decimos a Excel que se muestre
        '/////////////////////////////////////
        MsgBox("Exportación a Excel completa", MsgBoxStyle.Information, ".:: solovb.net ::.")
        m_Excel.Visible = True

    End Sub

    Public Function nombreColumna(ByVal numero As Integer) As String
        Dim columna(256) As String

        columna(1) = "A"
        columna(2) = "B"
        columna(3) = "C"
        columna(4) = "D"
        columna(5) = "E"
        columna(6) = "F"
        columna(7) = "G"
        columna(8) = "H"
        columna(9) = "I"
        columna(10) = "J"
        columna(11) = "K"
        columna(12) = "L"
        columna(13) = "M"
        columna(14) = "N"
        columna(15) = "O"
        columna(16) = "P"
        columna(17) = "Q"
        columna(18) = "R"
        columna(19) = "S"
        columna(20) = "T"
        columna(21) = "U"
        columna(22) = "V"
        columna(23) = "W"
        columna(24) = "X"
        columna(25) = "Y"
        columna(26) = "Z"
        columna(27) = "AA"
        columna(28) = "AB"
        columna(29) = "AC"
        columna(30) = "AD"
        columna(31) = "AE"
        columna(32) = "AF"
        columna(33) = "AG"
        columna(34) = "AH"
        columna(35) = "AI"
        columna(36) = "AJ"
        columna(37) = "AK"
        columna(38) = "AL"
        columna(39) = "AM"
        columna(40) = "AN"
        columna(41) = "AO"
        columna(42) = "AP"
        columna(43) = "AQ"
        columna(44) = "AR"
        columna(45) = "AS"
        columna(46) = "AT"
        columna(47) = "AU"
        columna(48) = "AV"
        columna(49) = "AW"
        columna(50) = "AX"
        columna(51) = "AY"
        columna(52) = "AZ"
        columna(53) = "BA"
        columna(54) = "BB"
        columna(55) = "BC"
        columna(56) = "BD"
        columna(57) = "BE"
        columna(58) = "BF"
        columna(59) = "BG"
        columna(60) = "BH"
        columna(61) = "BI"
        columna(62) = "BJ"
        columna(63) = "BK"
        columna(64) = "BL"
        columna(65) = "BM"
        columna(66) = "BN"
        columna(67) = "BO"
        columna(68) = "BP"
        columna(69) = "BQ"
        columna(70) = "BR"
        columna(71) = "BS"
        columna(72) = "BT"
        columna(73) = "BU"
        columna(74) = "BV"
        columna(75) = "BW"
        columna(76) = "BX"
        columna(77) = "BY"
        columna(78) = "BZ"
        columna(79) = "CA"
        columna(80) = "CB"
        columna(81) = "CC"
        columna(82) = "CD"
        columna(83) = "CE"
        columna(84) = "CF"
        columna(85) = "CG"
        columna(86) = "CH"
        columna(87) = "CI"
        columna(88) = "CJ"
        columna(89) = "CK"
        columna(90) = "CL"
        columna(91) = "CM"
        columna(92) = "CN"
        columna(93) = "CO"
        columna(94) = "CP"
        columna(95) = "CQ"
        columna(96) = "CR"
        columna(97) = "CS"
        columna(98) = "CT"
        columna(99) = "CU"
        columna(100) = "CV"
        columna(101) = "CW"
        columna(102) = "CX"
        columna(103) = "CY"
        columna(104) = "CZ"
        columna(105) = "DA"
        columna(106) = "DB"
        columna(107) = "DC"
        columna(108) = "DD"
        columna(109) = "DE"
        columna(110) = "DF"
        columna(111) = "DG"
        columna(112) = "DH"
        columna(113) = "DI"
        columna(114) = "DJ"
        columna(115) = "DK"
        columna(116) = "DL"
        columna(117) = "DM"
        columna(118) = "DN"
        columna(119) = "DO"
        columna(120) = "DP"
        columna(121) = "DQ"
        columna(122) = "DR"
        columna(123) = "DS"
        columna(124) = "DT"
        columna(125) = "DU"
        columna(126) = "DV"
        columna(127) = "DW"
        columna(128) = "DX"
        columna(129) = "DY"
        columna(130) = "DZ"
        columna(131) = "EA"
        columna(132) = "EB"
        columna(133) = "EC"
        columna(134) = "ED"
        columna(135) = "EE"
        columna(136) = "EF"
        columna(137) = "EG"
        columna(138) = "EH"
        columna(139) = "EI"
        columna(140) = "EJ"
        columna(141) = "EK"
        columna(142) = "EL"
        columna(143) = "EM"
        columna(144) = "EN"
        columna(145) = "EO"
        columna(146) = "EP"
        columna(147) = "EQ"
        columna(148) = "ER"
        columna(149) = "ES"
        columna(150) = "ET"
        columna(151) = "EU"
        columna(152) = "EV"
        columna(153) = "EW"
        columna(154) = "EX"
        columna(155) = "EY"
        columna(156) = "EZ"
        columna(157) = "FA"
        columna(158) = "FB"
        columna(159) = "FC"
        columna(160) = "FD"
        columna(161) = "FE"
        columna(162) = "FF"
        columna(163) = "FG"
        columna(164) = "FH"
        columna(165) = "FI"
        columna(166) = "FJ"
        columna(167) = "FK"
        columna(168) = "FL"
        columna(169) = "FM"
        columna(170) = "FN"
        columna(171) = "FO"
        columna(172) = "FP"
        columna(173) = "FQ"
        columna(174) = "FR"
        columna(175) = "FS"
        columna(176) = "FT"
        columna(177) = "FU"
        columna(178) = "FV"
        columna(179) = "FW"
        columna(180) = "FX"
        columna(181) = "FY"
        columna(182) = "FZ"
        columna(183) = "GA"
        columna(184) = "GB"
        columna(185) = "GC"
        columna(186) = "GD"
        columna(187) = "GE"
        columna(188) = "GF"
        columna(189) = "GG"
        columna(190) = "GH"
        columna(191) = "GI"
        columna(192) = "GJ"
        columna(193) = "GK"
        columna(194) = "GL"
        columna(195) = "GM"
        columna(196) = "GN"
        columna(197) = "GO"
        columna(198) = "GP"
        columna(199) = "GQ"
        columna(200) = "GR"
        columna(201) = "GS"
        columna(202) = "GT"
        columna(203) = "GU"
        columna(204) = "GV"
        columna(205) = "GW"
        columna(206) = "GX"
        columna(207) = "GY"
        columna(208) = "GZ"
        columna(209) = "HA"
        columna(210) = "HB"
        columna(211) = "HC"
        columna(212) = "HD"
        columna(213) = "HE"
        columna(214) = "HF"
        columna(215) = "HG"
        columna(216) = "HH"
        columna(217) = "HI"
        columna(218) = "HJ"
        columna(219) = "HK"
        columna(220) = "HL"
        columna(221) = "HM"
        columna(222) = "HN"
        columna(223) = "HO"
        columna(224) = "HP"
        columna(225) = "HQ"
        columna(226) = "HR"
        columna(227) = "HS"
        columna(228) = "HT"
        columna(229) = "HU"
        columna(230) = "HV"
        columna(231) = "HW"
        columna(232) = "HX"
        columna(233) = "HY"
        columna(234) = "HZ"
        columna(235) = "IA"
        columna(236) = "IB"
        columna(237) = "IC"
        columna(238) = "ID"
        columna(239) = "IE"
        columna(240) = "IF"
        columna(241) = "IG"
        columna(242) = "IH"
        columna(243) = "II"
        columna(244) = "IJ"
        columna(245) = "IK"
        columna(246) = "IL"
        columna(247) = "IM"
        columna(248) = "IN"
        columna(249) = "IO"
        columna(250) = "IP"
        columna(251) = "IQ"
        columna(252) = "IR"
        columna(253) = "IS"
        columna(254) = "IT"
        columna(255) = "IU"
        columna(256) = "IV"

        Return columna(numero)
    End Function
End Class</pre>
<p>Este método me ha servido mucho y espero que a ustedes también&#8230; por favor dejen sus comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/11/22/exporta-automaticamente-datatable-a-microsoft-excel/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Listview: Item siempre visible</title>
		<link>http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/</link>
		<comments>http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:46:00 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[add]]></category>
		<category><![CDATA[agregar item]]></category>
		<category><![CDATA[ListView]]></category>
		<category><![CDATA[listviewitems]]></category>
		<category><![CDATA[siempre visible]]></category>

		<guid isPermaLink="false">http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/</guid>
		<description><![CDATA[Siempre que se agregan nuevos elementos ListviewItems a un control listview, y estos son tantos que el control no tiene espacio suficiente para mostrarlos en pantalla, se agrega una barra de desplazamiento vertical. Esto está perfecto, solo que por default no se ven los nuevos items que se van agregando. Hoy quiero mostrarles como solucionar [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre que se agregan nuevos elementos <strong>ListviewItems</strong> a un control <strong>listview</strong>, y estos son tantos que el control no tiene espacio suficiente para mostrarlos en pantalla, se agrega una barra de desplazamiento vertical. Esto está perfecto, solo que por default no se ven los nuevos items que se van agregando.</p>
<p>Hoy quiero mostrarles como solucionar este pequeño inconveniente.</p>
<p>Los controles de <strong>visual basic .net</strong> cono el <strong>listview</strong> nos brindan una cantidad impresionante de <strong>propiedades</strong> para su <strong>configuración</strong>, tantas que muchas veces se desconocen.</p>
<p>Quiero mostrarlo con un <strong>ejemplo muy sencillo</strong>. Para ello necesitaremos un formulario, un control listview y un botón.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible001.jpg"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="listviewItemSiempreVisible001" src="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible001_thumb.jpg" border="0" alt="listviewItemSiempreVisible001" width="437" height="514" /></a></p>
<p>Las propiedades que mas nos interesan son las siguientes:</p>
<ul>
<li><strong>HideSelection</strong>: la establecemos en false para que aunque el control listview no tenga el foco, sigamos viendo cual es el item seleccionado.</li>
<li><strong>ListView1.FocusedItem.EnsureVisible()</strong> para forzar al item seleccionado a estar siempre visible.</li>
</ul>
<p>Bueno, ahora si el código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [14]">
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListView1.HideSelection = False
        ListView1.FullRowSelect = True
        ListView1.MultiSelect = False
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Static i As Integer = 0
        i += 1
        ListView1.Items.Add(New ListViewItem("Item número " &#038; i))
        ListView1.Items(ListView1.Items.Count - 1).Selected = True
        ListView1.Items(ListView1.Items.Count - 1).Focused = True

        ListView1.FocusedItem.EnsureVisible()
    End Sub
</pre>
<p>Al ejecutarlo debería verse muy parecido a lo que se muestra en esta imagen:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible002.jpg"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="listviewItemSiempreVisible002" src="http://www.solovb.net/wp-content/uploads/2009/10/listviewItemSiempreVisible002_thumb.jpg" border="0" alt="listviewItemSiempreVisible002" width="366" height="446" /></a></p>
<p>Eso es todo, si te sirvió esta información, por favor, deja un comentario.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/10/15/listview-item-siempre-visible/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Abrir y Cerrar la puerta del CD-ROM</title>
		<link>http://www.solovb.net/index.php/2009/09/01/abrir-y-cerrar-la-puerta-del-cd-rom/</link>
		<comments>http://www.solovb.net/index.php/2009/09/01/abrir-y-cerrar-la-puerta-del-cd-rom/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 04:07:01 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Abrir]]></category>
		<category><![CDATA[CDROM]]></category>
		<category><![CDATA[Cerrar]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=608</guid>
		<description><![CDATA[Basandome en este video que vi hoy en internet decidí publicar este sencillo post sobre como hacer, mediante un programa en visual basic .net, que la puerta del lector de CD's se abra y se cierre.]]></description>
			<content:encoded><![CDATA[<p>Basandome en este video que vi hoy en internet decidí publicar este sencillo post sobre como hacer, mediante un programa en visual basic .net, que la puerta del lector de CD&#8217;s se abra y se cierre.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/bYcF_xX2DE8&#038;hl=es&#038;fs=1&#038;color1=0x2b405b&#038;color2=0x6b8ab6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bYcF_xX2DE8&#038;hl=es&#038;fs=1&#038;color1=0x2b405b&#038;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Para realizar el ejemplo simplemente necesitamos un formulario y dos botones (abrir y cerrar) como se ve en la imagen:</p>
<p><img alt="" src="/images/abrirCDROM.jpg" class="alignnone" width="275" height="204" /></p>
<p>y el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Public Class Form1
    Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
       (ByVal lpCommandString As String, ByVal lpReturnString As String, _
       ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        AbrirCDROM()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        cerrarCDROM()
    End Sub

    Public Sub AbrirCDROM()
        mciSendString("set CDAudio door open", "", 0, 0)
    End Sub

    Public Sub cerrarCDROM()
        mciSendString("set CDAudio door closed", "", 0, 0)
    End Sub

End Class
</pre>
<p>Listo! a disfrutarlo y si tienes un bebe&#8230; a poner el código dentro de un bucle y a conseguir una cuerda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/09/01/abrir-y-cerrar-la-puerta-del-cd-rom/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Cómo usar el control RadioButton</title>
		<link>http://www.solovb.net/index.php/2009/08/31/como-usar-el-control-radiobutton/</link>
		<comments>http://www.solovb.net/index.php/2009/08/31/como-usar-el-control-radiobutton/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 12:12:06 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[radiobutton]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=606</guid>
		<description><![CDATA[Hoy veremos un ejemplo muy simple sobre la utilización del control radiobutton en visual basic .net. coloquemos en un formulario cuatro controles radioButton&#8217;s y un control label. Cada control radioButton representará una estación del año y se debería ver muy similar a la siguiente imagen: Luego de setear la propiedad text de cada control, seleccionamos [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy veremos un ejemplo muy simple sobre la utilización del control radiobutton en visual basic .net.</p>
<p>coloquemos en un formulario cuatro controles radioButton&#8217;s y un control label. Cada control radioButton representará una estación del año y se debería ver muy similar a la siguiente imagen:</p>
<p><img alt="" src="/images/radiobutton.jpg" class="alignnone" width="260" height="253" /></p>
<p>Luego de setear la propiedad text de cada control, seleccionamos el primero y cambiamos su propiedad checked a True para que tengamos una opción seleccionada cuanda el programa inicie.</p>
<p>Al hacer doble clic sobre un control radioButton vemos el codigo de la propiedad CheckedChanged la cual se dispara cuando cambia el estado de la propiedad checked. </p>
<p>veamos el código usado para darle funcionalidad a nuestro programa:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        mostrar()
    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        mostrar()
    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
        mostrar()
    End Sub

    Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
        mostrar()
    End Sub

    Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged
        mostrar()
    End Sub

    Sub mostrar()
        If RadioButton1.Checked Then
            Label1.Text = "Estamos en Otoño"
        End If
        If RadioButton2.Checked Then
            Label1.Text = "Estamos en Invierno"
        End If
        If RadioButton3.Checked Then
            Label1.Text = "Estamos en Primavera"
        End If
        If RadioButton4.Checked Then
            Label1.Text = "Estamos en Verano"
        End If
    End Sub

End Class
</pre>
<p>El resultado final sería similar a este:</p>
<p><img alt="" src="/images/radiobutton2.jpg" class="alignnone" width="247" height="240" /></p>
<p>Bueno, realmente es un control muy sencillo de usar, espero que lo puedan incorprar a sus futuros proyectos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/08/31/como-usar-el-control-radiobutton/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Usa los colores de Visual Studio en tu programa</title>
		<link>http://www.solovb.net/index.php/2009/08/02/usa-los-colores-de-visual-studio-en-tu-programa/</link>
		<comments>http://www.solovb.net/index.php/2009/08/02/usa-los-colores-de-visual-studio-en-tu-programa/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 19:41:40 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Definiciones]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Brushes]]></category>
		<category><![CDATA[Colores]]></category>
		<category><![CDATA[DrawItemState]]></category>
		<category><![CDATA[DrawMode]]></category>
		<category><![CDATA[DrawRectangle]]></category>
		<category><![CDATA[ListBox]]></category>
		<category><![CDATA[OwnerDrawFixed]]></category>
		<category><![CDATA[PropertyInfo]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=592</guid>
		<description><![CDATA[El control ColorDialog nos presenta una paleta de colores tradicional, pero lo cierto es que la de visual studio es mucho más linda y nos muestra todos los colores por su nombre como están definidos en las propiedades del objeto System.Drawing.Color.]]></description>
			<content:encoded><![CDATA[<p>Este ejemplo surgio de una consulta en <a href="http://www.solovb.net/index.php/2009/06/05/cuadro-de-dialogo-para-seleccionar-un-color-colordialog/">este artículo</a>.</p>
<p>El control <strong>ColorDialog</strong> nos presenta una paleta de colores tradicional, pero lo cierto es que la de <strong>visual studio</strong> es mucho más linda y nos muestra todos los colores por su nombre como están definidos en las propiedades del objeto <strong>System.Drawing.Color</strong>.</p>
<p>Dado el problema de que no existe un control que nos muestre esta lista de colores vamos a ver como podemos constriur una nosotros mismos.</p>
<p>Para el ejemplo necesitaremos un nuevo proyecto y dos formularios.</p>
<p>En el primer formulario solo tendremos un baton para llamar al formulario 2, tal como se ve en la siguiente figura:</p>
<p><img class="aligncenter size-full wp-image-593" title="coloresNombre001" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre001.jpg" alt="coloresNombre001" width="407" height="338" /></p>
<p>y el código del boton es el siguiente:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub btnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click
Dim vForm2 As New Form2
vForm2.ShowDialog()
End Sub
</pre>
<p>y en el siguiente formulario pondremos yn control ListBox y dos botoes (aceptar y cancelar) igual que en el siguiente formulario:</p>
<p><img class="aligncenter size-full wp-image-594" title="coloresNombre002" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre002.jpg" alt="coloresNombre002" width="304" height="296" /></p>
<p>En el evento Load del formulario establecemos algunas propiedades del control ListBox y cargamos los nombres de los colores con el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
ListBox1.ItemHeight = 20

ListBox1.Items.Clear()
ListBox1.BeginUpdate()
For Each pi As Reflection.PropertyInfo In GetType(Color).GetProperties(Reflection.BindingFlags.Static Or Reflection.BindingFlags.Public)
ListBox1.Items.Add(pi.Name)
Next
ListBox1.EndUpdate()
End Sub
</pre>
<p>En la primer linea del Load &#8220;ListBox1.DrawMode = DrawMode.OwnerDrawFixed&#8221;  establecemos que todos los elementos del control se dibujan manualmente y tienen el mismo alto. Esto, ademças, desencadena un suceso DrawItem justo antes de mostrar cada elemento.</p>
<p>Para programar el evento <strong>DrawItem </strong>del <strong>ListBox</strong>, seleccionamos (en la vista de diseño) el ListBox1, presionamos F4 para ver las propiedades, y en la parte de arriba del cuadro de propiedades seleccionamos el icono del rayo para ver los evento que el control tiene disponibles, buscamos DrawItem y le damos doble clic. La siguiente imagen ejemplifica como hacerlo:</p>
<p><img class="aligncenter size-full wp-image-595" title="coloresNombre003" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre003.jpg" alt="coloresNombre003" width="621" height="337" /></p>
<p>y este es el código del evento <strong>DrawItem</strong></p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim rectangulo As Rectangle = e.Bounds

If (e.State And DrawItemState.Selected) Then
e.Graphics.FillRectangle(SystemBrushes.Highlight, rectangulo)
Else
e.Graphics.FillRectangle(Brushes.White, rectangulo)
End If

Dim nombreColor As String = ListBox1.Items(e.Index)

Dim b As New SolidBrush(Color.FromName(nombreColor))

rectangulo.Inflate(-16, -2)
e.Graphics.FillRectangle(b, New Rectangle(rectangulo.X, rectangulo.Y, 30, rectangulo.Height))

e.Graphics.DrawRectangle(Pens.Black, New Rectangle(rectangulo.X, rectangulo.Y, 30, rectangulo.Height))

If (e.State And DrawItemState.Selected) Then
e.Graphics.DrawString(nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2)
Else
e.Graphics.DrawString(nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2)
End If
End Sub
</pre>
<p>Ahora solo nos falta programar los eventosde los dos botones como se ve en el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
My.Forms.Form1.BackColor = Color.FromName(ListBox1.SelectedItem)
End Sub

Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
Me.Close()
End Sub
</pre>
<p>Bueno, a probar la aplicación&#8230; si todo salió bien, se verá así:</p>
<p><img class="aligncenter size-full wp-image-596" title="coloresNombre004" src="http://www.solovb.net/wp-content/uploads/2009/08/coloresNombre004.jpg" alt="coloresNombre004" width="489" height="436" /></p>
<p>Les dejo algunas definiciones:</p>
<p><strong>Graphics.FillRectangle (Método):</strong> Rellena el interior de un rectángulo especificado por un par de coordenadas, un valor de ancho y un valor de alto.<br />
<strong><br />
Graphics.DrawRectangle (Método):</strong> Dibuja un rectángulo especificado por un par de coordenadas, un valor de ancho y un valor de alto.</p>
<p><strong>Graphics.DrawString (Método):</strong> Dibuja la cadena de texto especificada en la ubicación especificada y con los objetos Brush y Font especificados.</p>
<p>Espero que les sirva y lo puedan usar en sus proyectos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/08/02/usa-los-colores-de-visual-studio-en-tu-programa/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cuadro de diálogo para seleccionar un color (ColorDialog)</title>
		<link>http://www.solovb.net/index.php/2009/06/05/cuadro-de-dialogo-para-seleccionar-un-color-colordialog/</link>
		<comments>http://www.solovb.net/index.php/2009/06/05/cuadro-de-dialogo-para-seleccionar-un-color-colordialog/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 10:12:28 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[colorDialog]]></category>
		<category><![CDATA[Colores]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=499</guid>
		<description><![CDATA[Ejemplo muy, pero muy sencillo sobre la utilización del cuadro de dialogo para seleccionar colores en visual basic .net.]]></description>
			<content:encoded><![CDATA[<p>Ejemplo muy, pero muy sencillo sobre la utilización del cuadro de dialogo para seleccionar colores en visual basic .net.</p>
<p>Solo necesitamos un formulario, un boton y un componente colorDialog para este ejemplo. y en el evento click del botçon copiamos el siguiente codigo:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
      Me.BackColor = ColorDialog1.Color
End If
</pre>
<p>El resultado se muestra en la siguiente imagen.<br />
<img class="alignnone" src="/images/colores001.jpg" alt="" width="507" height="445" /></p>
<p>Espero que les sirva.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/06/05/cuadro-de-dialogo-para-seleccionar-un-color-colordialog/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Leer un archivo de texto completo</title>
		<link>http://www.solovb.net/index.php/2009/06/04/leer-un-archivo-de-texto-completo/</link>
		<comments>http://www.solovb.net/index.php/2009/06/04/leer-un-archivo-de-texto-completo/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 23:58:33 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[openfiledialog]]></category>
		<category><![CDATA[ReadToEnd]]></category>
		<category><![CDATA[StreamReader]]></category>
		<category><![CDATA[System.IO]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=495</guid>
		<description><![CDATA[Les quiero mostrar en esta oportunidad un ejemplo muy sencillo de como se puede leer y cargar un archivo de texto en un TextBox con visual basic .net.]]></description>
			<content:encoded><![CDATA[<p>Les quiero mostrar en esta oportunidad un ejemplo muy sencillo de como se puede leer y cargar un archivo de texto en un TextBox con visual basic .net.</p>
<p>Para el ejemplo necesitaremos un formulario con dos cuadros de texto, un botón yn componente OpenFileDialog. Como se ve en la figura siguiente:</p>
<p><img alt="" src="/images/lector001.jpg" class="alignnone" width="646" height="606" /></p>
<p>En el evento Load del formulario realizamos unas pocas configuraciones para los controles:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
txtNombre.ReadOnly = True
txtContenido.ScrollBars = ScrollBars.Vertical
OpenFileDialog1.Filter = "Archivos de Texto |*.txt"
OpenFileDialog1.Title = "Abrir archivo de texto"
OpenFileDialog1.Multiselect = False
</pre>
<p>y en el evento click del botón copiamos el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
OpenFileDialog1.Filter = "Archivos de Texto |*.txt"
OpenFileDialog1.Title = "Abrir archivo de texto"
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    txtNombre.Text = OpenFileDialog1.FileName
    Dim objReader As System.IO.StreamReader
    objReader = File.OpenText(OpenFileDialog1.FileName)
    txtContenido.Text = objReader.ReadToEnd
End If
</pre>
<p>finalmente para que el código funcione no se olviden de importar el espacio de nombre:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Imports System.IO
</pre>
<p>Es un ejemplo muy fácil de realizar y muy básico. El código a analizar el realmente poco, así que no voy a hacer demasiados comentarios.<br />
Como siempre, espero que les sirva y lo puedan utilizar y personalizar como deseen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/06/04/leer-un-archivo-de-texto-completo/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Mover elementos de un listview</title>
		<link>http://www.solovb.net/index.php/2009/05/19/mover-elementos-de-un-listview/</link>
		<comments>http://www.solovb.net/index.php/2009/05/19/mover-elementos-de-un-listview/#comments</comments>
		<pubDate>Tue, 19 May 2009 03:14:39 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[ListView]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=482</guid>
		<description><![CDATA[Este es un sencillo, pero muy poco visto, ejemplo de como podemos hacer en visual basic .net para mover (mediante código) los elementos de un listview.]]></description>
			<content:encoded><![CDATA[<p>Este es un sencillo, pero muy poco visto, ejemplo de como podemos hacer en <strong>visual basic .net</strong> para mover (mediante código) los elementos de un <strong>listview</strong>.</p>
<p>Necesitaremos un <strong>formulario </strong>con un <strong>listview </strong>y dos <strong>botones</strong>:</p>
<p><a class="lightbox" title="noverelementos001" href="http://www.solovb.net/wp-content/uploads/2009/05/noverelementos001.jpg"><img class="aligncenter size-full wp-image-483" title="noverelementos001" src="http://www.solovb.net/wp-content/uploads/2009/05/noverelementos001.jpg" alt="" width="268" height="477" /></a>Ahora, llenaremos el <strong>listview </strong>con algunos datos para el ejemplo y lo haremos en el evento <strong>Load </strong>del mismo:</p>
<p><code lang="vbnet"><br />
ListView1.Items.Add("Carlos")<br />
ListView1.Items.Add("Marcelo")<br />
ListView1.Items.Add("Damian")<br />
ListView1.Items.Add("Susana")<br />
ListView1.Items.Add("Gerardo")<br />
ListView1.Items.Add("Claudia")<br />
ListView1.Items.Add("Marta")<br />
ListView1.Items.Add("Liliana")<br />
ListView1.Items.Add("Eliseo")<br />
ListView1.Items.Add("Agustin")<br />
ListView1.Items.Add("Camila")<br />
ListView1.Items.Add("Lucas")<br />
ListView1.Items.Add("Jorge")<br />
ListView1.Items.Add("Mabel")<br />
ListView1.Items.Add("Natalia")<br />
ListView1.Items.Add("Gabriela")<br />
ListView1.Items.Add("Paula")<br />
ListView1.Items.Add("Matias")<br />
ListView1.Items.Add("Martin")<br />
ListView1.Items.Add("Juan")<br />
ListView1.Items.Add("Maria")<br />
ListView1.Items.Add("Abel")<br />
ListView1.Items.Add("Pedro")</code></p>
<p>ListView1.FullRowSelect = True<br />
ListView1.MultiSelect = False</p>
<p>ListView1.HideSelection = False</p>
<p>Notese que también hemos seteado tres <strong>propiedades </strong>muy importantes: <strong>FullRowSelect = True</strong> para que al seleccionar un item se marque toda la fila, <strong>MultiSelect = False</strong> para que solo se pueda seleccionar de a un item y <strong>HideSelection = False</strong> para que siempre veamos que item está seleccionado.</p>
<p>Luego en el evento <strong>click </strong>del botón SUBIR:<br />
<code lang="vbnet"><br />
If ListView1.SelectedIndices.Count &gt; 0 Then<br />
Try<br />
Dim temporal As String<br />
temporal = ListView1.Items(ListView1.FocusedItem.Index - 1).Text</code></p>
<p>ListView1.Items(ListView1.FocusedItem.Index &#8211; 1).Text = ListView1.FocusedItem.Text<br />
ListView1.FocusedItem.Text = temporal</p>
<p>ListView1.Items.Item(ListView1.FocusedItem.Index &#8211; 1).Selected = True<br />
ListView1.Items.Item(ListView1.FocusedItem.Index &#8211; 1).Focused = True</p>
<p>Catch ex As Exception<br />
Beep()<br />
End Try<br />
Else<br />
MsgBox(&#8220;Debe seleccionar un item de la lista.&#8221;)<br />
End If</p>
<p>y en el evento <strong>click </strong>del botón BAJAR:<br />
<code lang="vbnet"><br />
If ListView1.SelectedIndices.Count &gt; 0 Then<br />
Try<br />
Dim temporal As String<br />
temporal = ListView1.Items(ListView1.FocusedItem.Index + 1).Text</code></p>
<p>ListView1.Items(ListView1.FocusedItem.Index + 1).Text = ListView1.FocusedItem.Text<br />
ListView1.FocusedItem.Text = temporal</p>
<p>ListView1.Items.Item(ListView1.FocusedItem.Index + 1).Selected = True<br />
ListView1.Items.Item(ListView1.FocusedItem.Index + 1).Focused = True</p>
<p>Catch ex As Exception<br />
Beep()<br />
End Try<br />
Else<br />
MsgBox(&#8220;Debe seleccionar un item de la lista.&#8221;)<br />
End If</p>
<p>Esto es todo, pueden<strong> ejecutar el programa</strong> y probar como funciona. Les dejo una captura del progrma en funcionamiento:<br />
<a class="lightbox" title="moverelementos002" href="http://www.solovb.net/wp-content/uploads/2009/05/moverelementos002.jpg"><img class="aligncenter size-full wp-image-484" title="moverelementos002" src="http://www.solovb.net/wp-content/uploads/2009/05/moverelementos002.jpg" alt="" width="263" height="471" /></a></p>
<p>Espero que, como a mi, les sea muy útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/05/19/mover-elementos-de-un-listview/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reporte con datos agrupados (Reporting Services)</title>
		<link>http://www.solovb.net/index.php/2009/05/13/reporte-con-datos-agrupados-reporting-services/</link>
		<comments>http://www.solovb.net/index.php/2009/05/13/reporte-con-datos-agrupados-reporting-services/#comments</comments>
		<pubDate>Wed, 13 May 2009 21:24:18 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[informe]]></category>
		<category><![CDATA[reporte]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[reportView]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=454</guid>
		<description><![CDATA[Quiero mostrarles como podemos hace un reporte con datos agrupados en visual basic .net. Nos basamos en este y este ejemplo anterior.]]></description>
			<content:encoded><![CDATA[<p>Quiero mostrarles como podemos hace un reporte con datos agrupados en visual basic .net. Nos basamos en <a href="http://www.solovb.net/index.php/2009/05/12/como-crear-un-reporte-reporting-services/">este</a> y <a href="http://www.solovb.net/index.php/2009/05/13/dar-formato-a-un-reporte-reporting-services/">este</a> ejemplo anterior.</p>
<p>Nuestro reporte tiene el siguiente aspecto:</p>
<p><a class="lightbox" title="gruporeporte001" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte001.jpg"><img class="aligncenter size-full wp-image-456" title="gruporeporte001" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte001.jpg" alt="" width="622" height="261" /></a></p>
<p>Seleccionamos la fila de los datos (la del medio) y haciendo clic con el botón derecho del mouse, desplegamos el menú contextual y seleccionamos <strong>Insertar Grupo</strong>.</p>
<p><a class="lightbox" title="gruporeporte002" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte002.jpg"><img class="aligncenter size-full wp-image-457" title="gruporeporte002" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte002.jpg" alt="" width="622" height="410" /></a></p>
<p>Esto nos abrirá una ventana de propiedades de agrupación y ordenación. Para crear un grupo (en mi caso voy a agrupar los productos por marca) seleccionamos el campo que contiene el dato desde la lista desplegable de Expresión para la sección Agrupar por:</p>
<p><a class="lightbox" title="gruporeporte003" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte003.jpg"><img class="aligncenter size-full wp-image-458" title="gruporeporte003" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte003.jpg" alt="" width="484" height="440" /></a></p>
<p>Al presionar aceptar en el cuadro anterior, vemos que nos agregó una fila antes y otro despues de la fila de los datos. Estas filas son el encabezado y pie de grupo.</p>
<p><a class="lightbox" title="gruporeporte004" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte004.jpg"><img class="aligncenter size-full wp-image-459" title="gruporeporte004" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte004.jpg" alt="" width="622" height="241" /></a></p>
<p>En mi caso me pareció útil combinar las celdas del encabezado de grupo por si alguna marca tiene un nombre muy largo.</p>
<p><a class="lightbox" title="gruporeporte005" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte005.jpg"><img class="aligncenter size-full wp-image-460" title="gruporeporte005" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte005.jpg" alt="" width="622" height="320" /></a></p>
<p>Sobre la fila de los encabezados de grupo arrastro y suelto el campo marca desde el panel de origenes de datos.</p>
<p><a class="lightbox" title="gruporeporte006" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte006.jpg"><img class="aligncenter size-full wp-image-461" title="gruporeporte006" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte006.jpg" alt="" width="622" height="291" /></a></p>
<p>Para el pie de grupo, en la columna precio arrastro y suelto desde elk panel origenes de datos el campo precio. La diferencia es que al soltarlo sobre una celda de grupo le coloca automaticamente la función SUM por lo que el resultado será la suma de los precios de los artículos de ese grupo.  Para que el total del grupo tenga el mismo formato que los precios individuales, puedo agregar la funcion FORMAT igual que en la celda de arriba.</p>
<p><a class="lightbox" title="gruporeporte007" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte007.jpg"><img class="aligncenter size-full wp-image-462" title="gruporeporte007" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte007.jpg" alt="" width="622" height="291" /></a></p>
<p>Bueno, aquí esta el reporte&#8230; la verdad que quedó bastante lindo&#8230;</p>
<p><a class="lightbox" title="gruporeporte008" href="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte008.jpg"><img class="aligncenter size-full wp-image-455" title="gruporeporte008" src="http://www.solovb.net/wp-content/uploads/2009/05/gruporeporte008.jpg" alt="" width="640" height="674" /></a></p>
<p>Espero que les guste y por sobre todo que lo puedan usar en sus proyectos. Dejen sus comentarios, gracias.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/05/13/reporte-con-datos-agrupados-reporting-services/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dar formato a un reporte (Reporting Services)</title>
		<link>http://www.solovb.net/index.php/2009/05/13/dar-formato-a-un-reporte-reporting-services/</link>
		<comments>http://www.solovb.net/index.php/2009/05/13/dar-formato-a-un-reporte-reporting-services/#comments</comments>
		<pubDate>Wed, 13 May 2009 03:02:13 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[formato]]></category>
		<category><![CDATA[informe]]></category>
		<category><![CDATA[reporte]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[reportView]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=438</guid>
		<description><![CDATA[En base al ejemplo anterior (cómo crear un reporte), quiero mostrarles como podemos "formatear" ese reporte para conseguir un presentación mucho más profesional utilizando reporting services desde visual basic .net.]]></description>
			<content:encoded><![CDATA[<p>En base al ejemplo anterior (<a href="http://www.solovb.net/index.php/2009/05/12/como-crear-un-reporte-reporting-services/">cómo crear un reporte</a>), quiero mostrarles como podemos &#8220;formatear&#8221; ese reporte para conseguir un presentación mucho más profesional utilizando reporting services desde visual basic .net.</p>
<p>Abrimos el reporte sobre el cual trabajaremos, se verá más o menos como este:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte001.jpg"><img class="aligncenter size-full wp-image-440" title="formatoreporte001" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte001.jpg" alt="formatoreporte001" width="654" height="365" /></a></p>
<p>Lo primero que tenemos que hacer es verificar si tenemos visibles las dos barras de herramientas que necesitaremos para darle formato al informe, ellas son: &#8220;Bordes del informe&#8221; y &#8220;Formato del informe&#8221;. Si no están visibles las podemos habilitar desde Ver/Barras de Herramientas.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte002.jpg"><img class="aligncenter size-full wp-image-441" title="formatoreporte002" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte002.jpg" alt="formatoreporte002" width="404" height="139" /></a></p>
<p>Para cambiar el color de alguna celda de la tabla, seleccionamos la celda y desplegamos la ventana Color de fondo desde la barra de herramientas Formato del informe. En ella tenemos atodos los colores web que usamos normalmente en los formularios windows.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte003.jpg"><img class="aligncenter size-full wp-image-442" title="formatoreporte003" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte003.jpg" alt="formatoreporte003" width="208" height="291" /></a></p>
<p>También podemos aplicarle formato de borde a cualquier celda de la tabla desde la barra de herramientas Bordes del informe.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte004.jpg"><img class="aligncenter size-full wp-image-443" title="formatoreporte004" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte004.jpg" alt="formatoreporte004" width="438" height="318" /></a></p>
<p>Podemos aplicar el tipo de letra a varias celdas al mismo tiempo seleccionando varias celdas y aplicando el formato.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte005.jpg"><img class="aligncenter size-full wp-image-444" title="formatoreporte005" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte005.jpg" alt="formatoreporte005" width="630" height="372" /></a></p>
<p>Es muy útil la opción de combinar celdas. Seleccionamos más de una celda de una misma fila y desde el menu contextual (el que se abre al presionar clic con el botón derecho del mouse) seleccionamos la opción Combinar celdas.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte006.jpg"><img class="aligncenter size-full wp-image-445" title="formatoreporte006" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte006.jpg" alt="formatoreporte006" width="630" height="372" /></a></p>
<p>Para cualquier texto que querramos que aparesca en el informe utilizamos un Cuadro de Texto.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte007.jpg"><img class="aligncenter size-full wp-image-446" title="formatoreporte007" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte007.jpg" alt="formatoreporte007" width="630" height="372" /></a></p>
<p>Por defecto, al colocar en la tabla un campo numérico, este se alinea hacia la derecha. Si lo deseamos esto se puede cambiar utilizando la barra de formato. En nuestro caso utilizaremos la función Format para dar formato numérico al precio. Botónderecho sobre la celda Precio y seleccionamos Expresión&#8230;</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte008.jpg"><img class="aligncenter size-full wp-image-447" title="formatoreporte008" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte008.jpg" alt="formatoreporte008" width="630" height="372" /></a></p>
<p>El cuadro Editar expresión es muy completo, te recomiendo que le des una mirada, Usamos la función Format con el formato &#8220;Fixed&#8221; que nos monstrará los números con dos decimales.</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte009.jpg"><img class="aligncenter size-full wp-image-448" title="formatoreporte009" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte009.jpg" alt="formatoreporte009" width="550" height="500" /></a></p>
<p>Así se debería ver el informe terminado:</p>
<p><a href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte010.jpg"><a class="lightbox" title="formatoreporte010" href="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte010.jpg"><img class="aligncenter size-full wp-image-439" title="formatoreporte010" src="http://www.solovb.net/wp-content/uploads/2009/05/formatoreporte010.jpg" alt="" width="656" height="427" /></a></a></p>
<p>Espero que les sirva y no se olviden que esta es una base, de ustedes depende poder potenciar mucho más estas herramientas poniendo dedicación y talento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/05/13/dar-formato-a-un-reporte-reporting-services/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
