Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Comportamiento No Deseado Con Tablas SQLite
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Comportamiento No Deseado Con Tablas SQLite 
 
Me he vuelto loco depurando un código bastante complejo que uso para modificar una serie de tablas porque al modificar una fila se modificaban todas las filas de la tabla.

Tras mirar y remirar y no ver ningún error en mi código (un día entero mirando y remirando    ) He emprezado a hacer un pequeño proyecto para enviarlo a la lista de gambas como Bug y al simplificar el código (que se había reducido a éso):

  Dim rLine As Result
    Dim clave As String
        
    clave = "Asturias"
    rLine = Connections["Connection1"].Edit("provincias2", "Provincia = &1", clave)
    rLine["Abreviado"] = "AAs"
    rLine["Codigo"] = "99"
    rLine.Update()


Se me ha ocurrido testear la estructura de la tabla y me he encontrado con que en algún momento (durante algún traspaso de datos desde CSV, supongo, que esa tabla proviene de otra base de datos MySQL) le había desaparecido la clave primaria que era, en su origen, el primer campo.
Restaurado el campo como Primary Key, todo vuelve a funcionar perfecto.

En otras palabras: Ojo con las actualizaciones en SQLite de las tablas sin clave primaria.  
Ahora comprendo por qué hay programas gestores de bases de datos que en el momento que detectan que no existe tal clave, declaran la tabla como "No Actualizable"...

Moraleja: Poned SIEMPRE clave primaria a todas vuestras tablas (y aseguraos de no perderla en los traspasos de una base a otra, claro)

No lo subo a la lista porque el comportamiento de gambas es correcto, él envía la sentencia sql correcta, es SQLite el que se comporta de manera tan peculiar.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comportamiento No Deseado Con Tablas SQLite 
 
Gracias por el apunte. Ahorrará muchos dolores de cabeza, pero por otra parte a bote pronto parece algo tan básico que no llegas a fijarte en ello porque lo das por hecho.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comportamiento No Deseado Con Tablas SQLite 
 
Shordi: ¿Usas una clave que no es un numero entero? Me parece una mala práctica.

Dim clave As String
clave = "Asturias"
 


Deberias usar algo así, me parece.
Dim clave As Integer
clave = 3
 


Por otra parte el otro día me paso algo parecido y se renombraron todas las celdas de una colunmna, justamente con SQLite, pero atribuí el erro a otra cosa, no pense que fuera un bug.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comportamiento No Deseado Con Tablas SQLite 
 
Citar:
Shordi: ¿Usas una clave que no es un numero entero? Me parece una mala práctica.


No. En la base de datos original (MySQL), la clave es el código de provincia, que es un campo de dos dígitos. Al pasarlo a SQLite vía CSV el índice de la clave se perdió y para el ejemplo simplificado que estaba preparando para la lista de correos puse el primer campo de la tabla que era el nombre.
Nunca se me ocurriría colocar un campo alfabético como clave primaria, que ya tuve inmensos problemas con eso en mis inicios de pardillo informático allá por los 90...   
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comportamiento No Deseado Con Tablas SQLite 
 
shordi escribió:  
Citar:
Shordi: ¿Usas una clave que no es un numero entero? Me parece una mala práctica.


No. En la base de datos original (MySQL), la clave es el código de provincia, que es un campo de dos dígitos. Al pasarlo a SQLite vía CSV el índice de la clave se perdió y para el ejemplo simplificado que estaba preparando para la lista de correos puse el primer campo de la tabla que era el nombre.
Nunca se me ocurriría colocar un campo alfabético como clave primaria, que ya tuve inmensos problemas con eso en mis inicios de pardillo informático allá por los 90...   


ni decirlo, después de meses en casa Cesante/Desempleado/"en paro", me llaman para meter los dedos en un proyecto que llevaba un año de trabajo y meses de atraso para dejarlo "estable"  antes de hacerlo nuevamente.
Bien, después de revisar superficialmente y comenzar a arreglar problemas me encuentro que varias tablas tenían llaves de tipo varchar.....         y lo peor es que las podías modificar desde los mantenedores...        
Cuento corto, llevo una semana y media trabajando desde cero para corregir esos tan lindos errores.....
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron