<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Comunidad Gambas-es - Todos los foros]]></title>
		<link>https://gambas-es.org/</link>
		<description><![CDATA[Comunidad Gambas-es - https://gambas-es.org]]></description>
		<pubDate>Sat, 11 Apr 2026 05:58:10 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Visual Studio Code con Gambas]]></title>
			<link>https://gambas-es.org/thread-2013.html</link>
			<pubDate>Thu, 05 Mar 2026 18:09:08 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=10">guizans</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2013.html</guid>
			<description><![CDATA[No se como llegué a encontrar esto, pero está ahí, una extensión para añadir marcado de Gambas en el editor de Micrososoft. También es verdad que hace cuatro años que no se actualiza. No lo he probado, pero me ha llamado la atención.<br />
<br />
<a href="https://marketplace.visualstudio.com/items?itemName=microhobby.gambas3" target="_blank" rel="noopener" class="mycode_url">Enlace en la página de Microsoft</a><br />
<a href="https://github.com/microhobby/vscode-gambas" target="_blank" rel="noopener" class="mycode_url">[/url]<br />
[url=https://github.com/microhobby/vscode-gambas]Enlace al proyecto en GitHub</a>]]></description>
			<content:encoded><![CDATA[No se como llegué a encontrar esto, pero está ahí, una extensión para añadir marcado de Gambas en el editor de Micrososoft. También es verdad que hace cuatro años que no se actualiza. No lo he probado, pero me ha llamado la atención.<br />
<br />
<a href="https://marketplace.visualstudio.com/items?itemName=microhobby.gambas3" target="_blank" rel="noopener" class="mycode_url">Enlace en la página de Microsoft</a><br />
<a href="https://github.com/microhobby/vscode-gambas" target="_blank" rel="noopener" class="mycode_url">[/url]<br />
[url=https://github.com/microhobby/vscode-gambas]Enlace al proyecto en GitHub</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sobre la proteccion del codigo de una aplicacion en gambas]]></title>
			<link>https://gambas-es.org/thread-2012.html</link>
			<pubDate>Mon, 16 Feb 2026 18:31:00 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=76">JOUSSEPH</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2012.html</guid>
			<description><![CDATA[Buen día, amigos programadores de años, como están, espero que bien, tanto tiempo que no los veo. Quiero preguntarles algo, y es con el asunto de la ingeniería inversa, verán todos sabemos que los programas informáticos son susceptibles a ser descompilados y todo el asunto, el detalle es hacerle la vida difícil al ingeniero inverso, para proteger nuestra aplicación, en este caso que yo quisiera proteger por ejemplo la conexión a una base de datos como lo hace gambas?, desconozco si gambas tiene una especie de cifrado tipo Android en su código, o si tiene el código abierto, aunque he visto que en su paquete lo oculta, sin embargo, quisiera saber si tiene algo de protección, y si es seguro proteger la conexión a las bases de datos, gracias.]]></description>
			<content:encoded><![CDATA[Buen día, amigos programadores de años, como están, espero que bien, tanto tiempo que no los veo. Quiero preguntarles algo, y es con el asunto de la ingeniería inversa, verán todos sabemos que los programas informáticos son susceptibles a ser descompilados y todo el asunto, el detalle es hacerle la vida difícil al ingeniero inverso, para proteger nuestra aplicación, en este caso que yo quisiera proteger por ejemplo la conexión a una base de datos como lo hace gambas?, desconozco si gambas tiene una especie de cifrado tipo Android en su código, o si tiene el código abierto, aunque he visto que en su paquete lo oculta, sin embargo, quisiera saber si tiene algo de protección, y si es seguro proteger la conexión a las bases de datos, gracias.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sobre LinuxMint]]></title>
			<link>https://gambas-es.org/thread-2011.html</link>
			<pubDate>Mon, 16 Feb 2026 17:33:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=10">guizans</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2011.html</guid>
			<description><![CDATA[Llevo varios años con Debian con Gnome, más concretamente en la versión estable. Estaba cómodo, el sistema es robusto, no necesito estar a la última en cuanto a programas o drivers. Desde que actualicé a Debian 13 empezó el problema con Gambas. La versión que viene en los repósitos no funciona bien, se cuelga a menudo y la última versión de los repósitos de Suse, pues tampoco funciona bien, es más, tengo un hilo abierto a tal tema. Probé la versión Testing, todo funcionaba bien, en apariencia, pero demasiadas actualizaciones seguidas, no me gusta. El caso es que he oído hablar maravillas de LinuxMint y me dije: "¿Por qué no probarla a ver que tal funciona?<br />
<br />
 La instalación sencilla, la post-instalación fácil, no he tenido que hacer nada. La última versión de Gambas corre de maravilla y el escritorio se siente fluido, aunque debo decir que no me gusta, no la parte estética, sino el escritorio en sí. Supongo que muchos años con Gnome, Cinamon me parece demasiado clásico, como muy del pasado. No quiere decir que sea malo, ni mucho menos, pero no me convence, aunque supongo que me acostumbraré.<br />
<br />
 Pero lo que si me choca mucho es la falta de consistencia visual. A nivel estético LinuxMint es un desastre. La "Configuración del sistema" es un batiburrilo de iconos y de mini aplicaciones que tienes que adivinar para que sirven y con menús y opciones confusas. La decoración de ventanas no es consistente, unas aplicaciones tienen una barra mas ancha con botones, al estilo Gnome, y otras mas delgadas sin botones.  El menú que despliega en la barra de tareas, es plano a más no poder, tardas en encontrar algo, menos mal que la búsqueda funciona bien.  La "Tienda de aplicaciones" aparte de lenta en el arranque, es, como decirlo, fea de cojones. Y no hay forma de que recuerde el último tamaño de la ventana antes de cerrarse, no es atractiva para alguien que venga de otro sistema operativo.<br />
<br />
 No me enrollo mas.Como conclusión diré que me parece una distribución buena, estable (hasta donde he podido comprobar) y rápida. Como punto negativo la cantidad de opciones y lo escondidas que están (aun no he sido capaz de encontrar como se hace para iniciar sesión automáticamente) y la poca consistencia visual que tiene. No me extraña que el <a href="https://www.muylinux.com/2026/02/12/linux-mint-ciclo-desarrollo-lanzamientos/" target="_blank" rel="noopener" class="mycode_url">líder</a> de la distribución quiere alargar los tiempos entre versiones para darle cariño a la distribución.<br />
<br />
 Un saludo.]]></description>
			<content:encoded><![CDATA[Llevo varios años con Debian con Gnome, más concretamente en la versión estable. Estaba cómodo, el sistema es robusto, no necesito estar a la última en cuanto a programas o drivers. Desde que actualicé a Debian 13 empezó el problema con Gambas. La versión que viene en los repósitos no funciona bien, se cuelga a menudo y la última versión de los repósitos de Suse, pues tampoco funciona bien, es más, tengo un hilo abierto a tal tema. Probé la versión Testing, todo funcionaba bien, en apariencia, pero demasiadas actualizaciones seguidas, no me gusta. El caso es que he oído hablar maravillas de LinuxMint y me dije: "¿Por qué no probarla a ver que tal funciona?<br />
<br />
 La instalación sencilla, la post-instalación fácil, no he tenido que hacer nada. La última versión de Gambas corre de maravilla y el escritorio se siente fluido, aunque debo decir que no me gusta, no la parte estética, sino el escritorio en sí. Supongo que muchos años con Gnome, Cinamon me parece demasiado clásico, como muy del pasado. No quiere decir que sea malo, ni mucho menos, pero no me convence, aunque supongo que me acostumbraré.<br />
<br />
 Pero lo que si me choca mucho es la falta de consistencia visual. A nivel estético LinuxMint es un desastre. La "Configuración del sistema" es un batiburrilo de iconos y de mini aplicaciones que tienes que adivinar para que sirven y con menús y opciones confusas. La decoración de ventanas no es consistente, unas aplicaciones tienen una barra mas ancha con botones, al estilo Gnome, y otras mas delgadas sin botones.  El menú que despliega en la barra de tareas, es plano a más no poder, tardas en encontrar algo, menos mal que la búsqueda funciona bien.  La "Tienda de aplicaciones" aparte de lenta en el arranque, es, como decirlo, fea de cojones. Y no hay forma de que recuerde el último tamaño de la ventana antes de cerrarse, no es atractiva para alguien que venga de otro sistema operativo.<br />
<br />
 No me enrollo mas.Como conclusión diré que me parece una distribución buena, estable (hasta donde he podido comprobar) y rápida. Como punto negativo la cantidad de opciones y lo escondidas que están (aun no he sido capaz de encontrar como se hace para iniciar sesión automáticamente) y la poca consistencia visual que tiene. No me extraña que el <a href="https://www.muylinux.com/2026/02/12/linux-mint-ciclo-desarrollo-lanzamientos/" target="_blank" rel="noopener" class="mycode_url">líder</a> de la distribución quiere alargar los tiempos entre versiones para darle cariño a la distribución.<br />
<br />
 Un saludo.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problema con creación de BD SQlite3 que antes si funcionaba]]></title>
			<link>https://gambas-es.org/thread-2010.html</link>
			<pubDate>Thu, 12 Feb 2026 22:43:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=334">Marcos</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2010.html</guid>
			<description><![CDATA[Hola, buen día chicos:<br />
<br />
Hace un par de meses venia trabajando en un proyecto personal para catalogar imágenes y dejar de tener todo perdido en el PC. ademas de tener la opción de crear un catalogo compartido con otros usuarios de la misma maquina. Bajo ese marco de trabajo tengo una rutina que hasta la versión 3.19 en kdeNeon me funcionaba perfecto.<br />
<br />
Por cosas de la vida actualice mi maquina a Manjaro con plasma y aquí esta la versión 3.21 de Gambas3. Me toco cambiar los componentes gb.db a gb.db2.<br />
<br />
La aplicación con la BD creada sigue funcionando, agrego, elimino, etc., pero al iniciar desde cero la aplicación donde debe crear la BD no hace nada por que la sección de creación de BD no funciona y no envía mensaje de error, salvo cuando reintenta abrir la BD y no la encuentra. <br />
<br />
&#36;DB.Databases.Add(Constants.DATABASE_NAME)  &lt;== esta linea no esta haciendo nada ni enviando mensaje alguno hacia afuera<br />
<br />
<br />
Sera error de la nueva versión?, error de los nuevos componentes?<br />
este código lo rescate desde el tutorial de <a href="http://jsbsan.blogspot.com.es/" target="_blank" rel="noopener" class="mycode_url">http://jsbsan.blogspot.com.es/</a> <br />
<hr class="mycode_hr" />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>Private Sub CreateDatabase()<br />
  'Crear conexión temporal para crear la BD<br />
  &#36;DB = New Connection<br />
  &#36;DB.Type = Constants.DATABASE_SQLITE3<br />
  &#36;DB.Host = &#36;DbLibraryDirectory<br />
  &#36;DB.Name = "" 'Liberamos el nombre para poder crear la BD física<br />
  &#36;DB.Open()<br />
  If Error Then<br />
    &#36;Log4Gambas.Fatal(("No se puede abrir conexión para crear BD:") &amp; " " &amp; Error.Text)<br />
    ERROR.Propagate<br />
  Endif<br />
  'Ya sabemos que el archivo de base de datos no existe, aqui preguntamos via connect<br />
  If Not &#36;DB.Databases.Exist(Constants.DATABASE_NAME) Then<br />
    '' NOTE: Aqui ocurre la magia, se crea la base de datos<br />
    &#36;DB.Databases.Add(Constants.DATABASE_NAME)<br />
    Wait 0.05 ' Pequeña pausa para asegurar creación fisica del archivo<br />
    If Error Then<br />
      &#36;Log4Gambas.Fatal(("No se puede crear base de datos:") &amp; " " &amp; Error.Text)<br />
      &#36;DB.Close()<br />
      ERROR.Propagate<br />
    Endif<br />
  Endif<br />
  ' cerramos la conexion para asegurar soltarla y ahora usar el nombre<br />
  &#36;DB.Close()<br />
  ' Reconectar con el nombre de la BD y crear esquema<br />
  &#36;DB.Name = Constants.DATABASE_NAME<br />
  ' Volvemos a conectarnos<br />
  &#36;DB.Open()<br />
  If Error Then<br />
    &#36;Log4Gambas.Fatal(("No se puede reabrir BD recién creada:") &amp; " " &amp; Error.Text)<br />
    ERROR.Propagate<br />
  Endif<br />
  &#36;DB.Close()<br />
  &#36;Log4Gambas.Info(("Base de datos creada exitosamente"))<br />
End</code></div></div>]]></description>
			<content:encoded><![CDATA[Hola, buen día chicos:<br />
<br />
Hace un par de meses venia trabajando en un proyecto personal para catalogar imágenes y dejar de tener todo perdido en el PC. ademas de tener la opción de crear un catalogo compartido con otros usuarios de la misma maquina. Bajo ese marco de trabajo tengo una rutina que hasta la versión 3.19 en kdeNeon me funcionaba perfecto.<br />
<br />
Por cosas de la vida actualice mi maquina a Manjaro con plasma y aquí esta la versión 3.21 de Gambas3. Me toco cambiar los componentes gb.db a gb.db2.<br />
<br />
La aplicación con la BD creada sigue funcionando, agrego, elimino, etc., pero al iniciar desde cero la aplicación donde debe crear la BD no hace nada por que la sección de creación de BD no funciona y no envía mensaje de error, salvo cuando reintenta abrir la BD y no la encuentra. <br />
<br />
&#36;DB.Databases.Add(Constants.DATABASE_NAME)  &lt;== esta linea no esta haciendo nada ni enviando mensaje alguno hacia afuera<br />
<br />
<br />
Sera error de la nueva versión?, error de los nuevos componentes?<br />
este código lo rescate desde el tutorial de <a href="http://jsbsan.blogspot.com.es/" target="_blank" rel="noopener" class="mycode_url">http://jsbsan.blogspot.com.es/</a> <br />
<hr class="mycode_hr" />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>Private Sub CreateDatabase()<br />
  'Crear conexión temporal para crear la BD<br />
  &#36;DB = New Connection<br />
  &#36;DB.Type = Constants.DATABASE_SQLITE3<br />
  &#36;DB.Host = &#36;DbLibraryDirectory<br />
  &#36;DB.Name = "" 'Liberamos el nombre para poder crear la BD física<br />
  &#36;DB.Open()<br />
  If Error Then<br />
    &#36;Log4Gambas.Fatal(("No se puede abrir conexión para crear BD:") &amp; " " &amp; Error.Text)<br />
    ERROR.Propagate<br />
  Endif<br />
  'Ya sabemos que el archivo de base de datos no existe, aqui preguntamos via connect<br />
  If Not &#36;DB.Databases.Exist(Constants.DATABASE_NAME) Then<br />
    '' NOTE: Aqui ocurre la magia, se crea la base de datos<br />
    &#36;DB.Databases.Add(Constants.DATABASE_NAME)<br />
    Wait 0.05 ' Pequeña pausa para asegurar creación fisica del archivo<br />
    If Error Then<br />
      &#36;Log4Gambas.Fatal(("No se puede crear base de datos:") &amp; " " &amp; Error.Text)<br />
      &#36;DB.Close()<br />
      ERROR.Propagate<br />
    Endif<br />
  Endif<br />
  ' cerramos la conexion para asegurar soltarla y ahora usar el nombre<br />
  &#36;DB.Close()<br />
  ' Reconectar con el nombre de la BD y crear esquema<br />
  &#36;DB.Name = Constants.DATABASE_NAME<br />
  ' Volvemos a conectarnos<br />
  &#36;DB.Open()<br />
  If Error Then<br />
    &#36;Log4Gambas.Fatal(("No se puede reabrir BD recién creada:") &amp; " " &amp; Error.Text)<br />
    ERROR.Propagate<br />
  Endif<br />
  &#36;DB.Close()<br />
  &#36;Log4Gambas.Info(("Base de datos creada exitosamente"))<br />
End</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Un interprete de basic en html hecho con gemini....]]></title>
			<link>https://gambas-es.org/thread-2009.html</link>
			<pubDate>Mon, 02 Feb 2026 20:06:44 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=21">jsbsan</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2009.html</guid>
			<description><![CDATA[Buenas, anoche antes de acostarme pensé en hacer un interprete de basic en la ia.<br />
<br />
Prompt usado:<br />
1. Haz un intérprete del lenguaje Basic<br />
<br />
Respuesta:  ¿Te gustaría que añada alguna función específica, como soporte para funciones matemáticas ( sin, cos, graficos), <br />
<br />
2. Le digo que si<br />
<br />
3. Incluye también el comando gosub<br />
<br />
(ejecuto los ejemplos, alguno no funciona (los gráficos), se lo comento, los arregla)<br />
<br />
4. El comando print no imprime las cadenas de caracteres creo que la confunde con una variable<br />
<br />
 Respuesta: lo arregla.<br />
<br />
Resultado:<br />
Tengo un interprete de basic con capacidad de dibujar <br />
<br />
<a href="https://i.imgur.com/ONu6GTh.png" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/ONu6GThl.png" loading="lazy"  alt="[Imagen: ONu6GThl.png]" class="mycode_img" /></a><br />
<br />
Repositorio en github:  <a href="https://github.com/jsbsan/InterpreteDeBasic/tree/main" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/InterpreteDeBasic/tree/main</a><br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/html.png" title="HTML File" style="height: 16px; width: 16px" border="0" alt=".html" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=589" target="_blank" title="">basic.html</a> (Tamaño: <span class="text-dark">18.17 KB</span> Descargas: <span class="text-dark">1)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Buenas, anoche antes de acostarme pensé en hacer un interprete de basic en la ia.<br />
<br />
Prompt usado:<br />
1. Haz un intérprete del lenguaje Basic<br />
<br />
Respuesta:  ¿Te gustaría que añada alguna función específica, como soporte para funciones matemáticas ( sin, cos, graficos), <br />
<br />
2. Le digo que si<br />
<br />
3. Incluye también el comando gosub<br />
<br />
(ejecuto los ejemplos, alguno no funciona (los gráficos), se lo comento, los arregla)<br />
<br />
4. El comando print no imprime las cadenas de caracteres creo que la confunde con una variable<br />
<br />
 Respuesta: lo arregla.<br />
<br />
Resultado:<br />
Tengo un interprete de basic con capacidad de dibujar <br />
<br />
<a href="https://i.imgur.com/ONu6GTh.png" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/ONu6GThl.png" loading="lazy"  alt="[Imagen: ONu6GThl.png]" class="mycode_img" /></a><br />
<br />
Repositorio en github:  <a href="https://github.com/jsbsan/InterpreteDeBasic/tree/main" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/InterpreteDeBasic/tree/main</a><br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/html.png" title="HTML File" style="height: 16px; width: 16px" border="0" alt=".html" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=589" target="_blank" title="">basic.html</a> (Tamaño: <span class="text-dark">18.17 KB</span> Descargas: <span class="text-dark">1)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[El ratón no hace click donde apunta.]]></title>
			<link>https://gambas-es.org/thread-2008.html</link>
			<pubDate>Wed, 28 Jan 2026 20:32:07 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=10">guizans</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2008.html</guid>
			<description><![CDATA[Hola.<br />
<br />
Estoy usando Debian 13 con Gnome, usaba la versión 3.21.2 de Gambas. Hoy he actualizado a la versión 3.21.3. El caso es que  el IDE no me respondía el botón de iniciar un programa. Así que lo inicié pulsado a F5 y cuando voy hacer click en un cuadro de texto veo que tampoco responde. Probando veo que donde se hace click no es donde está el puntero del ratón, hay que subirlo hasta estar fuera del botón o cuadro de texto. Como os podéis imaginar es muy incómodo, así que con el cabreo, he borrado esa versión y he instalado la versión que viene en los repósitos.<br />
<br />
 Recuerdo que esto mismo me pasaba si usaba QT5 para crear un programa, pero usando el componente gb.gui el problema desaparecía. Pues la última versión empeoró el problema.<br />
<br />
¿Alguien mas le pasa esto?<br />
<br />
Un saludo.]]></description>
			<content:encoded><![CDATA[Hola.<br />
<br />
Estoy usando Debian 13 con Gnome, usaba la versión 3.21.2 de Gambas. Hoy he actualizado a la versión 3.21.3. El caso es que  el IDE no me respondía el botón de iniciar un programa. Así que lo inicié pulsado a F5 y cuando voy hacer click en un cuadro de texto veo que tampoco responde. Probando veo que donde se hace click no es donde está el puntero del ratón, hay que subirlo hasta estar fuera del botón o cuadro de texto. Como os podéis imaginar es muy incómodo, así que con el cabreo, he borrado esa versión y he instalado la versión que viene en los repósitos.<br />
<br />
 Recuerdo que esto mismo me pasaba si usaba QT5 para crear un programa, pero usando el componente gb.gui el problema desaparecía. Pues la última versión empeoró el problema.<br />
<br />
¿Alguien mas le pasa esto?<br />
<br />
Un saludo.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gmao-Factory: Aplicación realizada completamente con IA gemini-canvas con prompt]]></title>
			<link>https://gambas-es.org/thread-2007.html</link>
			<pubDate>Sat, 24 Jan 2026 20:28:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=21">jsbsan</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2007.html</guid>
			<description><![CDATA[Feliz año nuevo 2026!<br />
<br />
Buenas chicos, hace tiempo que no me pasaba por el foro y escribía en él. <img src="https://gambas-es.org/images/smilies/blush.png" alt="Blush" title="Blush" class="smilie smilie_12" /><br />
Durante estos años, casi no he programado con gambas, pero si con python y VBA de excel, bueno <img src="https://gambas-es.org/images/smilies/rolleyes.png" alt="Rolleyes" title="Rolleyes" class="smilie smilie_6" /> ... realmente he estado usando la IA de gemini para ir haciendo mis pequeñas herramientas del día a día.<br />
<br />
Os presento  mi último proyecto, hecho durante estas vacaciones de navidad, y en un tiempo record,  sin prácticamente escribir ni una sola línea de código (en python ), eso si, através de gemini-canvas (versión profesional) y todo usando prompt (muchos), para crear el programa desde cero e ir ampliándolo. <br />
Fue un proceso muy fue iterativo: <br />
- escribir un prompt con lo que quería hacer o añadir.<br />
- ejecutar <br />
- apuntar los errores <br />
- prompt describiendo el error a gemini (he usado el editor visual studio code)<br />
- hacer las correcciones que decía gemini (normalmente generaba el archivo ya corregido)<br />
- volver a ejecutar.<br />
<br />
He documentado casi el 100% de los prompts que escribía ( <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt</a> ). Las respuestas que me daba la IA, no las he apuntado. <img src="https://gambas-es.org/images/smilies/angel.png" alt="Angel" title="Angel" class="smilie smilie_10" />  .<br />
Cuando se quedaba "atascada" la IA, abría una nueva conversación y subía de nuevo los archivos. Inicialmente el proyecto era un único archivo, pero luego lo tuvo que dividirlo para facilitar los cambios y que no se "colgara".<br />
<br />
Gmao-factoy:<br />
Es un sistema de gestión de mantenimiento, para llevar el mantenimiento de equipos/maquinaria/edificios.<br />
La idea era tener una aplicación que trabajar "offline" (sin internet) para aquellos sitios donde el internet no llega o están aislados, y necesitan llevar el registro de inventario de equipo, mantenimiento preventivo, ordenes de trabajo, y correctivos/incidencias realizados.<br />
<br />
En github lo podeis ver en:<br />
<a href="https://github.com/jsbsan/GMAO-FACTORY" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY</a><br />
<br />
Código fuente: <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/src" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/src</a><br />
Prompts para generarlo: <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt</a><br />
Documentación: <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/docs" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/docs</a><br />
Incluso la documentación (manual del programa, diagramas, etc) y el readme.md fue generada por la IA..... <br />
<br />
Saludos<br />
<br />
Julio<br />
<br />
Lista de reproducción de video tutoriales: <br />
<a href="https://www.youtube.com/playlist?list=PLY1AHIjJwXVHrTB8cBxum4e2S4C8eMwGQ" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/playlist?list=PL...2S4C8eMwGQ</a>]]></description>
			<content:encoded><![CDATA[Feliz año nuevo 2026!<br />
<br />
Buenas chicos, hace tiempo que no me pasaba por el foro y escribía en él. <img src="https://gambas-es.org/images/smilies/blush.png" alt="Blush" title="Blush" class="smilie smilie_12" /><br />
Durante estos años, casi no he programado con gambas, pero si con python y VBA de excel, bueno <img src="https://gambas-es.org/images/smilies/rolleyes.png" alt="Rolleyes" title="Rolleyes" class="smilie smilie_6" /> ... realmente he estado usando la IA de gemini para ir haciendo mis pequeñas herramientas del día a día.<br />
<br />
Os presento  mi último proyecto, hecho durante estas vacaciones de navidad, y en un tiempo record,  sin prácticamente escribir ni una sola línea de código (en python ), eso si, através de gemini-canvas (versión profesional) y todo usando prompt (muchos), para crear el programa desde cero e ir ampliándolo. <br />
Fue un proceso muy fue iterativo: <br />
- escribir un prompt con lo que quería hacer o añadir.<br />
- ejecutar <br />
- apuntar los errores <br />
- prompt describiendo el error a gemini (he usado el editor visual studio code)<br />
- hacer las correcciones que decía gemini (normalmente generaba el archivo ya corregido)<br />
- volver a ejecutar.<br />
<br />
He documentado casi el 100% de los prompts que escribía ( <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt</a> ). Las respuestas que me daba la IA, no las he apuntado. <img src="https://gambas-es.org/images/smilies/angel.png" alt="Angel" title="Angel" class="smilie smilie_10" />  .<br />
Cuando se quedaba "atascada" la IA, abría una nueva conversación y subía de nuevo los archivos. Inicialmente el proyecto era un único archivo, pero luego lo tuvo que dividirlo para facilitar los cambios y que no se "colgara".<br />
<br />
Gmao-factoy:<br />
Es un sistema de gestión de mantenimiento, para llevar el mantenimiento de equipos/maquinaria/edificios.<br />
La idea era tener una aplicación que trabajar "offline" (sin internet) para aquellos sitios donde el internet no llega o están aislados, y necesitan llevar el registro de inventario de equipo, mantenimiento preventivo, ordenes de trabajo, y correctivos/incidencias realizados.<br />
<br />
En github lo podeis ver en:<br />
<a href="https://github.com/jsbsan/GMAO-FACTORY" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY</a><br />
<br />
Código fuente: <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/src" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/src</a><br />
Prompts para generarlo: <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/Prompt</a><br />
Documentación: <a href="https://github.com/jsbsan/GMAO-FACTORY/tree/main/docs" target="_blank" rel="noopener" class="mycode_url">https://github.com/jsbsan/GMAO-FACTORY/tree/main/docs</a><br />
Incluso la documentación (manual del programa, diagramas, etc) y el readme.md fue generada por la IA..... <br />
<br />
Saludos<br />
<br />
Julio<br />
<br />
Lista de reproducción de video tutoriales: <br />
<a href="https://www.youtube.com/playlist?list=PLY1AHIjJwXVHrTB8cBxum4e2S4C8eMwGQ" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/playlist?list=PL...2S4C8eMwGQ</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Parámetro de clase y parámetro de función con el mismo nombre.]]></title>
			<link>https://gambas-es.org/thread-2006.html</link>
			<pubDate>Sat, 24 Jan 2026 12:30:09 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=10">guizans</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2006.html</guid>
			<description><![CDATA[Hola a todos.<br />
<br />
En otros lenguajes, como en Java, existe la palabra clave "this" para diferenciar una variable de clase a una variable de método con el mismo nombre. ¿En Gambas hay algo por el estilo?<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>Private valor as Integer<br />
<br />
Public Sub Main()<br />
<br />
metodo1(34)<br />
<br />
End<br />
<br />
Private metodo1(valor as integer)<br />
<br />
valor = valor<br />
<br />
End</code></div></div><br />
Lo que hago en este caso es lo lógico, llamar las variables de distinta forma, o añadir el símbolo dólar al principio de la variable de clase. ¿Se puede hacer igual que en Java, por ejemplo?<br />
<br />
Un saludo.]]></description>
			<content:encoded><![CDATA[Hola a todos.<br />
<br />
En otros lenguajes, como en Java, existe la palabra clave "this" para diferenciar una variable de clase a una variable de método con el mismo nombre. ¿En Gambas hay algo por el estilo?<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>Private valor as Integer<br />
<br />
Public Sub Main()<br />
<br />
metodo1(34)<br />
<br />
End<br />
<br />
Private metodo1(valor as integer)<br />
<br />
valor = valor<br />
<br />
End</code></div></div><br />
Lo que hago en este caso es lo lógico, llamar las variables de distinta forma, o añadir el símbolo dólar al principio de la variable de clase. ¿Se puede hacer igual que en Java, por ejemplo?<br />
<br />
Un saludo.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SqetchDB, un proyecto re-hecho con ayuda de la IA]]></title>
			<link>https://gambas-es.org/thread-2005.html</link>
			<pubDate>Mon, 19 Jan 2026 09:39:00 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=4">Shordi</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2005.html</guid>
			<description><![CDATA[No sé dónde colocar este hilo, así que lo pongo en General.<br />
El tema es que estoy rehaciendo el proyecto SQetchLite que presenté hace tiempo (y que "se me hizo bola"), con el nombre de SQetchDB, que <a href="https://gitlab.com/shordi/sqetchdb" target="_blank" rel="noopener" class="mycode_url">podéis encontrar en gitlab</a>, y ayuda de la IA. Quiero ir colocando aquí, cuando me acuerde y anime, las distintas impresiones de esto de currar con la IA, práctica esa que probé y abandoné allá cuando el ChatGPT estaba por su versión 3, creo, y que he retomado con la versión 5.2... y las cosas han mejorado.<br />
<br />
El truco está en no dejar que el código lo haga la IA, que de gambas sabe poco y de tus intenciones casi nada, pero consultarle todos los temas de diseño y estructura, que en eso sabe mucho más que tú... bueno, al menos mucho más que yo.<br />
<br />
Esta forma de trabajo me está resultando muy buena y por eso la comparto. <br />
<br />
1) Te planteas una cuestión y le preguntas qué opina. ¡Ojo! que en principio siempre te va a dar la razón y hay que aprender a leer entre líneas. En otras IAS hablan de "Copiloto" yo prefiero pensar el el ChatGPT como un viejo mayordomo, que sabe de protocolos y cuestiones de la casa mucho más que el dueño, pero que sigue unas estrictas normas de protocolo jerárquico que le impide contradecir o discutir con su señor. Siempre le da razón y luego hace veladas sugerencias. Si el señor es listo y sabe lo que le conviene acabará haciéndole caso.<br />
<br />
2) Luego le preguntas los por qués de sus respuestas y ahí es donde tú empiezas a aprender cosas y a replantearte esa cuestión.<br />
<br />
3) Escribes el código que enfrenta dicha cuestión. Opcional subirlo y pedir consejo, yo casi nunca lo hago porque (aquí pongo cara de chulo) aquí he visto que yo sé más que ella, pero a veces, si mi propio código no me llega a convencer, si que se lo paso y leo con detalle sus consejos.<br />
<br />
El punto importante es, para mí, el 2. Le pides que explique el contexto de sus respuestas y te vas encontrando con cosas de diseño de software, de estructuras de datos y de cómo solucionan ese mismo problema otros programas que te enseñan un montón. <br />
Con SquetchDB, tengo la sensación de estar haciendo un código de mucha más calidad y solidez que antes.<br />
<br />
He empezado con la bestia negra del diseño de software, lo que todo programador odia y evita, la causa del fracaso de muchos proyectos, el demonio malvado de las ayudas. Le pedido un pequeño boceto de lo que sería la presentación del proyecto y me ha dado ésto:<br />
(No sé cómo va quedar el copia-pega, pero el original mola)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">SquetchDB</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Diseño visual y estructural de bases de datos SQLite</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">¿Qué es SquetchDB?</span><br />
<br />
    SquetchDB es una herramienta de diseño y documentación de bases de datos orientada específicamente a SQLite.Su objetivo principal es permitir la creación, análisis y mantenimientode estructuras de base de datos de forma visual, coherente y controlada,sin perder nunca el contacto con el modelo SQL real.<br />
A diferencia de editores puramente gráficos o de entornos SQL clásicos,SquetchDB combina ambos enfoques:la representación estructural y la definición técnica precisa.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Filosofía del proyecto</span><br />
<br />
    El diseño de SquetchDB parte de varios principios claros:<br />
      - La base de datos es el núcleo del proyecto, no un subproducto.<br />
      - El modelo debe ser comprensible sin renunciar a la precisión.<br />
      - El SQL generado debe ser legible, predecible y controlable.<br />
      - Las decisiones de diseño deben quedar documentadas.<br />
      - SquetchDB no pretende ocultar SQLite, sino hacerlo visible y comprensible.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Capacidades principales</span><br />
<br />
        -Diseño visual de tablas, campos, índices y claves externas.<br />
        -Edición detallada de propiedades SQL específicas de SQLite.<br />
        -Vista gráfica de relaciones entre tablas.<br />
        -Generación y revisión del código SQL asociado.<br />
        -Documentación integrada mediante ayudas contextuales.<br />
<br />
    El sistema está pensado para acompañar todo el ciclo de vida del diseño de una base de datos, desde una idea inicial hasta un esquema estable y documentado.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Cómo usar esta ayuda</span><br />
<br />
    El panel de la izquierda muestra los distintos temas de ayuda disponibles. Cada sección explica una parte concreta del programa,su finalidad y las decisiones de diseño asociadas.<br />
<br />
Se recomienda recorrer las ayudas de forma progresiva,especialmente si es la primera vez que se utiliza SquetchDB.<br />
<br />
Si hasta parece que he contratado un asesor de los de Pedro Sánchez para que me de bombo...  <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" /> <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />  <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" /><br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[No sé dónde colocar este hilo, así que lo pongo en General.<br />
El tema es que estoy rehaciendo el proyecto SQetchLite que presenté hace tiempo (y que "se me hizo bola"), con el nombre de SQetchDB, que <a href="https://gitlab.com/shordi/sqetchdb" target="_blank" rel="noopener" class="mycode_url">podéis encontrar en gitlab</a>, y ayuda de la IA. Quiero ir colocando aquí, cuando me acuerde y anime, las distintas impresiones de esto de currar con la IA, práctica esa que probé y abandoné allá cuando el ChatGPT estaba por su versión 3, creo, y que he retomado con la versión 5.2... y las cosas han mejorado.<br />
<br />
El truco está en no dejar que el código lo haga la IA, que de gambas sabe poco y de tus intenciones casi nada, pero consultarle todos los temas de diseño y estructura, que en eso sabe mucho más que tú... bueno, al menos mucho más que yo.<br />
<br />
Esta forma de trabajo me está resultando muy buena y por eso la comparto. <br />
<br />
1) Te planteas una cuestión y le preguntas qué opina. ¡Ojo! que en principio siempre te va a dar la razón y hay que aprender a leer entre líneas. En otras IAS hablan de "Copiloto" yo prefiero pensar el el ChatGPT como un viejo mayordomo, que sabe de protocolos y cuestiones de la casa mucho más que el dueño, pero que sigue unas estrictas normas de protocolo jerárquico que le impide contradecir o discutir con su señor. Siempre le da razón y luego hace veladas sugerencias. Si el señor es listo y sabe lo que le conviene acabará haciéndole caso.<br />
<br />
2) Luego le preguntas los por qués de sus respuestas y ahí es donde tú empiezas a aprender cosas y a replantearte esa cuestión.<br />
<br />
3) Escribes el código que enfrenta dicha cuestión. Opcional subirlo y pedir consejo, yo casi nunca lo hago porque (aquí pongo cara de chulo) aquí he visto que yo sé más que ella, pero a veces, si mi propio código no me llega a convencer, si que se lo paso y leo con detalle sus consejos.<br />
<br />
El punto importante es, para mí, el 2. Le pides que explique el contexto de sus respuestas y te vas encontrando con cosas de diseño de software, de estructuras de datos y de cómo solucionan ese mismo problema otros programas que te enseñan un montón. <br />
Con SquetchDB, tengo la sensación de estar haciendo un código de mucha más calidad y solidez que antes.<br />
<br />
He empezado con la bestia negra del diseño de software, lo que todo programador odia y evita, la causa del fracaso de muchos proyectos, el demonio malvado de las ayudas. Le pedido un pequeño boceto de lo que sería la presentación del proyecto y me ha dado ésto:<br />
(No sé cómo va quedar el copia-pega, pero el original mola)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">SquetchDB</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Diseño visual y estructural de bases de datos SQLite</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">¿Qué es SquetchDB?</span><br />
<br />
    SquetchDB es una herramienta de diseño y documentación de bases de datos orientada específicamente a SQLite.Su objetivo principal es permitir la creación, análisis y mantenimientode estructuras de base de datos de forma visual, coherente y controlada,sin perder nunca el contacto con el modelo SQL real.<br />
A diferencia de editores puramente gráficos o de entornos SQL clásicos,SquetchDB combina ambos enfoques:la representación estructural y la definición técnica precisa.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Filosofía del proyecto</span><br />
<br />
    El diseño de SquetchDB parte de varios principios claros:<br />
      - La base de datos es el núcleo del proyecto, no un subproducto.<br />
      - El modelo debe ser comprensible sin renunciar a la precisión.<br />
      - El SQL generado debe ser legible, predecible y controlable.<br />
      - Las decisiones de diseño deben quedar documentadas.<br />
      - SquetchDB no pretende ocultar SQLite, sino hacerlo visible y comprensible.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Capacidades principales</span><br />
<br />
        -Diseño visual de tablas, campos, índices y claves externas.<br />
        -Edición detallada de propiedades SQL específicas de SQLite.<br />
        -Vista gráfica de relaciones entre tablas.<br />
        -Generación y revisión del código SQL asociado.<br />
        -Documentación integrada mediante ayudas contextuales.<br />
<br />
    El sistema está pensado para acompañar todo el ciclo de vida del diseño de una base de datos, desde una idea inicial hasta un esquema estable y documentado.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Cómo usar esta ayuda</span><br />
<br />
    El panel de la izquierda muestra los distintos temas de ayuda disponibles. Cada sección explica una parte concreta del programa,su finalidad y las decisiones de diseño asociadas.<br />
<br />
Se recomienda recorrer las ayudas de forma progresiva,especialmente si es la primera vez que se utiliza SquetchDB.<br />
<br />
Si hasta parece que he contratado un asesor de los de Pedro Sánchez para que me de bombo...  <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" /> <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />  <img src="https://gambas-es.org/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" /><br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Soporte para pasar Arrays en Connection.Subst() con filtros dinámicos]]></title>
			<link>https://gambas-es.org/thread-2004.html</link>
			<pubDate>Mon, 19 Jan 2026 02:23:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=25">omoreno</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2004.html</guid>
			<description><![CDATA[Hola,<br />
En Gambas3 la función <span style="font-weight: bold;" class="mycode_b">Connection.Subst()</span>  puede aceptar parámetros sueltos mediante (...) <br />
Esto funciona bien cuando la cantidad de parámetros es fija, pero se vuelve muy engorroso cuando se construyen consultas con <span style="font-weight: bold;" class="mycode_b">WHERE dinámicos</span>.<br />
En mi caso, los filtros se asignan en tiempo de ejecución a un vector, por ejemplo:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>FiltroX.Add(codigo)<br />
FiltroX.Add(fecha1)<br />
FiltroX.Add(fecha2)<br />
…<br />
ResultX = Conn.Exec(DB.Subst(SqlX, FiltroX))  '&lt;--- actualmente no se puede</code></div></div><br />
Si enviamos el <span style="font-weight: bold;" class="mycode_b">vector</span> simplificaría mucho el código y evitaría tener que usar <span style="font-weight: bold;" class="mycode_b">Select Case</span> para cada cantidad de parámetros que hay que enviar al Exec u otros comandos SQL, como en el ejemplo actual:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>  Select Case FiltrosX.Length<br />
    Case 0<br />
      resulado = Conn.Exec(DB.Subst(SqlX))<br />
    Case 1<br />
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0]))<br />
    Case 2<br />
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1]))<br />
    Case 3<br />
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1],FiltroX[2]))<br />
  End Select</code></div></div><br />
Lo ideal es poder enviar directamente un <span style="font-weight: bold;" class="mycode_b">array</span> a <span style="font-weight: bold;" class="mycode_b">DB.Subst</span>.<br />
<br />
He adjuntado un programa para que tengan una mejor idea de lo que busco.<br />
<br />
He publicado una solicitud en el BugTracker aver si lo adaptan.<br />
<br />
Gracias por sus posibles sugerencias.<br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/zip.png" title="ZIP File" style="height: 16px; width: 16px" border="0" alt=".zip" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=585" target="_blank" title="">WhereDinamico.zip</a> (Tamaño: <span class="text-dark">11.14 KB</span> Descargas: <span class="text-dark">1)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hola,<br />
En Gambas3 la función <span style="font-weight: bold;" class="mycode_b">Connection.Subst()</span>  puede aceptar parámetros sueltos mediante (...) <br />
Esto funciona bien cuando la cantidad de parámetros es fija, pero se vuelve muy engorroso cuando se construyen consultas con <span style="font-weight: bold;" class="mycode_b">WHERE dinámicos</span>.<br />
En mi caso, los filtros se asignan en tiempo de ejecución a un vector, por ejemplo:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>FiltroX.Add(codigo)<br />
FiltroX.Add(fecha1)<br />
FiltroX.Add(fecha2)<br />
…<br />
ResultX = Conn.Exec(DB.Subst(SqlX, FiltroX))  '&lt;--- actualmente no se puede</code></div></div><br />
Si enviamos el <span style="font-weight: bold;" class="mycode_b">vector</span> simplificaría mucho el código y evitaría tener que usar <span style="font-weight: bold;" class="mycode_b">Select Case</span> para cada cantidad de parámetros que hay que enviar al Exec u otros comandos SQL, como en el ejemplo actual:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>  Select Case FiltrosX.Length<br />
    Case 0<br />
      resulado = Conn.Exec(DB.Subst(SqlX))<br />
    Case 1<br />
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0]))<br />
    Case 2<br />
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1]))<br />
    Case 3<br />
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1],FiltroX[2]))<br />
  End Select</code></div></div><br />
Lo ideal es poder enviar directamente un <span style="font-weight: bold;" class="mycode_b">array</span> a <span style="font-weight: bold;" class="mycode_b">DB.Subst</span>.<br />
<br />
He adjuntado un programa para que tengan una mejor idea de lo que busco.<br />
<br />
He publicado una solicitud en el BugTracker aver si lo adaptan.<br />
<br />
Gracias por sus posibles sugerencias.<br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/zip.png" title="ZIP File" style="height: 16px; width: 16px" border="0" alt=".zip" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=585" target="_blank" title="">WhereDinamico.zip</a> (Tamaño: <span class="text-dark">11.14 KB</span> Descargas: <span class="text-dark">1)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Hacer facturas]]></title>
			<link>https://gambas-es.org/thread-2003.html</link>
			<pubDate>Tue, 30 Dec 2025 12:36:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=190">Alberto59</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2003.html</guid>
			<description><![CDATA[Lo prometido...os paso el programa de generar facturas......<br />
<br />
Podeis ver las dos formas de imprimir en html y reporte.<br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/tar.png" title="GZIP Compressed File" style="height: 16px; width: 16px" border="0" alt=".gz" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=581" target="_blank" title="">Genfactura-1.1.34.tar.gz</a> (Tamaño: <span class="text-dark">477.8 KB</span> Descargas: <span class="text-dark">4)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Lo prometido...os paso el programa de generar facturas......<br />
<br />
Podeis ver las dos formas de imprimir en html y reporte.<br /><!-- start: postbit_attachments_attachment -->
<div class="row mt-2 g-1 text-muted">
	<div class="col-auto align-self-center">

<!-- start: attachment_icon -->
<img src="https://gambas-es.org/images/attachtypes/tar.png" title="GZIP Compressed File" style="height: 16px; width: 16px" border="0" alt=".gz" />
<!-- end: attachment_icon -->
		
	</div>
	<div class="col align-self-center">
		<a href="attachment.php?aid=581" target="_blank" title="">Genfactura-1.1.34.tar.gz</a> (Tamaño: <span class="text-dark">477.8 KB</span> Descargas: <span class="text-dark">4)</span>
	</div>
</div>
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Feliz Navidad a todos los gamberos del mundo mundial]]></title>
			<link>https://gambas-es.org/thread-2002.html</link>
			<pubDate>Wed, 24 Dec 2025 13:57:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=4">Shordi</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2002.html</guid>
			<description><![CDATA[Cenad gambas está noche, que de lo que se come se cría y no bebais demasiado, que las líneas de código salen torcidas luego.]]></description>
			<content:encoded><![CDATA[Cenad gambas está noche, que de lo que se come se cría y no bebais demasiado, que las líneas de código salen torcidas luego.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problemas con las interrupciones del código.]]></title>
			<link>https://gambas-es.org/thread-2001.html</link>
			<pubDate>Tue, 09 Dec 2025 10:26:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=4">Shordi</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2001.html</guid>
			<description><![CDATA[De toda la vida un F9 hace que la ejecución del código se detenga en el punto indicado, pero desde hace algún tiempo sólo lo hace si el famoso punto está en el formulario principal. Tengo una estructura que fMain contiene un workSpace. Hay una función que crea un formulario y lo añade al workspace. En este formulario añadido existen paradas en el código que son ignoradas olímpicamente y me obliga a depurar vía F8 sin parar, lo que es un peñazo total.<br />
¿Alguien sabe qué pasa?¿No le ocurre a nadie más?<br />
<br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[De toda la vida un F9 hace que la ejecución del código se detenga en el punto indicado, pero desde hace algún tiempo sólo lo hace si el famoso punto está en el formulario principal. Tengo una estructura que fMain contiene un workSpace. Hay una función que crea un formulario y lo añade al workspace. En este formulario añadido existen paradas en el código que son ignoradas olímpicamente y me obliga a depurar vía F8 sin parar, lo que es un peñazo total.<br />
¿Alguien sabe qué pasa?¿No le ocurre a nadie más?<br />
<br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Scrolling un ScrollArea]]></title>
			<link>https://gambas-es.org/thread-2000.html</link>
			<pubDate>Mon, 08 Dec 2025 17:29:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=4">Shordi</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-2000.html</guid>
			<description><![CDATA[Estoy en estos días rehaciendo mi abandonado proyecto del editor gráfico de bases de datos sqlite. Todo va progresando pero me he atascado con una tontería estética: Si el diseño de la BD es complejo y pinchas y arrastras y sueltas (drag &amp; drop( el objeto fuera del área visible del ScrollArea, ésta amplía su tamaño y te muestra las barras de desplazamiento, pero no consigo que se haga un Scroll dinámico, es decir, que si pincho y arrastro hacia la derecha, digamos, un objeto el scrollArea haga Scroll hacia la derecha siguiendo al que llevo pinchado y desplace hacia la izquierda la vista como si lo hiciésemos con la barra de desplazamiento.<br />
¿Alguien tiene algo hecho en éste sentido? No subo ejemplo porque es muy complejo el tema tal como lo tengo diseñado ahora. Os adjunto la imagen del aspecto del programa. Imaginad que pincháis uno de los cuadros y lo desplazáis a la derecha... pues eso.<br />
<br />
<a href="https://i.imgur.com/3FjnLNr.png" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/3FjnLNrl.png" loading="lazy"  alt="[Imagen: 3FjnLNrl.png]" class="mycode_img" /></a><br />
<br />
Saludos.]]></description>
			<content:encoded><![CDATA[Estoy en estos días rehaciendo mi abandonado proyecto del editor gráfico de bases de datos sqlite. Todo va progresando pero me he atascado con una tontería estética: Si el diseño de la BD es complejo y pinchas y arrastras y sueltas (drag &amp; drop( el objeto fuera del área visible del ScrollArea, ésta amplía su tamaño y te muestra las barras de desplazamiento, pero no consigo que se haga un Scroll dinámico, es decir, que si pincho y arrastro hacia la derecha, digamos, un objeto el scrollArea haga Scroll hacia la derecha siguiendo al que llevo pinchado y desplace hacia la izquierda la vista como si lo hiciésemos con la barra de desplazamiento.<br />
¿Alguien tiene algo hecho en éste sentido? No subo ejemplo porque es muy complejo el tema tal como lo tengo diseñado ahora. Os adjunto la imagen del aspecto del programa. Imaginad que pincháis uno de los cuadros y lo desplazáis a la derecha... pues eso.<br />
<br />
<a href="https://i.imgur.com/3FjnLNr.png" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/3FjnLNrl.png" loading="lazy"  alt="[Imagen: 3FjnLNrl.png]" class="mycode_img" /></a><br />
<br />
Saludos.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Resultados dispares según el lenguaje [SOLUCIONADO]]]></title>
			<link>https://gambas-es.org/thread-1999.html</link>
			<pubDate>Sun, 30 Nov 2025 17:35:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://gambas-es.org/member.php?action=profile&uid=10">guizans</a>]]></dc:creator>
			<guid isPermaLink="false">https://gambas-es.org/thread-1999.html</guid>
			<description><![CDATA[En el proyecto que estoy haciendo, los resultado mostrados no me cuadran con los almacenados en la base de datos de SQLite3, así que he hecho pruebas y el resultado es cuanto menos que desconcertante. <br />
<br />
Aquí el código en Gambas:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>Public Sub Main()<br />
  <br />
  Dim conexion As Connection<br />
  Dim resultado As Result<br />
  <br />
  conexion = New Connection<br />
  conexion.Host = File.Dir("/home/mi/.local/share/lineas/")<br />
  conexion.Name = File.Name("lineas.db")<br />
  conexion.Type = "sqlite3"<br />
  <br />
  conexion.Open()<br />
    <br />
  resultado = conexion.Exec("SELECT intervalo, porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions WHERE idLinea=2 AND Estacions.ID=idEstacions")<br />
  resultado.MoveFirst<br />
  <br />
  While resultado.Available<br />
    Print resultado["intervalo"]<br />
    Print resultado["porcentajeCarga"]<br />
    resultado.MoveNext<br />
  Wend<br />
  <br />
End</code></div></div><br />
Y el resultado de esta consulta sencilla es el siguiente:<br />
<blockquote class="mycode_quote"><cite>Cita:</cite>0 %<br />
-228735570<br />
0 %<br />
1<br />
0 %<br />
1<br />
0 %<br />
1</blockquote>
<br />
El número negativo que aparece no se de donde sale, y cambia en cada ejecución.<br />
Ahora en Python usando la misma base de datos y la misma consulta:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import sqlite3<br />
<br />
bd = sqlite3.connect("lineas.db")<br />
cursor = bd.cursor()<br />
<br />
sentencia = "SELECT intervalo, porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions WHERE idLinea=2 AND Estacions.ID=idEstacions"<br />
cursor.execute(sentencia)<br />
<br />
a = cursor.fetchall()<br />
<br />
for intervalo,porcentajeCarga in a:<br />
  print(intervalo)<br />
  print(porcentajeCarga)</code></div></div> El cual arroja lo siguiente:<br />
<blockquote class="mycode_quote"><cite>Cita:</cite>0 %<br />
00:00:00<br />
0 %<br />
00:00:00<br />
0 %<br />
00:00:00<br />
0 %<br />
00:00:0</blockquote>
<br />
Lo cual corresponde con lo almacenado en la base de datos. <br />
Y usando el programa DB Browser usando la misma consulta de la misma tabla el resultado es el mismo que en Python.<br />
En la tabla, intervalo es de tipo <span style="text-decoration: line-through;" class="mycode_s">INTEGER</span>  TEXT y porcentajeCarga es de tipo TEXT. Estoy usando Gambas 3.20.2 en Debian.<br />
<br />
¿Será un bug de esta versión? Es que es increíble.<br />
<br />
Un saludo.]]></description>
			<content:encoded><![CDATA[En el proyecto que estoy haciendo, los resultado mostrados no me cuadran con los almacenados en la base de datos de SQLite3, así que he hecho pruebas y el resultado es cuanto menos que desconcertante. <br />
<br />
Aquí el código en Gambas:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>Public Sub Main()<br />
  <br />
  Dim conexion As Connection<br />
  Dim resultado As Result<br />
  <br />
  conexion = New Connection<br />
  conexion.Host = File.Dir("/home/mi/.local/share/lineas/")<br />
  conexion.Name = File.Name("lineas.db")<br />
  conexion.Type = "sqlite3"<br />
  <br />
  conexion.Open()<br />
    <br />
  resultado = conexion.Exec("SELECT intervalo, porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions WHERE idLinea=2 AND Estacions.ID=idEstacions")<br />
  resultado.MoveFirst<br />
  <br />
  While resultado.Available<br />
    Print resultado["intervalo"]<br />
    Print resultado["porcentajeCarga"]<br />
    resultado.MoveNext<br />
  Wend<br />
  <br />
End</code></div></div><br />
Y el resultado de esta consulta sencilla es el siguiente:<br />
<blockquote class="mycode_quote"><cite>Cita:</cite>0 %<br />
-228735570<br />
0 %<br />
1<br />
0 %<br />
1<br />
0 %<br />
1</blockquote>
<br />
El número negativo que aparece no se de donde sale, y cambia en cada ejecución.<br />
Ahora en Python usando la misma base de datos y la misma consulta:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import sqlite3<br />
<br />
bd = sqlite3.connect("lineas.db")<br />
cursor = bd.cursor()<br />
<br />
sentencia = "SELECT intervalo, porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions WHERE idLinea=2 AND Estacions.ID=idEstacions"<br />
cursor.execute(sentencia)<br />
<br />
a = cursor.fetchall()<br />
<br />
for intervalo,porcentajeCarga in a:<br />
  print(intervalo)<br />
  print(porcentajeCarga)</code></div></div> El cual arroja lo siguiente:<br />
<blockquote class="mycode_quote"><cite>Cita:</cite>0 %<br />
00:00:00<br />
0 %<br />
00:00:00<br />
0 %<br />
00:00:00<br />
0 %<br />
00:00:0</blockquote>
<br />
Lo cual corresponde con lo almacenado en la base de datos. <br />
Y usando el programa DB Browser usando la misma consulta de la misma tabla el resultado es el mismo que en Python.<br />
En la tabla, intervalo es de tipo <span style="text-decoration: line-through;" class="mycode_s">INTEGER</span>  TEXT y porcentajeCarga es de tipo TEXT. Estoy usando Gambas 3.20.2 en Debian.<br />
<br />
¿Será un bug de esta versión? Es que es increíble.<br />
<br />
Un saludo.]]></content:encoded>
		</item>
	</channel>
</rss>