<?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; Funciones</title>
	<atom:link href="http://www.solovb.net/index.php/category/funciones/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>Cómo Crear un Cronómetro</title>
		<link>http://www.solovb.net/index.php/2009/04/28/como-crear-un-cronometro/</link>
		<comments>http://www.solovb.net/index.php/2009/04/28/como-crear-un-cronometro/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 18:56:58 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[cronometro]]></category>
		<category><![CDATA[Timer]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=376</guid>
		<description><![CDATA[En esta oportunidad quisiera mostrarles cómo crear un cronómetro en visual basic .net utilizando el componente timer.]]></description>
			<content:encoded><![CDATA[<p>En esta oportunidad quisiera mostrarles cómo crear un cronómetro en visual basic .net utilizando el componente timer.</p>
<p>Bueno, no pretendo que este sea un ejemplo paso a paso mostrando cada una de las propiedades modificadas de cada control, muy por el contrario, me quiero concentrar en la funcionalidad del cronómetro y les dejaré el diseño a ustedes. Simplemente les mostraré el que hice yo.</p>
<p>Los controles a utilizar son: un formulario, tres botones y dos etiquetas. Tambien necesitaremos agregar al formulario un componente Timer. Se vería mas o mes así:<br />
<img alt="" src="/images/crono001.jpg" class="alignnone" width="310" height="160" /></p>
<p>bien, lo primero que haremos será definir cuatro variables privadas a nivel del formulario. </p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Private hora As Integer = 0
Private minuto As Integer = 0
Private segundo As Integer = 0
Private milisegundo As Integer = 0
</pre>
<p>El componente Timer debe tener su propiedad interval en 100.</p>
<p>Crearemos una función para mostrar en el label1 el paso del tiempo:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
    Sub mostrarTiempo()
        Label1.Text = hora.ToString.PadLeft(2, "0") &#038; ":"
        Label1.Text &#038;= minuto.ToString.PadLeft(2, "0") &#038; ":"
        Label1.Text &#038;= segundo.ToString.PadLeft(2, "0") &#038; ":"
        Label1.Text &#038;= milisegundo.ToString.PadLeft(1, "0")

        Label1.Refresh()
    End Sub
</pre>
<p>En el evento tick del componente Timer es donde se desarrolla toda la lógica del cronómetro. Copia el siguiente código allí:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
milisegundo += 1
If milisegundo = 9 Then
    milisegundo = 0
    segundo += 1
    If segundo = 59 Then
        segundo = 0
        minuto += 1
        If minuto = 59 Then
            minuto = 0
            hora += 1
        End If
    End If
End If
mostrarTiempo()
</pre>
<p>Bueno, solo resta el código de los tres botones. El botón iniciar activa el timer:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Timer1.Enabled = True
</pre>
<p>El botón Pausa detiene el timer:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Timer1.Enabled = False
</pre>
<p>Y el botón volver a cero resetea los valores de las variables:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
hora = 0
minuto = 0
segundo = 0
milisegundo = 0

mostrarTiempo()
</pre>
<p>Espero que este ejemplo no les resulte complicado y por sobre todo que les sea util. Por último les dejo una captura del cronómetro en funcionamiento:<br />
<img alt="" src="/images/crono002.jpg" class="alignnone" width="310" height="160" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/04/28/como-crear-un-cronometro/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Cálculos entre fechas (DateTimePicker &#8211; DateDiff)</title>
		<link>http://www.solovb.net/index.php/2009/04/28/calculos-entre-fechas/</link>
		<comments>http://www.solovb.net/index.php/2009/04/28/calculos-entre-fechas/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 02:52:53 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[DateDiff]]></category>
		<category><![CDATA[DateTimePicker]]></category>
		<category><![CDATA[Fecha]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=373</guid>
		<description><![CDATA[Hoy quiero mostrarles como realizar cálculos entre fechas en visual basic .net utilizando la funcion DateDiff. ]]></description>
			<content:encoded><![CDATA[<p>Hoy quiero mostrarles como realizar cÃ¡lculos entre fechas en visual basic .net utilizando la funcion DateDiff. </p>
<p>Necesitaremos un formulario, un botÃ³n, algunos label&#8217;s y un control DateTimePicker, tal como se muestra en la siguiente imagen:</p>
<p><img alt="" src="/images/datediff001.jpg" class="alignnone" width="432" height="210" /></p>
<p>y en el evento clic del botÃ³ va el siguiente cÃ³digo:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
txtAÃ±os.Text = DateDiff(DateInterval.Year, DateTimePicker1.Value, Now.Date) &#038; " aÃ±os"
txtMeses.Text = DateDiff(DateInterval.Month, DateTimePicker1.Value, Now.Date) &#038; " meses"
txtSemanas.Text = DateDiff(DateInterval.Day, DateTimePicker1.Value, Now.Date) / 7 &#038; " semanas"
txtDias.Text = DateDiff(DateInterval.Day, DateTimePicker1.Value, Now.Date) &#038; " dÃ­as"
</pre>
<p>ejecutamos la aplicaciÃ³n, seleccionamos una fecha pasada y presionamos el botÃ³n calcular. El resultado serÃ¡ similar al de esta imagen:</p>
<p><img alt="" src="/images/datediff002.jpg" class="alignnone" width="432" height="210" /></p>
<p>Este es un ejemplo muy sencillo, basta con mirar un poco el cÃ³digo y las capturas y estoy seguro de que no tendrÃ¡s dudas, pero si llegaras a tener alguna, solo deja aquÃ­ tu comentario.</p>
<p>Espero que les sirva.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/04/28/calculos-entre-fechas/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Agrupar registro en SQL (Cláusula Group BY)</title>
		<link>http://www.solovb.net/index.php/2009/03/24/agrupar-registro-en-sql-clausula-group-by/</link>
		<comments>http://www.solovb.net/index.php/2009/03/24/agrupar-registro-en-sql-clausula-group-by/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 19:00:02 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[GROUP]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=348</guid>
		<description><![CDATA[Como su nombre lo indica la cláusula GROUP BY agrupa los registros que tengan un mismo valor en la/s colnma/s indocadas como grupo.Por ejemplo, si queremos obtener el apellido de todos los mienbros del club ejecutaría una sentencia como la que sigue:]]></description>
			<content:encoded><![CDATA[<p>Como su nombre lo indica la cláusula GROUP BY agrupa los registros que tengan un mismo valor en la/s colnma/s indocadas como grupo.Por ejemplo, si queremos obtener el apellido de todos los mienbros del club ejecutaría una sentencia como la que sigue:</p>
<pre class="brush: sql; ruler: false; first-line: 1; highlight: [0]">
SELECT apellido FROM miembros
</pre>
<p>Supongamos que tenemos varios miembros con el mismo apellido , esto nos daría filas repetidas. Ahora, si lo que nos interesa es obtener solo los apellidos que sean distintos. Para ello necesitamos agrupar los miembros que tengan el mismo apellido en un grupo y mostrar el grupo en lugar de las filas. </p>
<pre class="brush: sql; ruler: false; first-line: 1; highlight: [0]">
SELECT apellido FROM miembros GROUP BY apellido
</pre>
<p>Veamos ahora un ejemplo más práctico con el agregado de, por ejemplo, la función SUM.</p>
<p>Quiero saber cuanto es lo que se cobra de cuota por cada categoría. Entonces necesitaría listar todos los miembro agruparlos por categoría y sumar las cuotas de cada uno. Puedo hacer todo eso on una sola instrucción:</p>
<pre class="brush: sql; ruler: false; first-line: 1; highlight: [0]">
SELECT Categoria, sum(cuota) as importe FROM miembros GROUP BY categoria
</pre>
<p>Esta cláusla es muy útil y usarla no requiere más que un poco de práctica para poder entender su funcionamiento. </p>
<p>Espero que les sirva.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/03/24/agrupar-registro-en-sql-clausula-group-by/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Panel con colores en degrade &#8211; (Gradient)</title>
		<link>http://www.solovb.net/index.php/2009/03/11/panel-con-colores-en-degrade-gradient/</link>
		<comments>http://www.solovb.net/index.php/2009/03/11/panel-con-colores-en-degrade-gradient/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 14:16:23 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Controles]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Colores]]></category>
		<category><![CDATA[Degrade]]></category>
		<category><![CDATA[Gradient]]></category>
		<category><![CDATA[Panel]]></category>

		<guid isPermaLink="false">http://www.solovb.net/?p=295</guid>
		<description><![CDATA[Quiero mostrarles en esta oportunidad una forma muy sencilla de tener un panel mucho más vistoso con un degradé de dos colores.
]]></description>
			<content:encoded><![CDATA[<p>Quiero mostrarles en esta oportunidad una forma muy sencilla de tener un panel mucho más vistoso con un degradé de dos colores en <a href="http://www.solovb.net">visual basic .net</a>.</p>
<p>Para el ejemplo necesitamos un formulario y un panel, tal como se muestra en la siguiente figura:</p>
<p><img class="alignnone" src="/images/panelcolor001.jpg" alt="" width="257" height="204" /></p>
<p>luego damos doble clic sobre el panel y nos vamos al evento paint del panel en la vista de código, y en este evento colocamos el siguiente código:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Dim y As Integer = 0
Dim x As Integer = 0
Dim ancho As Integer = Me.Width
Dim alto As Integer = Me.Height
Dim color1 As Color
Dim color2 As Color</code>

color1 = Color.DarkRed
color2 = Color.LightCoral

Dim colorear As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y), _
color1, color2)
e.Graphics.FillRectangle(colorear, _
x, y, ancho, alto)
y += alto + 10
</pre>
<p>Para que este código funcione deberemos agregar una referencia a Drawing2D como se muestra a continuación:</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Imports System.Drawing.Drawing2D
</pre>
<p>Al ejecutar el programa deberíamos ver un formulario con un aspecto similar al de la siguiente figura:</p>
<p><img class="alignnone" src="/images/panelcolor002.jpg" alt="" width="257" height="204" /></p>
<p>Cambiando los valores de las variables color1 y color2 pueden cambiar los resultados a su gusto.</p>
<p>También quiero dejarles a continuación un par de variantes para reemplaar el código del evento paint del panel y obtener distintos resultados&#8230; espero que los prueben y les agrade&#8230;</p>
<p>Variante 1</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Dim y As Integer = 0
Dim x As Integer = 0
Dim ancho As Integer = Me.Width
Dim alto As Integer = Me.Height
Dim color1 As Color
Dim color2 As Color

color1 = Color.DarkRed
color2 = Color.LightCoral

Dim black_white_brush As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y), _
color1, color2)

Dim color_blend As New ColorBlend(3)
color_blend.Colors = New Color() {color1, color2, color1}
color_blend.Positions = New Single() {0.0, 0.2, 1.0}
black_white_brush.InterpolationColors = color_blend
e.Graphics.FillRectangle(black_white_brush, _
x, y, ancho, alto)
</pre>
<p>Variante 2</p>
<pre class="brush: vbnet; ruler: false; first-line: 1; highlight: [0]">
Dim y As Integer = 0
Dim x As Integer = 0
Dim ancho As Integer = Me.Width
Dim alto As Integer = Me.Height
Dim color1 As Color
Dim color2 As Color</code>

color1 = Color.DarkRed
color2 = Color.LightCoral

Dim colorear As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y), _
color1, color2)

Dim diag_brush As New _
LinearGradientBrush( _
New Point(x, y), New Point(x + ancho, y + alto), _
color1, color2)
e.Graphics.FillRectangle(diag_brush, _
x, y, ancho, alto)
</pre>
<p>Si te sirvieron, por favor, deja un comentario. Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/03/11/panel-con-colores-en-degrade-gradient/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Shell</title>
		<link>http://www.solovb.net/index.php/2009/01/07/shell/</link>
		<comments>http://www.solovb.net/index.php/2009/01/07/shell/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 21:42:32 +0000</pubDate>
		<dc:creator>Eliseo</dc:creator>
				<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://www.solovb.com/LF/?p=45</guid>
		<description><![CDATA[Se utiliza para invocar un programa externo desde nuestra aplicación.]]></description>
			<content:encoded><![CDATA[<p>Se utiliza para invocar un programa externo desde nuestra aplicación.</p>
<pre class="brush: vb;">
 'Puedes usar cualquiera de las tres opciones dependiendo del programa que quieras ejecutar
 Shell(&quot;calc&quot;, AppWinStyle.NormalFocus)

 Shell(&quot;calc.exe&quot;, AppWinStyle.NormalFocus)

 Shell(&quot;c:\windows\calc.exe&quot;, AppWinStyle.NormalFocus)
</pre>
<p>Las opciones posibles para el segundo parametros son:</p>
<pre class="brush: vb;">
AppWinStyle.Hide
AppWinStyle.MaximizedFocus
AppWinStyle.MinimizedFocus
AppWinStyle.MinimizedNoFocus
AppWinStyle.NormalFocus
AppWinStyle.NormalNoFocus
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.solovb.net/index.php/2009/01/07/shell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
