Shordi 24-05-2024, 19:50
Si recordáis, hace unos días os comenté que había empezado a hacer un editor gráfico para sqlite. La idea era manejar en una pantalla más o menos como ésta:
[Imagen: K0rRjQa.png]
Hacer que las líneas, que representan las relaciones Foreign Key entre las tablas se muevan y sigan a la tabla según las mueves. Que si haces drag and drop entre dos campos de dos tablas se establezca la relación de foreign key y que pulsando botón derecho sobre los cuadraditos verdes puedas cambiar el tipo de acción de la foreign key o eliminarla, etc.
Que con doble click sobre la tabla se abre un formulario de edición donde puedes añadir, borrar o cambiar cualquier campo, etc.

Todo muy bonito. Lo mejor que ya lo tengo hecho y funciona... más o menos. Pero hasta ahora lo he probado con pequeñas bases de prueba hechas por mí. Esta tarde se me ha ocurrido hacer la prueba con la base de datos que incorpra Calibre en sus bibliotecas y que contiene tropecientas tablas... sin ninguna Foreign Key. Funciona a la manera antigua (y compatible con todas las versiones de sqlite por antiguas que sean) a base de Triggers y demás posibilidades. Crea tablas virtuales y tablas reales con campos virtuales, usa tablas sin rowid y con rowid y en total dispone de 47 tablas, 74 índices, 59 Triggers y 17 Vistas.
¿Cómo representas eso de forma gráfica?. La pantalla se convierte en un galimatías de cuadraditos sin orden ni concierto que en lugar de ayudar lo que hacen es estorbar.
Entonces se me ha ocurrido una idea ¿Por qué no se va a poder hacer con cada uno de los tipos lo mismo que se hace con las tablas?. Una vista se puede tratar como una tabla (menos en lo que a la edición se refiere), y un Trigger se puede tratar (más o menos) como una relación Foreign key.
Hacemos algún tipo de panel o algo así y podemos dibujar rayitas en los trigger que vayan a las tablas que intervienen en su código interior.
y podemos asignar un colorín a cada tipo de línea y a cada tipo de objeto, y si hay demasiados subividir en pantallas y vistas generales y si...
y de repente ves que tienes curro para meses, años quizá.
Me estoy planteando si dejar mi programa en un mero visor gráfico de foreign keys... pero me parece algo triste y pobre hacer eso.
Ahora lo estoy contando después de todo el día tecleando y como que no estoy muy optimista.
Mañana será otro día.



Saludos
Shordi 20-05-2024, 16:58
Me he venido arriba con eso del Chatgpt 4o y ayer se me ocurrió que en lugar de hacerle consultas puntuales de código y problemas concretos, en los que ha sido hasta ahora muy útil dando ideas... que el código deja bastante que desear, podría intentar que me hiciese todo el código de un formulario bastante complicado que me tocaba hacer. Dicho y hecho, me conecté al dichoso 4o y le empecé a pedir código. Todo parecía guay, realmente las ideas que aporta no son malas... pero el código... creo que gambas3 no está muy alto en su lista de prioridades o como coño funcione por dentro. Me pone cosas de pitón, hace cosas que no son de gambas, como definir variables con Dim dentro de bucles, etc. etc.
Además, aunque los problemas que le pides sí atina más o menos a enfocar las soluciones, es incapaz de preveer situaciones reales que provocaría la implementación de su código con lo que la mayoría de las veces no sirve para casi nada.

Después de dos días, el dichoso formulario sigue sin funcionar y creo que paso de ia y me voy a poner a teclear yo...

Ea. Lo bueno es cómo te sube el ego la cabrona. Cada sugerencia que le hago es una magnífica idea, según ella.

Big Grin Big Grin Big Grin
alberto-moyano 19-05-2024, 19:49
Hola gente, tengo la siguiente situación y me supera en conocimientos.

En un formulario tengo 109 textbox en diferentes pestañas de un tabpanel, todos están vinculados, quiero decir son los diferentes datos de --en este caso-- referencias bibliográficas, no se usan todos sino que se llenan según el tipo de referencia.

El tema es que al crear una nueva entrada se hace necesario borrar la info contenida en los textbox (repito la info se corresponde con el tipo de entrada bibliográfica), los procesos de guardar, modificar y borrar (el registro) son muy rápidos, pero generar una nueva entrada es una tortura el tiempo que hay que esperar, entiendo que esto se debe a que la función recorre uno a uno los textbox para dejarlo vacio, ¿existe método de acelerar esto?

Coloco una parte del código que limpia los textbox, es de manual

Código:
Public Function LimpiarCamposBIB()

' Limpiamos los campos
  txtID.Text = ""
  txtETIQ.Text = ""
  txtKEYWORDS.Text = ""
  txtCROSSREF.Text = ""
  txtCLAVEbib.Text = ""
  txtTITLE.Text = ""
  txtRELATED.Text = ""
' y sigue la lista

Esta es la función que llamo para hacer una nueva entrada

Código:
Public Sub BtnNuevoBib_Click()

  BtnNuevoBib.Visible = False
  BtnEliminarBib.Visible = False
  BtnRefrescarBib.Visible = False
  btnGuardar.Visible = True
  btnGuardarCambios.visible = False
  btnAgregarCitationKey.Enabled = True
  ToolPanel1.Index = 0

  Dim Idn As Integer

  LimpiarCamposBIB() ' Limpiamos los campos

  txtTMPbiblio.Clear 'limpiamos en textarea temporal
  txtTMPbiblio.SetFocus() 'hacemos foco en el textarea para pegar el texto de la referencia a construir

  ' Obtenemos el último ID y sumamos +1 para el nuevo registro
  Contenido = Conn.Exec("SELECT MAX(id) FROM bibtex LIMIT 1")

  ' Si no hay ninguna entrada entonces arrancamos desde 0
  If Contenido["MAX(id)"] = Null Then
    Idn = 0
  Else
    Idn = CInt(Contenido["MAX(id)"]) + 1
  Endif
  txtID.Text = Idn
  txtCLAVEbib.Text = "@" & Idn & "-" 'colocamos el prefijo de la clave bib
  txtKEYWORDS.Text = "," & BaseName & "," 'colocamos el key con el nombre del archivo
  Mostrar_ListaBIB()

End

Saludos y gracias de antemano

Alberto

Me respondo a mi mismo y para no cambiar el contenido de la pregunta original, hice otras pruebas y puedo confirmar que el problema está en la consulta a la base de datos, si bien el id tiene índice, sospecho que la base está mal diseñada.

Esto me pasa porque el programa se pensó con una idea y fue creciendo (y la base también) y ahora debo parar la pelota y hacer un rediseño completo.

Saludos

PD: como dice Shordi en uno de sus últimos videos «quiere a tu base de datos, mimala si es necesario».
Páginas (564):    1 85 86 87 88 89 564   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 292
Último miembro: DarkWolf
Temas del foro: 1,742
Mensajes del foro: 9,029
Últimos temas
Ordenar en un TableView
Foro: General
Último mensaje por: Shordi, 03-11-2025, 18:41
Respuestas: 3 - Vistas: 117
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 02-11-2025, 13:36
Respuestas: 9 - Vistas: 1,569
Reportes de Gambas
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: Alberto59, 27-10-2025, 16:34
Respuestas: 2 - Vistas: 1,335
Ordenando las carpetas
Foro: Programación en otros lenguajes
Último mensaje por: tercoide, 22-10-2025, 15:57
Respuestas: 0 - Vistas: 116
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.