<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Gambas paso a paso</title>
	<atom:link href="http://gambeando.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gambeando.wordpress.com</link>
	<description>Sólo otro sitio WordPress.com</description>
	<lastBuildDate>Tue, 20 Dec 2011 11:57:55 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gambeando.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Gambas paso a paso</title>
		<link>http://gambeando.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gambeando.wordpress.com/osd.xml" title="Gambas paso a paso" />
	<atom:link rel='hub' href='http://gambeando.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Sumando puntos</title>
		<link>http://gambeando.wordpress.com/2011/11/09/sumando-puntos/</link>
		<comments>http://gambeando.wordpress.com/2011/11/09/sumando-puntos/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 00:21:03 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto3-gambas]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=374</guid>
		<description><![CDATA[Habíamos creado el procedimiento de edición para poder sumar los puntos y goles. Bien, ahora vamos a hacerlo interactuar con el formulario principal. Ya hemos creado las rutinas que comparan los goles y asignan el puntaje en función de esto. &#8230; <a href="http://gambeando.wordpress.com/2011/11/09/sumando-puntos/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=374&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Habíamos creado el procedimiento de edición para poder sumar los puntos y goles. Bien, ahora vamos a hacerlo interactuar con el formulario principal. Ya hemos creado las rutinas que comparan los goles y asignan el puntaje en función de esto.</p>
<p>En<em> Fmain</em> vamos a lanzar el procedimiento de ediciòn en el evento <em>activate</em> de la tabla. Este evento se dispara cuando hacemos doble click sobre la misma o cuando hacemos enter con el foco en la tabla.</p>
<p><span style="color:#0000ff;">Public Sub</span> tabla_<span style="color:#0000ff;">Activate()</span></p>
<p><span style="color:#0000ff;"> Dim</span> hresul<span style="color:#0000ff;"> As Result</span></p>
<p><span style="color:#0000ff;">If</span> tabla.Current = Null Then Return</p>
<p><span style="color:#0000ff;">If</span> ConectarBase() <span style="color:#0000ff;">Then Return</span></p>
<p>hresul = hconn.Edit(&#8220;equipos&#8221;, &#8220;Equipo=&amp;1&#8243;,<br />
tabla.Current.Key)<br />
fdata1.runedit(hresul)<span style="color:#ff6600;">&#8216;ESTA LINEA LANZA EL RUNEDIT EN FDATA1</span><br />
tabla.Current[0] = hresul["Equipo"]<br />
tabla.Current[1] = hresul["Puntaje"]<br />
tabla.Current[2] = hresul["Gf"]<br />
tabla.Current[3] = hresul["Gc"]</p>
<p>End</p>
<p>Pero, para activar la tabla con los parámetros correspondientes vamos a crear el procedimiento <em>sumar_puntos</em>, observe los comentarios destacados en mayúscula a la derecha del código.Recuerde que los comentarios empiezan con<strong> &#8216;</strong></p>
<p><span style="color:#3366ff;">Public Sub</span> sumar_puntos(lista <span style="color:#3366ff;">As Listbox</span>, vbp <span style="color:#3366ff;">As Valuebox</span>, vbgf <span style="color:#3366ff;">As Valuebox</span>, vbcg <span style="color:#3366ff;">As</span> <span style="color:#3366ff;">Valuebox</span>)<span style="color:#ff0000;"> &#8216;ESTOS SON LOS PARÀMETROS</span></p>
<p><span style="color:#3366ff;"> Dim</span> Clave <span style="color:#3366ff;">As String</span>  <span style="color:#ff0000;"> &#8216;DECLARAMOS VARIABLES</span><br />
<span style="color:#3366ff;">  Dim</span> filtro <span style="color:#3366ff;">As String</span></p>
<p>filtro = lista.Current.Text  <span style="color:#ff0000;">&#8216;AQUÍ ELEGIMOS EL EQUIPO ACTUAL</span><br />
tabla.Clear &#8216;limpiar tabla</p>
<p>If ConectarBase() Then Return</p>
<p>tabla.Columns.Count = 5</p>
<p>tabla.Columns[0].text = &#8220;Equipo&#8221;<br />
tabla.Columns[0].Width = 280<br />
tabla.Columns[0].Alignment = Align.Center<br />
tabla.Columns[1].text = &#8220;Puntaje&#8221;<br />
tabla.Columns[1].Alignment = Align.Center<br />
tabla.Columns[1].Width = 60<br />
tabla.Columns[2].text = &#8220;Gf&#8221;<br />
tabla.Columns[2].Width = 40<br />
tabla.Columns[2].Alignment = Align.Center<br />
tabla.Columns[3].text = &#8220;Gc&#8221;<br />
tabla.Columns[3].Alignment = Align.Center<br />
tabla.Columns[3].Width = 40<br />
tabla.Columns[4].text = &#8220;zdif&#8221;<br />
tabla.Columns[4].Alignment = Align.Center<br />
tabla.Columns[4].Width = 40</p>
<p>hresul = hconn.Exec(&#8220;Select * from equipos where Equipo like &#8216;&#8221; &amp; filtro &amp; &#8220;&#8216;&#8221;) <span style="color:#ff0000;">&#8216;SENTENCIA CONDICIONAL SQL</span></p>
<p><span style="color:#3366ff;">  Do While</span> hresul.Available<br />
Clave = hresul["Equipo"]<br />
tabla.Add(Clave, Clave)<span style="color:#ff0000;"> &#8216;CARGAMOS TABLA</span><br />
tabla[Clave][1] = hresul["Puntaje"]<br />
tabla[Clave][2] = hresul["Gf"]<br />
tabla[Clave][3] = hresul["Gc"]<br />
tabla[Clave][4] = hresul["zdif"]<br />
hresul.MoveNext()<br />
<span style="color:#3366ff;">Loop</span><br />
fdata1.vbgc.Value = vbcg.value <span style="color:#ff0000;">&#8216;AQUI ASIGNAMOS LOS VALORES DE PUNTOS Y GOLES</span><br />
fdata1.vbgf.Value = vbgf.Value<br />
fdata1.vbpuntos.Value = vbp.value</p>
<p>tabla.SetFocus <span style="color:#ff0000;">&#8216;PONEMOS EL FOCO EN LA TABLA</span><br />
Desktop.SendKeys(&#8220;\n&#8221;)<span style="color:#ff0000;"> &#8216;ENVIAMOS UN ENTER PARA LANZAR EL EVENTO TABLA ACTIVATE</span><br />
<span style="color:#3366ff;"> End</span><br />
Observe que para referirnos a un control de otro formulario antepones el nombre del formulario al del control (fdata1.vbgc.Value) fdata=nombre formulario ;vbgc=nombre control; value =valor.</p>
<p>Para recorrer cada uno de los equipos vamos a lanzar el procedimiento sumar_puntos pasándole los parámetros de la siguiente manera;en el <em>evento click</em> de <em>btnsumar</em></p>
<p>Public Sub btnsumar_Click()</p>
<p>sumar_puntos(lb1, vb2, vb1, vb3)<br />
Wait 0.1<br />
sumar_puntos(lb2, vb4, vb3, vb1)<br />
Wait 0.1<br />
sumar_puntos(lb3, vb6, vb5, vb7)<br />
Wait 0.1<br />
sumar_puntos(lb4, vb8, vb7, vb5)<br />
Wait 0.1<br />
sumar_puntos(lb5, vb10, vb9, vb11)<br />
Wait 0.1<br />
sumar_puntos(lb6, vb12, vb11, vb9)<br />
Wait 0.1<br />
sumar_puntos(lb7, vb14, vb13, vb15)<br />
Wait 0.1<br />
sumar_puntos(lb8, vb16, vb15, vb13)<br />
Wait 0.1<br />
sumar_puntos(lb9, vb18, vb17, vb19)<br />
Wait 0.1<br />
sumar_puntos(lb10, vb20, vb19, vb17)<br />
Wait 0.1<br />
sumar_puntos(lb11, vb22, vb21, vb23)<br />
Wait 0.1<br />
sumar_puntos(lb12, vb24, vb23, vb21)<br />
Wait 0.1<br />
sumar_puntos(lb13, vb26, vb25, vb27)<br />
Wait 0.1<br />
sumar_puntos(lb14, vb28, vb27, vb25)<br />
Wait 0.1<br />
sumar_puntos(lb15, vb30, vb29, vb31)<br />
Wait 0.1<br />
sumar_puntos(lb16, vbv32, vb31, vb29)<br />
Wait 0.1</p>
<p>pocisiones<br />
btnsumar.enabled = False<br />
btnfecha.enabled = True<br />
End</p>
<p>El Wait 0.1 es para que el procedimiento se lance con  100 milisegundos de Delay entre uno y otro. No se si es estrictamente necesario, pero hasta que lo puse el programa se colgaba aquí. Al final volvemos a cargar la tabla de pocisiones completa , bloqueamos el botòn de sumar para evitar sumar de nuevo por error y habilitamos el botón que guarda la fecha completa en la tabla correspondiente.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/374/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=374&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/11/09/sumando-puntos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>
	</item>
		<item>
		<title>Un pequeño cambio a la base de datos</title>
		<link>http://gambeando.wordpress.com/2011/10/29/un-pequeno-cambio-a-la-base-de-datos/</link>
		<comments>http://gambeando.wordpress.com/2011/10/29/un-pequeno-cambio-a-la-base-de-datos/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 01:47:20 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto3-gambas]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=365</guid>
		<description><![CDATA[Cuando comencé a crear el procedimiento para mostrar las fechas jugadas, encontré  un error al querer cargar la tabla correspondiente. Me aparecía un error en sql, diciendo que el índice estaba repetido. La verdad me costó bastante encontrar el error,pelo &#8230; <a href="http://gambeando.wordpress.com/2011/10/29/un-pequeno-cambio-a-la-base-de-datos/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=365&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Cuando comencé a crear el procedimiento para mostrar las fechas jugadas, encontré  un error al querer cargar la tabla correspondiente. Me aparecía un error en sql, diciendo que el índice estaba repetido. La verdad me costó bastante encontrar el error,pelo lo conseguí. El problema que al crear las tablas no les había puesto un índice y sqlitebrowser había creado un índice único para ambas tablas.</p>
<p>Me fue imposible modificarlas así que las creé de nuevo agregando un nuevo campo a cada una, <strong><em>id</em></strong> para la tabla <strong>equipos</strong> e <strong><em>rowid</em></strong> para la tabla <strong>fechas.</strong> Ambas son <em><strong>autonuméricas</strong></em> y , por poco lógico que resulte en la sentencia <em><strong>Insert into</strong></em> hay que darles un valor de <strong>Null</strong>(nulo) para que se llenen automáticamente.</p>
<p>Bien, habíamos quedado en el punto de crear el procedimiento para sumar puntos y goles. Vamos a necesitar abrir los registros uno por uno en modo edición para poder hacerlo.Vamos a agregar un nuevo formulario al que llamaremos fdata. Veamos su aspecto en tiempo de diseño con todos sus controles visibles&#8230;</p>
<div id="attachment_366" class="wp-caption aligncenter" style="width: 565px"><a href="http://gambeando.files.wordpress.com/2011/10/fdata1.png"><img class="size-full wp-image-366" title="fdata1" src="http://gambeando.files.wordpress.com/2011/10/fdata1.png?w=640" alt=""   /></a><p class="wp-caption-text">fdata1 en tiempo de diseño</p></div>
<p>Y en tiempo de ejecución mostrando solo el label&#8230;</p>
<div id="attachment_367" class="wp-caption aligncenter" style="width: 562px"><a href="http://gambeando.files.wordpress.com/2011/10/fdataej.png"><img class="size-full wp-image-367" title="fdataej" src="http://gambeando.files.wordpress.com/2011/10/fdataej.png?w=640" alt=""   /></a><p class="wp-caption-text">fdata1 en tiempo de ejecución</p></div>
<p>Los controles quedan ocultos puesto que el usuario no debe interactuar con ellos, forman parte de un proceso automatizado.<br />
Los controles a colocar son :5 textbox (txtequipo,txtpuntos,txtgf,txtgc,txtdif) ,<br />
3 valuebox(vbgf,vbgc,vbpuntos) un control timer y un label. A todos los controles, excepto al label y al timer hay que ponerle su propiedad visible a false desde la ventana de propiedades. El label porque es el único que va a quedar visible y el timer porque es invisible de por sí. Al timer le ponemos su propiedad <em>enabled</em> a <em>True y  le damos un delay de 200 milisegundos. </em>A continuación el código de fdata1<em>:</em></p>
<p><em><span style="color:#3366ff;"> Private</span> hconn <span style="color:#3366ff;">As Connection</span><br />
<span style="color:#3366ff;">Private</span> hresul <span style="color:#3366ff;">As Result</span><br />
<span style="color:#3366ff;">  Private</span> editando<span style="color:#3366ff;"> As Boolean</span></p>
<p><span style="color:#3366ff;">  Public Sub</span> runedit(data <span style="color:#3366ff;">As Result</span>)</p>
<p>hresul = data<br />
editando = <span style="color:#3366ff;">True</span><br />
txtequipo.text = hresul["<span style="color:#ff0000;">Equipo</span>"]<br />
txtpuntos.text = hresul["<span style="color:#ff0000;">Puntaje</span>"]<br />
txtgf.text = hresul["<span style="color:#ff0000;">Gf"</span>]<br />
Txtgc.text = hresul["<span style="color:#ff0000;">Gc</span>"]<br />
txtdif.text = hresul["<span style="color:#ff0000;">zdif</span>"]<br />
<span style="color:#3366ff;">Me</span>.ShowModal</p>
<p><span style="color:#3366ff;">    End</span></p>
<p><span style="color:#3366ff;">Public Sub</span> Timer1_Timer()<br />
<span style="color:#3366ff;">Dim</span> dif As<span style="color:#3366ff;"> Integer</span><br />
<span style="color:#3366ff;">If</span> editando <span style="color:#3366ff;">Then</span></p>
<p><span style="color:#3366ff;">Try</span> hresul["<span style="color:#ff0000;">Equipo</span>"] = txtequipo.text<br />
<span style="color:#3366ff;">Try</span> hresul["<span style="color:#ff0000;">Puntaje</span>"] = <span style="color:#3366ff;">Val</span>(txtpuntos.text) + vbpuntos.value<br />
<span style="color:#3366ff;">Try</span> hresul["<span style="color:#ff0000;">Gf</span>"] = <span style="color:#3366ff;">Val</span>(txtgf.text) + vbgf.value<br />
<span style="color:#3366ff;">Try</span> hresul["<span style="color:#ff0000;">Gc</span>"] = <span style="color:#3366ff;">Val</span>(Txtgc.text) + vbgc.Value<br />
<span style="color:#3366ff;">Try</span> hresul["<span style="color:#ff0000;">zdif</span>"] = (<span style="color:#3366ff;">Val</span>(txtgf.text) + vbgf.value) &#8211; (<span style="color:#3366ff;">Val</span>(Txtgc.text) + vbgc.Value)<br />
<span style="color:#3366ff;">Try</span> hresul.Update</p>
<p><span style="color:#3366ff;">Else</span><br />
<span style="color:#3366ff;">Endif</span></p>
<p><span style="color:#3366ff;">Me</span>.Close()<br />
<span style="color:#3366ff;">Catch</span><br />
Message.Error(&#8220;<span style="color:#ff0000;">imposible guardar datos</span>&#8220;)<br />
<span style="color:#3366ff;">End</span><br />
</em></p>
<p>Como siempre declaramos primero las variables, luego el procedimiento runedit(que se dispara desde el formulario principal, lo veremos más adelante)nos carga los valores para el equipo correspondiente, necesarios para realizar las cuentas.</p>
<p>Luego el evento <em><strong>timer </strong>nos dispara la actualización, suma puntos, goles a favor y en contra, hace la diferencia de goles y carga todo en la tabla, cerrando posteriormente el formulario.</em></p>
<p><em>En el próximo post veremos como interactua esto con el formulario principal.<br />
</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/365/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=365&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/10/29/un-pequeno-cambio-a-la-base-de-datos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/fdata1.png" medium="image">
			<media:title type="html">fdata1</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/fdataej.png" medium="image">
			<media:title type="html">fdataej</media:title>
		</media:content>
	</item>
		<item>
		<title>Sigamos avanzando</title>
		<link>http://gambeando.wordpress.com/2011/10/20/sigamos-avanzando/</link>
		<comments>http://gambeando.wordpress.com/2011/10/20/sigamos-avanzando/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 00:29:56 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto3-gambas]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=361</guid>
		<description><![CDATA[Bien, ya hemos visto como usar el mismo código en varias partes de nuestro programa y como llamarlo desde diferentes procedimientos. Ahoara nos encontramos con la fase en que, tras escribir nosotros los resultados el programa calcule y asigne los &#8230; <a href="http://gambeando.wordpress.com/2011/10/20/sigamos-avanzando/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=361&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bien, ya hemos visto como usar el mismo código en varias partes de nuestro programa y como llamarlo desde diferentes procedimientos.</p>
<p>Ahoara nos encontramos con la fase en que, tras escribir nosotros los resultados el programa calcule y asigne los puntos a cada uno. Como ya sabemos el empate da un punto a cada uno,la victoria tres y la derrota cero punto. Por tanto, necesitamos que el programa compare en cada partido los goles del local, los del visitante y en virtud de eso asigne los puntos. Vamos a crear una función que nos devuelva en una variable el resultado de esa comparación. Veamos como:</p>
<p><span style="color:#3366ff;">Private Function</span> compara(goleslocal <span style="color:#3366ff;">As</span> <span style="color:#3366ff;">ValueBox</span>, golesvisita <span style="color:#3366ff;">As</span> <span style="color:#3366ff;">ValueBox</span>) <span style="color:#3366ff;">As</span> <span style="color:#3366ff;">Integer</span><br />
<span style="color:#3366ff;">   Dim</span> estado <span style="color:#3366ff;">As</span> <span style="color:#3366ff;">Integer</span> = <span style="color:#ff0000;">0</span><br />
<span style="color:#3366ff;"> If</span> goleslocal.value = golesvisita.value <span style="color:#3366ff;">Then</span><br />
estado = <span style="color:#ff0000;">1</span><br />
<span style="color:#3366ff;"> Else</span><br />
<span style="color:#3366ff;">   If</span> goleslocal.value &gt; golesvisita.value <span style="color:#3366ff;">Then</span><br />
estado = <span style="color:#ff0000;">2</span><br />
<span style="color:#3366ff;">    Else</span><br />
estado =<span style="color:#ff0000;"> 3</span><br />
<span style="color:#3366ff;">  Endif</span><br />
<span style="color:#3366ff;"> Endif</span><br />
<span style="color:#3366ff;">Return</span> estado<br />
<span style="color:#3366ff;">End</span><br />
Primero declaramos la variable Estado como <em>integer</em>(entero) y la inicializamos con un valor de cero, luego realizamos la comparación con una sentencia condicional if..then..else if,else y devolvemos el estado mediante la sentencia <em><strong>return estado</strong></em></p>
<p>Lo siguiente es crear el procedimiento asignar</p>
<p><span style="color:#0000ff;">Public Sub</span> asignar(goleslocal <span style="color:#0000ff;">As ValueBox</span>, puntoslocal <span style="color:#0000ff;">As ValueBox</span>, golesvisita <span style="color:#0000ff;">As</span> <span style="color:#0000ff;">ValueBox</span>, puntosvisita <span style="color:#0000ff;">As ValueBox</span>)<br />
<span style="color:#0000ff;">Select Case</span> compara(goleslocal, golesvisita)<br />
<span style="color:#0000ff;">  Case</span> 1<br />
puntoslocal.Value = &#8220;<span style="color:#ff0000;">1</span>&#8220;<br />
puntosvisita.Value = &#8220;<span style="color:#ff0000;">1</span>&#8220;<br />
<span style="color:#0000ff;">   Case</span> 2<br />
puntoslocal.Value = &#8220;<span style="color:#ff0000;">3</span>&#8220;<br />
puntosvisita.Value = &#8220;<span style="color:#ff0000;">0</span>&#8220;<br />
<span style="color:#0000ff;"> Case</span> 3<br />
puntoslocal.Value = &#8220;<span style="color:#ff0000;">0</span>&#8220;<br />
puntosvisita.Value = &#8220;<span style="color:#ff0000;">3</span>&#8220;<br />
<span style="color:#0000ff;">   End Select</span><br />
<span style="color:#0000ff;">End Sub</span></p>
<p>Según el estado de la<strong> función compara</strong>  se asignan los puntos. Solo nos resta pasarle los <strong>parámetros</strong> para que sepa que valores comparar y cuales asignar. Para eso en el evento <strong>click</strong> del botón <strong>btnasignar</strong> llamamos al procedimiento homónimo (<strong>asignar</strong>)</p>
<p><span style="color:#0000ff;">Public Sub</span> Btnasignar_Click()<br />
asignar(vb1, vb2, vb3, vb4)<br />
asignar(vb5, vb6, vb7, vb8)<br />
asignar(vb9, vb10, vb11, vb12)<br />
asignar(vb13, vb14, vb15, vb16)<br />
asignar(vb17, vb18, vb19, vb20)<br />
asignar(vb21, vb22, vb23, vb24)<br />
asignar(vb25, vb26, vb27, vb28)<br />
asignar(vb29, vb30, vb31, vbv32)<br />
btnsumar.enabled = <span style="color:#0000ff;">True</span><br />
Btnasignar.enabled = <span style="color:#0000ff;">False</span><br />
End</p>
<p>Para que se entienda <em><strong>esto</strong></em> : asignar(vb29, vb30, vb31, vbv32) equivale a               asignar(goleslocal As ValueBox, puntoslocal As ValueBox, golesvisita As ValueBox, puntosvisita As ValueBox)</p>
<p>vb29= goleslocal   vb30=puntos local   vb31=golesvisita   vb32=puntosvisita,</p>
<p>Como podemos ver el código repite el procedimiento para cada cuarteta de valuebox, lo cual nos evita reescribir el  procedimiento de comparación y asignación para cada partido.</p>
<p>Por último se bloquea el botón asignar(btnasignar) que ya cumplió su función y se habilita el botón sumar puntos (btnsumar), que es lo próximo que debemos hacer. Es un procedimiento algo complejo, ya que hay que seleccionar equipo por equipo, abrir la tabla en modo edición, sumar puntos y goles, actualizar diferencia de goles  y pasar al siguiente equipo. Por tanto,  para no embarullar mucho, queda para el próximo post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=361&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/10/20/sigamos-avanzando/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>
	</item>
		<item>
		<title>Reutilizando código</title>
		<link>http://gambeando.wordpress.com/2011/10/14/reutilizando-codigo/</link>
		<comments>http://gambeando.wordpress.com/2011/10/14/reutilizando-codigo/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 00:56:57 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto3-gambas]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=353</guid>
		<description><![CDATA[Habíamos visto en el post anterior como llamar a un procedimiento o función desde distintos lugares para evitar escribirlo muchas veces. Experimentando rato despúes me di cuenta que el procedimiento usado para rellenar el columview lo iba a tener que &#8230; <a href="http://gambeando.wordpress.com/2011/10/14/reutilizando-codigo/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=353&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Habíamos visto en el post anterior como llamar a un procedimiento o función desde distintos lugares para evitar escribirlo muchas veces. Experimentando rato despúes me di cuenta que el procedimiento usado para rellenar el columview lo iba a tener que llamar más de una vez durante el programa, por lo que me convenía encontrar una manera de no tener que reescribirlo. Esta fue la solución:</p>
<p><a href="http://gambeando.files.wordpress.com/2011/10/posic.png"><img class="aligncenter size-full wp-image-354" title="posic" src="http://gambeando.files.wordpress.com/2011/10/posic.png?w=640&#038;h=534" alt="" width="640" height="534" /></a>Y así quedó el código del evento open de fmain, mucho más corto:</p>
<p><a href="http://gambeando.files.wordpress.com/2011/10/open.png"><img class="aligncenter size-full wp-image-355" title="open" src="http://gambeando.files.wordpress.com/2011/10/open.png?w=640" alt=""   /></a>Hemos agregado en la sentencia sql un par de claúsulas para que nos ordene la lista,resaltado en negrita :</p>
<p>hresul = hconn.Exec(&#8220;Select * from equipos <strong>order by Puntaje DESC, zdif DESC</strong> &#8220;)</p>
<p><strong>order by</strong>(ordene por) <strong> puntaje DESC</strong> (puntaje de mayor a menor)<strong> zdif DESC</strong>(diferencia de goles de mayor a menor)</p>
<p>Esto nos permite ordener la tabla de pocisiones desde el de más puntaje, si hay dos con el mismo puntaje va primero el que tenga mayor diferencia de goles. Incluso podríamos agregarle a la sentencia sql una tercera condición , <strong>Gf DESC</strong> para que en caso de que estuvieran empatados en puntos y saldo de goles pusiese primero el que tuviera más goles a favor.</p>
<p>Necesitamos que cuando inicie el programa nos cargue en los 16 listbox la lista de equipos para poder seleccionarlos y no tener que escribir uno x uno. Además de la comodidad que esto implica, nos permite evitar errores al tipear los nombres. Recordemos brevemente la sintaxis utilizada para cargar los mismos:</p>
<p>listbox.add(&#8220;lo que quieras&#8221;)</p>
<p>Ahora, imaginemos hacer esto para 16 listbox con 16 equipos cada uno. Es mucho código. Además. si cambiamos de liga o hay ascensos y descensos cambiar equipos nos implicaría meter mano en el código. Lo que vamos a hacer es que cada listbox se cargue desde la base de datos, mediante un select y un procedimiento creado al efecto: el procedimiento <em><strong>listado</strong></em> con el parámetro<strong> lista</strong> as listbox(lista como listbox)</p>
<p><a href="http://gambeando.files.wordpress.com/2011/10/listar.png"><img class="aligncenter size-full wp-image-357" title="listar" src="http://gambeando.files.wordpress.com/2011/10/listar.png?w=640" alt=""   /></a>Primero como siempre declaramos las variables,<span style="color:#3366ff;"> Dim</span> clave <span style="color:#3366ff;">as</span> String, luego agregamos esta sentencia al principio de la lista (<strong>lista.Add(&#8220;Elige un equipo&#8221;)</strong>) para obligarnos a seleccionar un equipo en cada lista. Esto nos evita que alguno de los listbox quede con valor<span style="color:#3366ff;"> Null</span> al no modificar la selección. A continuación comprobamos que la base esté conectada y seleccionamos los equipos en orden alfabético &#8220;order by Equipo ASC&#8221; y mediante el Do while&#8230;loop  recorremos equipo por equipo. Pero,¿donde cargamos la lista?</p>
<p>En cada uno de los listbox mediante el llamado al procedimiento <em><strong>listado</strong></em> con el parámetro del nombre de cada uno de los listbox, en el sub<em><strong> listar</strong></em>:</p>
<p>listado(lb1)<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
listado(lb16)</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/353/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=353&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/10/14/reutilizando-codigo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/posic.png" medium="image">
			<media:title type="html">posic</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/open.png" medium="image">
			<media:title type="html">open</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/listar.png" medium="image">
			<media:title type="html">listar</media:title>
		</media:content>
	</item>
		<item>
		<title>Terminando la interfaz</title>
		<link>http://gambeando.wordpress.com/2011/10/12/terminando-la-interfaz/</link>
		<comments>http://gambeando.wordpress.com/2011/10/12/terminando-la-interfaz/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 00:23:21 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto3-gambas]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=346</guid>
		<description><![CDATA[Bien, habíamos quedado en el post anterior por terminar la interfaz primaria del programa, para las funciones que tendrá esta primera beta. Vamos a necesitar un botón que asigne los puntos(btnasignar),otro que los sume (btnsumar), uno más para guardar la &#8230; <a href="http://gambeando.wordpress.com/2011/10/12/terminando-la-interfaz/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=346&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bien, habíamos quedado en el post anterior por terminar la interfaz primaria del programa, para las funciones que tendrá esta primera beta. Vamos a necesitar un botón que asigne los puntos(btnasignar),otro que los sume (btnsumar), uno más para guardar la fecha jugada(btnguardar), un botón para agregar los equipos(btnnuevo), y por supuesto uno para cerrar el programa(btnsalir). La imagen del post anterior nos da una idea, pero es a gusto de consumidor. Mi idea de cómo colocar los botones sigue dos premisas básicas, que resulte cómodo para el usuario y <em>los que llevan alguna secuencia estén en orden</em>. Ya veremos en breve a qué me refiero con éste último punto. Debemos agregar también un columview al que llamaremos <em>tabla</em></p>
<p>Vamos a necesitar que al empezar el programa se carguen los datos que vamos a utilizar,o sea la tabla con los equipos. Para eso vamos a tener que conectar a la base de datos mediante un objeto connection.</p>
<p>Al principio de fmain.class declaramos las variables comunes a todo el formulario:</p>
<p><span style="color:#3366ff;">Private</span> hconn <span style="color:#3366ff;">As</span> Connection<br />
<span style="color:#3366ff;">Private</span> hresul <span style="color:#3366ff;">As</span> Result</p>
<p>Luego creamos el procedimiento de conección:</p>
<p><span style="color:#3366ff;">Public Function</span> ConectarBase() <span style="color:#3366ff;">As</span> Boolean</p>
<p><span style="color:#3366ff;">if</span> hconn &lt;&gt; <span style="color:#3366ff;">Null Then Return False</span></p>
<p>hconn =<span style="color:#3366ff;"> New Connection</span><br />
hconn.Host = User.Home<span style="color:#3366ff;"> &amp;/</span> &#8220;.<span style="color:#ff9900;">goles1</span>&#8220;<br />
hconn.name = <span style="color:#ff9900;">&#8220;Futbol&#8221;</span><br />
hconn.type =<span style="color:#ff9900;"> &#8220;sqlite3&#8243;</span><br />
<span style="color:#3366ff;">     Try</span> hconn.Open()<br />
<span style="color:#3366ff;">          If</span> Error<span style="color:#3366ff;"> Then</span><br />
hconn =<span style="color:#3366ff;"> Null</span><br />
Message.Error(<span style="color:#ff9900;">&#8220;error al conectar con la base&#8221;</span>)<br />
<span style="color:#3366ff;">     Return True</span><br />
<span style="color:#3366ff;">Endif</span><br />
<span style="color:#3366ff;">        Return False</span><br />
<span style="color:#3366ff;">End</span></p>
<p>Como podemos ver es el mismo código que usamos en los ejemplos anteriores(agenda y juego), donde indicamos la ubicación de la base, el tipo y nombre de la misma y le pedimos que se conecte y en caso contrario nos de error. Vemos que el<em><strong> path o ruta</strong></em> es:</p>
<p>hconn.Host = User.Home &amp;/ &#8220;<span style="color:#ff0000;">.goles1&#8243;</span> o sea la carpeta de usuario y dentro de la misma, la carpeta oculta<span style="color:#ff0000;"> .goles1</span>. ¿Cómo nos aseguramos que la misma esté ahí?Primero, incluyéndolo en la carpeta<strong> Datos</strong> de nuestro programa (botón derecho sobre datos,nuevo, existente, navegamos hasta la carpeta donde lo tenemos y le damos aceptar).</p>
<p>Luego, en el evento <strong><em>open</em></strong><em> </em>de<em></em><strong><em> fmain</em></strong> agregamos el siguiente código:</p>
<p><span style="color:#0000ff;"> If Not Exist</span>(User.Home <span style="color:#0000ff;">&amp;/</span><span style="color:#ff0000;"> &#8220;.goles1/Futbol&#8221;</span>)<br />
<span style="color:#0000ff;">     Try Mkdir</span> User.Home <span style="color:#0000ff;">&amp;/</span><span style="color:#ff0000;"> &#8220;.goles1&#8243;</span><br />
<span style="color:#0000ff;">  Copy</span> &#8220;Futbol&#8221; To User.Home <span style="color:#0000ff;">&amp;/</span> <span style="color:#ff0000;">&#8220;.goles1/Futbol&#8221;</span><br />
Endif</p>
<p>Este método comprueba si existe la base, si no crea la carpeta y copia en ella la base que viene con el programa. Sencillo.A continuación todo  el código del Form_open:</p>
<p>Dim Clave As String</p>
<p>If Not Exist(User.Home &amp;/ &#8220;.goles1/Futbol&#8221;)<br />
Try Mkdir User.Home &amp;/ &#8220;.goles1&#8243;<br />
Copy &#8220;Futbol&#8221; To User.Home &amp;/ &#8220;.goles1/Futbol&#8221;<br />
Endif</p>
<p>tabla.Clear  &#8216;limpiar tabla</p>
<p>If ConectarBase() Then Return</p>
<p>tabla.Columns.Count = 5</p>
<p>tabla.Columns[0].text = &#8220;Equipo&#8221;<br />
tabla.Columns[0].Width = 280<br />
tabla.Columns[0].Alignment = Align.Center<br />
tabla.Columns[1].text = &#8220;Puntaje&#8221;<br />
tabla.Columns[1].Alignment = Align.Center<br />
tabla.Columns[1].Width = 60<br />
tabla.Columns[2].text = &#8220;Gf&#8221;<br />
tabla.Columns[2].Width = 40<br />
tabla.Columns[2].Alignment = Align.Center<br />
tabla.Columns[3].text = &#8220;Gc&#8221;<br />
tabla.Columns[3].Alignment = Align.Center<br />
tabla.Columns[3].Width = 40<br />
tabla.Columns[4].text = &#8220;zdif&#8221;<br />
tabla.Columns[4].Alignment = Align.Center<br />
tabla.Columns[4].Width = 40</p>
<p>hresul = hconn.Exec(&#8220;Select * from Equipos&#8221;) &#8216;consulta sql&#8221;</p>
<p>Do While hresul.Available<br />
Clave = hresul["Equipo"]<br />
tabla.Add(Clave, Clave)<br />
tabla[Clave][1] = hresul["Puntaje"]<br />
tabla[Clave][2] = hresul["Gf"]<br />
tabla[Clave][3] = hresul["Gc"]<br />
tabla[Clave][4] = hresul["zdif"]<br />
hresul.MoveNext()<br />
Loop<br />
<strong>    listar</strong><br />
<strong>      </strong><strong>       bloqueabotones</strong></p>
<p>End</p>
<p>Lo que está en <strong>negrita</strong> es nuevo, lo anterior comprueba la conexión y carga los datos en el columview. El procedimiento  <strong>  bloqueabotones  </strong>es sumamente sencillo y éste es su código:</p>
<p><span style="color:#0000ff;">Public Sub</span> bloqueabotones()</p>
<p>Btnasignar.enabled =<span style="color:#0000ff;"> False</span><br />
btnsumar.enabled = <span style="color:#0000ff;">False</span><br />
btnfecha.enabled = <span style="color:#0000ff;">False</span></p>
<p><span style="color:#0000ff;">End</span></p>
<p>¿Por qué lo hacemos así en lugar de poner el código directamente en el procedimiento<em> open</em>? Porque vamos a necesitar hacer lo mismo en más de una ocasión y esto nos permite utilizar el mismo código sin necesidad de reescribirlo, simplemente lo llamamos por su nombre. En este caso particular es un código de apenas tres líneas y puede no parecer muy útil, pero imagine en los casos en que las líneas sean 10 o más y debas llamarlas varias veces a lo largo del programa. En el próximo post comentaremos <em><strong>listar</strong></em> y por primera vez haremos uso de funciones con parámetros.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=346&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/10/12/terminando-la-interfaz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>
	</item>
		<item>
		<title>interfase y análisis</title>
		<link>http://gambeando.wordpress.com/2011/10/04/interfase-y-analisis/</link>
		<comments>http://gambeando.wordpress.com/2011/10/04/interfase-y-analisis/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 02:05:44 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto3-gambas]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=334</guid>
		<description><![CDATA[Siempre es bueno, antes de comenzar a construir la interfase , analizar que precisamos que ésta contenga. En  nuestro caso, precisamos cargar equipos, resultados, número de fecha y como  no, listar la tabla de posiciones . Para ver la tabla, &#8230; <a href="http://gambeando.wordpress.com/2011/10/04/interfase-y-analisis/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=334&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Siempre es bueno, antes de comenzar a construir la interfase , analizar que precisamos que ésta contenga. En  nuestro caso, precisamos cargar equipos, resultados, número de fecha y como  no, listar la tabla de posiciones . Para ver la tabla, vamos a colocar un columview , al que llamaremos precisamente <em>tabla</em> o <em>cvtabla</em>. Para cargar la fecha ,un listbox al que denominaremos <em>lbfechas</em> y 16 listbox para cargar los equipos a los que llamaremos simplemente <em>lb1,lb2</em> y así sucesivamente hasta <em>lb16</em>. Recordemos que los nombres los ponemos desde la ventana de propiedades en la propiedad name. Además vamos a precisar 32 value box que seràn donde pondremos los goles de cada equipo y donde el programa asignara los puntajes correspondientes. Veamos su aspecto en tiempo de diseño.</p>
<div id="attachment_335" class="wp-caption aligncenter" style="width: 650px"><a href="http://gambeando.files.wordpress.com/2011/10/pantallazo.png"><img class="size-full wp-image-335 " title="Pantallazo" src="http://gambeando.files.wordpress.com/2011/10/pantallazo.png?w=640&#038;h=458" alt="vista diseño" width="640" height="458" /></a><p class="wp-caption-text">Fmain en tiempo de diseño con todos sus controles visibles</p></div>
<div id="attachment_336" class="wp-caption aligncenter" style="width: 650px"><a href="http://gambeando.files.wordpress.com/2011/10/pantallazo-1.png"><img class="size-full wp-image-336" title="Pantallazo-1" src="http://gambeando.files.wordpress.com/2011/10/pantallazo-1.png?w=640&#038;h=459" alt="" width="640" height="459" /></a><p class="wp-caption-text">Y en tiempo de ejucuciòn con algunos controles ocultos y la tabla cargada</p></div>
<p>Si observamos con atención veremos que &#8220;faltan&#8221; algunos controles. Es que en realidad los hemos ocultado poniendo su propiedad visible=false, ya que el usuario no necesita interactuar con éstos ni ver su contenido. Además evitamos que por accidente cargue algún valor incorrecto.</p>
<p>¿Cómo podemos hacer para que la construcción de una interfase con tantos controles sea más fácil y rápida?  Veamoslo con un ejemplo.</p>
<div id="attachment_338" class="wp-caption aligncenter" style="width: 650px"><a href="http://gambeando.files.wordpress.com/2011/10/arrastre.png"><img class="size-full wp-image-338" title="arrastre" src="http://gambeando.files.wordpress.com/2011/10/arrastre.png?w=640&#038;h=488" alt="cree el primer listbox" width="640" height="488" /></a><p class="wp-caption-text">Creamos el primer listbox y le cambiamos el nombre a lb1</p></div>
<p>Arrastrando y pegando creamos el primer listbox y le cambiamos el nombre a lb1. Luego seleccionamos el control recién creado, botón derecho del mouse, copiar y luego pinchando con el botón derecho sobre el formulario le damos pegar. Veremos que el nuevo control se crea ya con el nombre lb2 y aparece en la esquina superior izquierda del formulario.</p>
<p><a href="http://gambeando.files.wordpress.com/2011/10/pantallazo-2.png"><img class="aligncenter size-full wp-image-340" title="Pantallazo-2" src="http://gambeando.files.wordpress.com/2011/10/pantallazo-2.png?w=640&#038;h=110" alt="copiando controles" width="640" height="110" /></a>Lo arrastramos a su lugar , y con <em>control +v</em>(atajo de teclado para pegar) creamos el resto de los listbox. Los iremos colocando por pares, de izquiera a derecha. Puede guiarse por la imagen de la interfase que aparece más arriba. Para alinearlos los selecciones por fila y usando la propiedad X de los mismos los alineamos verticalmente.Vea la imagen.</p>
<div id="attachment_341" class="wp-caption aligncenter" style="width: 650px"><a href="http://gambeando.files.wordpress.com/2011/10/pantallazo-3.png"><img class="size-full wp-image-341" title="Pantallazo-3" src="http://gambeando.files.wordpress.com/2011/10/pantallazo-3.png?w=640&#038;h=270" alt="" width="640" height="270" /></a><p class="wp-caption-text">Alineando controles...</p></div>
<p>Luego podemos alinearlos horizontalmente mediante la propiedad <em>Y</em>.</p>
<p>Ahora de la misma manera crearemos los valuebox, llamando al original vb1.Los iremos colocando por pares a la derecha de cada listbox. Es fundamental colocarlos en el orden correcto para facilitar la codificación posterior.<a href="http://gambeando.files.wordpress.com/2011/10/value.png"><img class="aligncenter size-full wp-image-343" title="value" src="http://gambeando.files.wordpress.com/2011/10/value.png?w=640&#038;h=561" alt="" width="640" height="561" /></a>Y por aquí vamos dejando. En el próximo post terminaremos de construir la interfase y comenzaremos a codificar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/334/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=334&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/10/04/interfase-y-analisis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/pantallazo.png" medium="image">
			<media:title type="html">Pantallazo</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/pantallazo-1.png" medium="image">
			<media:title type="html">Pantallazo-1</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/arrastre.png" medium="image">
			<media:title type="html">arrastre</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/pantallazo-2.png" medium="image">
			<media:title type="html">Pantallazo-2</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/pantallazo-3.png" medium="image">
			<media:title type="html">Pantallazo-3</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/10/value.png" medium="image">
			<media:title type="html">value</media:title>
		</media:content>
	</item>
		<item>
		<title>Creando la base de datos</title>
		<link>http://gambeando.wordpress.com/2011/09/29/creando-la-base-de-datos/</link>
		<comments>http://gambeando.wordpress.com/2011/09/29/creando-la-base-de-datos/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 02:26:54 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=324</guid>
		<description><![CDATA[Vamos a empezar por crear las base datos necesaria para este proyecto. Podemos usar el gestor de bases de datos, de gambas. Yo use el sqlite database  browser, os dejo unas capturas de pantalla del mismo. Es muy intuitivo y &#8230; <a href="http://gambeando.wordpress.com/2011/09/29/creando-la-base-de-datos/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=324&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vamos a empezar por crear las base datos necesaria para este proyecto. Podemos usar el gestor de bases de datos, de gambas. Yo use el sqlite database  browser, os dejo unas capturas de pantalla del mismo. Es muy intuitivo y no precisa mayores explicaciones.</p>
<p>Si no lo tenemos lo podemos instalar desde sinaptic o como en mi caso, desde el centro de software de Ubuntu.</p>
<p><a href="http://gambeando.files.wordpress.com/2011/09/pantallazo.png"><img class="aligncenter size-full wp-image-325" title="Pantallazo" src="http://gambeando.files.wordpress.com/2011/09/pantallazo.png?w=640&#038;h=535" alt="" width="640" height="535" /></a>Vamos a File&#8230;new database, elegimos el nombre y luego creamos las tablas, que en principio van a ser solo dos. Equipos y Fechas.</p>
<p><a href="http://gambeando.files.wordpress.com/2011/09/pantallazo-goles-futbol.png"><img class="aligncenter size-full wp-image-326" title="Pantallazo--Goles-Futbol" src="http://gambeando.files.wordpress.com/2011/09/pantallazo-goles-futbol.png?w=640&#038;h=529" alt="" width="640" height="529" /></a><a href="http://gambeando.files.wordpress.com/2011/09/tablas.png"><img class="aligncenter size-full wp-image-327" title="tablas" src="http://gambeando.files.wordpress.com/2011/09/tablas.png?w=640&#038;h=529" alt="tablas" width="640" height="529" /></a><strong>¡¡Atenciòn!!</strong> Las bases de datos distinguen entre mayùsculas y minùsculas, tanto en los nombre de tablas y campos como en los datos. Hay que ser cuidadoso con esto porque sino puede ser un verdadero quebradero de cabeza.</p>
<p>Bien nuestras tablas deben quedar con la estructura que se ve el la imagen final o sea:</p>
<p><strong>Tabla Equipos   </strong>   con los campos Equipos (texto),Punteje(entero)Gf (entero) Gc(entero) Donde Gf son los goles a favor y Gc los goles en contra. Lo que va entre parèntesis es el <em>tipo de dato.</em></p>
<p><strong>Tabla Fechas</strong> Con los campos  Fecha(texto),local(texto)glocal(entero),Visitante(texto),gvisita(entero). Donde fecha es el orden de las mismas (fecha1,fecha2) y no un campo del tipo date.glocal son los goles del local y gvisita son los goles del visitante. Os dejo un par de capturas de ambas tablas con las dos primeras fechas cargadas.<a href="http://gambeando.files.wordpress.com/2011/09/tablas1.png"><img class="aligncenter size-full wp-image-328" title="tablas1" src="http://gambeando.files.wordpress.com/2011/09/tablas1.png?w=640" alt=""   /></a><a href="http://gambeando.files.wordpress.com/2011/09/tablas2.png"><img class="aligncenter size-full wp-image-329" title="tablas2" src="http://gambeando.files.wordpress.com/2011/09/tablas2.png?w=640" alt=""   /></a>Cuando carguemos la primera tabla en nuestro programa vamos a querer que nos ordene la tabla por puntaje de mayor a menor, para eso vamos a usar la orden sql &#8220;order By&#8221; pero eso ya lo veremos durante la construcción del programa. En el próximo post vamos a construir la interfase y estudiar los nuevos desafíos que se presentan para codificar. Hasta entonces.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=324&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/09/29/creando-la-base-de-datos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/09/pantallazo.png" medium="image">
			<media:title type="html">Pantallazo</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/09/pantallazo-goles-futbol.png" medium="image">
			<media:title type="html">Pantallazo--Goles-Futbol</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/09/tablas.png" medium="image">
			<media:title type="html">tablas</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/09/tablas1.png" medium="image">
			<media:title type="html">tablas1</media:title>
		</media:content>

		<media:content url="http://gambeando.files.wordpress.com/2011/09/tablas2.png" medium="image">
			<media:title type="html">tablas2</media:title>
		</media:content>
	</item>
		<item>
		<title>Un nuevo proyecto &#8211; Goles, la pasión del fútbol</title>
		<link>http://gambeando.wordpress.com/2011/09/21/un-nuevo-proyecto-goles-la-pasion-del-futbol/</link>
		<comments>http://gambeando.wordpress.com/2011/09/21/un-nuevo-proyecto-goles-la-pasion-del-futbol/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 13:34:57 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[proyecto 3]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=318</guid>
		<description><![CDATA[BIen, aprovechando todo lo que hemos ido aprendiendo sobre base de datos vamos a empezar un nuevo y algo más ambicioso proyecto, Goles, la pasión del fútbol. Está realizado en base a la liga de mi país, Uruguay, donde militan &#8230; <a href="http://gambeando.wordpress.com/2011/09/21/un-nuevo-proyecto-goles-la-pasion-del-futbol/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=318&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>BIen, aprovechando todo lo que hemos ido aprendiendo sobre base de datos vamos a empezar un nuevo y algo más ambicioso proyecto, Goles, la pasión del fútbol.</p>
<p>Está realizado en base a la liga de mi país, Uruguay, donde militan dieciséis equipos, pero la idea es que pueda adaptarse fácilmente a cualquier otra. La premisa, básicamente, consiste en anotar los resultados en un formulario al efecto y que automáticamente sume puntos, goles a favor y goles en contra, y guarde los resultados de la fecha en una base de datos. Esto nos permitirá más adelante buscar resultados por fecha o o por equipo.Y que además genere las tablas de posiciones fecha tras fecha.</p>
<p>Vamos a trabajar por primera vez con <strong>Gambas 3</strong>, la última versión del mismo.</p>
<p>Analizemos los requisitos. Primero que nada necesitamos una base de datos con algunas tablas. Una tabla llamada &#8220;equipos&#8221; con los siguientes Items: Equipo, puntaje, gf(goles a favor)Gc(goles en contra). Otra tabla llamada &#8220;fechas&#8221; donde guardaremos los resultados, con los items fecha, equipo 1, goles1,equipo2, goles2. Vamos a necesitar que el programa analize los resultados y en base a esto asigne los puntos, tres al ganador , uno en caso de empate y 0 en caso de derrota.</p>
<p>En una segunda etapa, la idea es poder llevar tabla de goleadores y tarjetas amarillas y rojas, y que nos alerta al llegar a cinco amarillas(suspensión automática). Pero esto será a futuro.</p>
<p>Vamos a ver algunas cosas nuevas como código común para varios controles, copiar controles y realizar cálculos numéricos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=318&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/09/21/un-nuevo-proyecto-goles-la-pasion-del-futbol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>
	</item>
		<item>
		<title>Ampliando el juego 5 (Y último)</title>
		<link>http://gambeando.wordpress.com/2011/09/11/ampliando-el-juego-5-y-ultimo/</link>
		<comments>http://gambeando.wordpress.com/2011/09/11/ampliando-el-juego-5-y-ultimo/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 23:51:35 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=313</guid>
		<description><![CDATA[&#160; Bien, nos había quedado pendiente explicar el procedimiento actualizar , que es el que suma el puntaje que van ganando los jugadores. Veamoslo en detalle:(explicaciones en color rojo) Procedimiento actualizar PUBLIC SUB actualizar() DIM hresul AS Result &#160; &#8216;primero &#8230; <a href="http://gambeando.wordpress.com/2011/09/11/ampliando-el-juego-5-y-ultimo/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=313&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&nbsp; Bien, nos había quedado pendiente explicar el procedimiento <strong><em>actualizar</em></strong> , que es el que suma el puntaje que van ganando los jugadores. Veamoslo en detalle:(explicaciones en color rojo)</p>
<p><strong>Procedimiento actualizar</strong></p>
<p>PUBLIC SUB actualizar()</p>
<p>DIM hresul AS Result &nbsp;<span style="color:rgb(255,0,0);"> <em>&#8216;primero la variable necesaria</em></span></p>
<p>IF tabla.Current = NULL THEN RETURN &nbsp; <span style="color:rgb(255,0,0);"> &#8216;comprobamos que haya un registro seleccioado</span></p>
<p>IF ConectarBase() THEN RETURN</p>
<p>hresul = hconn.Edit(“jugadores”, “Nombre=&amp;1″,<br /> tabla.Current.Key)&nbsp;<span style="color:rgb(255,0,0);"> &#8216;Aquí elegimos el registro actual y lo abrimos en modo edición</span><br /> fdata.runedit(hresul)&nbsp;<span style="color:rgb(255,0,0);"> &#8216;Aquí llamamos al procedimiento runedit de fdata</span><br /> tabla.Current[0] = hresul["Nombre"]<span style="color:rgb(255,0,0);"> &#8216;Aquí actualizamos los datos</span><br /> tabla.Current[1] = hresul["puntaje"]<span style="color:rgb(255,0,0);">&nbsp; &#8216;Aquí actualizamos los datos</span><br /> cerrarconexion()<br /> asignar</p>
<p>END</p>
<p>Hay dos líneas aquí que son especialmente importantes, ya que entre ellas hay un procedimiento que se realiza en otro formulario .Lo remarco en azul.</p>
<p><span style="color:rgb(0,0,255);">fdata.runedit</span>(hresul) <br /> tabla.Current[0] = hresul["Nombre"]</p>
<p>Esta línea nos remite al runedit de fdata , que abre el formulario&nbsp; <em>fdata</em>, cuyo código podemos recordar ahora.</p>
<p>PRIVATE hconn AS Connection<br /> PRIVATE hresul AS Result<br /> PRIVATE editando AS Boolean</p>
<p>PUBLIC SUB runedit(data AS Result)</p>
<p>hresul = data<br /> editando = TRUE<br /> txtjugador.text = hresul["Nombre"]<br /> txtpuntaje.text = hresul["puntaje"]<br /> &nbsp; <strong>ME.ShowModal</strong></p>
<p>END</p>
<p>En esta primera parte se declaran las variables,se pone la variable editando a true(verdadera) y se asignan a los cuadros de texto los valores correspondientes al jugador actual. Pero, lo más importante es la línea que dice<strong><span style="color:rgb(0,0,255);"> Me.showmodal</span></strong>. ¿Qué significa esto? Que el formulario queda abierto de forma MODAL y hasta que el usuario o el programa no lo indiquen no se cerrará, por tanto el código del sub actualizar no pasará a la siguiente línea mientras esto no sucede. </p>
<p>En principio había puesto un botón al formulario para aceptar el punto, pero luego lo eliminé y agregué un timer que automatiza la suma del punto, a través de su evento timer.Recordemos el código.</p>
<p><strong>PUBLIC SUB Timer1_Timer()</strong></p>
<p>IF editando THEN</p>
<p>TRY hresul["Nombre"] = txtjugador.text<br /> <strong>&nbsp; TRY hresul["puntaje"] = Val(txtpuntaje.text) + 1</strong></p>
<p>TRY hresul.Update</p>
<p>&nbsp; ELSE</p>
<p>&nbsp;&nbsp; TRY hconn.EXEC(“insert into jugadores values (&amp;1,&amp;2)”, txtjugador.text, txtpuntaje.text)</p>
<p>&nbsp; ENDIF</p>
<p>&nbsp;Para terminar, las fuentes del juego y el instalador del mismo para Ubuntu y Debian lo pueden descargar en el siguiente<a title="enlace" href="http://www.megaupload.com/?f=D3DY8E8C"> </a><a title="enlace" href="http://www.megaupload.com/?f=D3DY8E8C">enlace</a>. Hasta el próximo proyecto.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/313/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=313&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/09/11/ampliando-el-juego-5-y-ultimo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>
	</item>
		<item>
		<title>Ampliando el juego 4</title>
		<link>http://gambeando.wordpress.com/2011/09/08/ampliando-el-juego-4/</link>
		<comments>http://gambeando.wordpress.com/2011/09/08/ampliando-el-juego-4/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 21:38:03 +0000</pubDate>
		<dc:creator>dapeca2608</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://gambeando.wordpress.com/?p=308</guid>
		<description><![CDATA[Vamos a modificar ahora algunas cosas en los formularios de juego. Empecemos por el individual frm juego. Para empezar vamos a colocar en el evento open del mismo el siguiente código: ME.Text = &#8220;Campo de juego de&#8221; &#38; &#8220;  &#8221; &#8230; <a href="http://gambeando.wordpress.com/2011/09/08/ampliando-el-juego-4/">Sigue leyendo <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=308&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vamos a modificar ahora algunas cosas en los formularios de juego. Empecemos por el individual frm juego.</p>
<p>Para empezar vamos a colocar en el evento open del mismo el siguiente código:</p>
<p>ME.Text = &#8220;Campo de juego de&#8221; &amp; &#8220;  &#8221; &amp; FMain.txtjugador.Text</p>
<p>Esto hará que  la barra superior del form luzca  el texto con el nombre del jugador , el entrecomillado entre los &amp; es para que quede espacio entre &#8220;de&#8221; y el nombre.</p>
<p>Y en la última línea del sub JUGAR agregamos</p>
<p>fmain.actualizar</p>
<p>Esto llama al procedimiento  <em>actualizar</em> del formulario principal, que veremos luego  con más detalle. ANTES ACLARAR QUE ESTAS MISMAS MODIFICACIONES HAY QUE HACERLAS TAMBIEN EN <em>frmcompetir</em>, donde además hay que hacer otra pequeña modificación.</p>
<p>Agregaremos un botón llamado <em>btnnuevo</em> con el código en su evento click:</p>
<p>modreinicio.reinicio</p>
<p>VAmos ahora a modreinicio y agreganos este código:</p>
<p>PUBLIC SUB reinicio()</p>
<p>Frmcompetir.Close<br />
Message.Info(&#8220;Elija su nombre de la lista y presione competencia&#8221;)</p>
<p>END</p>
<p>Esto hace que el form se cierre y nos muestro el cuadro de mensaje detallado para elegir el nombre del competidor.</p>
<p>Cuando terminé de modificar el juego y creé el instalador surgió un problema que no había  previsto. La base de datos no se copiaba  ya que en Linux el concepto de aplication.path no es igual que en windows,y al instalarlo en otro equipo daba error. El juego funcionaba, pero sin datos ni puntajes.</p>
<p>La solución fue modificar fmain de la siguiente forma:</p>
<p>hconn = NEW Connection<br />
<strong>hconn.Host = <del>Application.Path</del></strong><br />
hconn.name = “mibase2″</p>
<p>cambiando la línea tachada por</p>
<p>hconn.host=User.Home &amp;/ “.juego”</p>
<p>y en el evento form_open</p>
<p>IF NOT Exist(User.Home &amp;/ “.juego/mibase2″)<br />
TRY MKDIR User.Home &amp;/ “.juego”<br />
COPY “mibase2″ TO User.Home &amp;/ “.juego/mibase2″<br />
ENDIF</p>
<p>Primero comprueba si existe la base de datos, si no es así crea el directorio  .juego y copia la misma allí. Está probado ya en un par de máquinas.De más está decirte que los jugadores que están son a modo ilustrativo, crea primero los tuyos(al menos 1para que no se bloquee la base) y luego elimina los otros seleccionándolos de a uno y presionando  la tecla suprimir.</p>
<p>En el próximo post desmenuzaremos el procedimiento <em>actualizar</em>, dando por terminado este proyecto.Hasta entonces.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gambeando.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gambeando.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gambeando.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gambeando.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gambeando.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gambeando.wordpress.com/308/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gambeando.wordpress.com/308/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gambeando.wordpress.com/308/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gambeando.wordpress.com&amp;blog=14871267&amp;post=308&amp;subd=gambeando&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gambeando.wordpress.com/2011/09/08/ampliando-el-juego-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b2088db03e10d491e60f6b1ec3343c38?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dapeca2608</media:title>
		</media:content>
	</item>
	</channel>
</rss>
