guizans 24-01-2026, 14:30
Hola a todos.

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?
Código:
Private valor as Integer

Public Sub Main()

metodo1(34)

End

Private metodo1(valor as integer)

valor = valor

End

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?

Un saludo.
Shordi 19-01-2026, 11:39
No sé dónde colocar este hilo, así que lo pongo en General.
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 podéis encontrar en gitlab, 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.

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.

Esta forma de trabajo me está resultando muy buena y por eso la comparto. 

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.

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.

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.

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. 
Con SquetchDB, tengo la sensación de estar haciendo un código de mucha más calidad y solidez que antes.

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:
(No sé cómo va quedar el copia-pega, pero el original mola)

SquetchDB

Diseño visual y estructural de bases de datos SQLite

¿Qué es SquetchDB?

    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.
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.

Filosofía del proyecto

    El diseño de SquetchDB parte de varios principios claros:
      - La base de datos es el núcleo del proyecto, no un subproducto.
      - El modelo debe ser comprensible sin renunciar a la precisión.
      - El SQL generado debe ser legible, predecible y controlable.
      - Las decisiones de diseño deben quedar documentadas.
      - SquetchDB no pretende ocultar SQLite, sino hacerlo visible y comprensible.

Capacidades principales

        -Diseño visual de tablas, campos, índices y claves externas.
        -Edición detallada de propiedades SQL específicas de SQLite.
        -Vista gráfica de relaciones entre tablas.
        -Generación y revisión del código SQL asociado.
        -Documentación integrada mediante ayudas contextuales.

    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.

Cómo usar esta ayuda

    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.

Se recomienda recorrer las ayudas de forma progresiva,especialmente si es la primera vez que se utiliza SquetchDB.

Si hasta parece que he contratado un asesor de los de Pedro Sánchez para que me de bombo...  Big Grin Big Grin  Big Grin

Saludos
omoreno 19-01-2026, 04:23
Hola,
En Gambas3 la función Connection.Subst()  puede aceptar parámetros sueltos mediante (...) 
Esto funciona bien cuando la cantidad de parámetros es fija, pero se vuelve muy engorroso cuando se construyen consultas con WHERE dinámicos.
En mi caso, los filtros se asignan en tiempo de ejecución a un vector, por ejemplo:

Código:
FiltroX.Add(codigo)
FiltroX.Add(fecha1)
FiltroX.Add(fecha2)

ResultX = Conn.Exec(DB.Subst(SqlX, FiltroX))  '<--- actualmente no se puede

Si enviamos el vector simplificaría mucho el código y evitaría tener que usar Select Case para cada cantidad de parámetros que hay que enviar al Exec u otros comandos SQL, como en el ejemplo actual:

Código:
  Select Case FiltrosX.Length
    Case 0
      resulado = Conn.Exec(DB.Subst(SqlX))
    Case 1
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0]))
    Case 2
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1]))
    Case 3
      resulado = Conn.Exec(DB.Subst(SqlX, FiltroX[0],FiltroX[1],FiltroX[2]))
  End Select

Lo ideal es poder enviar directamente un array a DB.Subst.

He adjuntado un programa para que tengan una mejor idea de lo que busco.

He publicado una solicitud en el BugTracker aver si lo adaptan.

Gracias por sus posibles sugerencias.
Archivos adjuntos
.zip
WhereDinamico.zip (Tamaño: 11.14 KB Descargas: 1)
Páginas (570):    1 2 3 4 5 570   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 300
Último miembro: Armando56
Temas del foro: 1,759
Mensajes del foro: 9,135
Últimos temas
Problema con creación de ...
Foro: Bases de Datos
Último mensaje por: Marcos, Hace 6 horas
Respuestas: 3 - Vistas: 101
Sobre la proteccion del c...
Foro: General
Último mensaje por: guizans, Hace 10 horas
Respuestas: 1 - Vistas: 45
Sobre LinuxMint
Foro: Mundo Linux
Último mensaje por: guizans, Ayer, 19:33
Respuestas: 0 - Vistas: 36
Un interprete de basic en...
Foro: HTML, CSS, Javascript
Último mensaje por: guizans, 03-02-2026, 23:34
Respuestas: 5 - Vistas: 425
El ratón no hace click do...
Foro: Instalación
Último mensaje por: guizans, 30-01-2026, 20:41
Respuestas: 2 - Vistas: 290
Powered By MyBB, © 2002-2026 MyBB Group.
Made with by Curves UI.