Sqlite Con Foreign Keys Fk


Subject: Sqlite Con Foreign Keys Fk
Hola.
¿Alguien tiene por allí una estructura de sqlite que use foreign keys con algunos datos de ejemplo?

Quiero hacer una pruebas para cargar comboxes siguiendo la referencia de una fk pero no logro hacer la base con sqliteman ni con sqlitebrowser

Gracias.

Profile PM  
Subject: Re: Sqlite Con Foreign Keys Fk
¿qué problemas encuentras? No tiene ninguna dificultad. Sube la base de datos y podemos comprobarlo.

Saludos

Profile PM  
Subject: Re: Sqlite Con Foreign Keys Fk
shordi escribió: [Ver mensaje]
¿qué problemas encuentras? No tiene ninguna dificultad. Sube la base de datos y podemos comprobarlo.


Lo que estoy intentando es encontrar la forma de hacer que un combobox creado por codigo tome en cuenta que si el campo asignado esta restringido con una foreign key, entonces listar todos los valores de la tabla foránea y cargarlos al combobox para que pueda editar los datos de la tabla sin infringir la restricción.
Ademas si la relación es entre indices (generalmente de enteros) también me interesa ver y trabajar en el combobox con texto, que es mas fácil de manejar por un ser humano, y no con enteros que son demasiado abstractos de recordar cuando hay varios registros.
Aclaro que no uso datasources, ya que si bien me parecen bastante completos, no permiten demasiado tuneo. Lo que uso es la coneccion a base de datos que esta bastante establecida aca en este foro.

Saludos.

Profile PM  
Subject: Re: Sqlite Con Foreign Keys Fk
Si revisas el adjunto de Eśte Hilo verás en el código el control xComboBox. Hace eso exactamente.
Le pasas:
-Una conexión abierta en su propiedad "Conexion"
-Una consulta sql en la propiedad "Sqlstring"
-La lista de los campos que quieres ver en el desplegable en la propiedad "listfields"
-El nombre del campo que quieres que retorne como valor seleccionado en la propiedad "fieldkey"

El control te muestra lo que quieres (la relación con la otra tabla la debes resolver con la "Sqlstring") y te ofrece la propiedad "Chosen" que contiene el campo definido en "fieldkey" correspondiente al elemento sobre el que hayas hecho Click

Destacar que de todo ésto sólo tienes que hacer el primer paso con código (mixCombobox.Conexion=miconexion), el resto se lo pones en las propiedades del IDE.

Si no te vale, dime lo que necesitas... o al menos ahí tienes una forma de resolver ese problema que te puede servir de inspiración, espero.

Saludos.

Profile PM  
Subject: Re: Sqlite Con Foreign Keys Fk
Shordi: acá subo un video en el que intento explicar lo que quiero hacer con los foreign key.

Link

Saludos.

Profile PM  
Subject: Re: Sqlite Con Foreign Keys Fk
En el vídeo, minuto 3:31 haces un click y creas una serie de controles. Si en ese momento destripas (o ya tienes destripada) el campo "sql" de la tabla slqite_master correspondiente a la tabla (o el "show create table" de MySql), obtienes las referencias de clave foránea que necesitas.
A partir de esa línea -que debería ser, en sqlite, algo así como "FOREIGN KEY(campodelatablaA) REFERENCES tablaB(nombredecampoB)"- ya tienes la tabla y el campo que referencia esa tabla. Si entonces ofreces al usuario una lista de los campos que tiene la tabla nombredetablaB para que haga click sobre el que desea ver en el desplegable, pues ya lo tienes -Es decir almacenas en algún lado, junto con el nombre de la columna cambiado, el tamaño modificado, el nombre del campo referenciado, el nombre del/los campo/campos a visualizar, la sentencia sql que rellene el combobox resultante, etc. etc. y en futuras consultas reconstruyes el control deseado y se lo muestras al usuario-...

Viendo tu proyecto unos consejos te doy desde la experiencia de muchos años:

-Si lo que pretendes es aprender a manejar, controlar, construir y administrar bases de datos. Perfecto, sigue adelante. Tú eres el destinatario y todo el esfuerzo que pongas en el proyecto va en tu beneficio

-Si lo que pretendes hacer es facilitar la vida a quien no sabe de informática a base de un programa que presenta opciones y subopciones y opciones dentro de las subopciones, etc. etc. no se la estás facilitando en absoluto y no lo entenderá (le costará menos esfuerzo, por ejemplo, asumir los nombres raros y aprender a mirar los códigos en la tabla de al lado que aprender a configurar un entorno de visualización para cada tabla).

-Por otro lado, por mucho que te esfuerces en hacerlo sencillo, la casuística siempre te sobrepasará a la hora de abrir bases de datos hechas por otros, con cosas que no tenías previstas y tu programa quedará corto. Por ejemplo: ¿Y si la tabla B referenciada en la tabla A sólo contiene el código de A y el código de otra tabla C? todos numéricos, por supuesto. Es algo muy común en el diseño de bases de datos. Nada de todo el esfuerzo expresado arriba te sirve.

-Si lo que pretendes es ofrecer a otros una herramienta que compita con sqlitemaster y phpmyadmin juntas... pues te esperan tantos años de trabajo que no lo vas a terminar nunca. Estás peleando en solitario contra poderosas compañías de software.

Como ves, sólo te aplaudo si vas por la primera opción.

De todas y por si te sirve de ayuda te adjunto un pequeño proyecto que le hice a mi padawan para ilustrar no recuerdo qué punto de la estructura de las bases de datos de la empresa. Te muestra una lista de tablas, haciendo click sobre una de ella te muestra una lista de campos y haciendo click sobre un campo te dice si es clave foránea de alguna otra tabla.

Por desgracia sólo está codificado para mysql, pero no debería costarte mucho adaptarlo a sqlite (campo sql de la tabla sqlite_master)

Last edited by shordi on Tuesday, 07 June 2016, 18:12; edited 1 time in total

constraints.tar.gz
Description:  
Download
Filename: constraints.tar.gz
Filesize: 12.05 KB
Downloaded: 66 Time(s)
constraints.tar.gz
Description:  
Download
Filename: constraints.tar.gz
Filesize: 12.05 KB
Downloaded: 66 Time(s)
constraints.tar.gz
Description:  
Download
Filename: constraints.tar.gz
Filesize: 12.05 KB
Downloaded: 66 Time(s)

Profile PM  
Subject: Re: Sqlite Con Foreign Keys Fk
shordi escribió: [Ver mensaje]
...la tabla (o el "show create table" de MySql), obtienes las referencias de clave foránea que necesitas...sqlite (campo sql de la tabla sqlite_master)...
Viendo tu proyecto unos consejos te doy desde la experiencia de muchos años:
-Si lo que pretendes es aprender a manejar, controlar, construir y administrar bases de datos. Perfecto, sigue adelante. Tú eres el destinatario y todo el esfuerzo que pongas en el proyecto va en tu beneficio.

Si, creo que me encuentro en ese punto, el de aprender a manejar, construir, administrar...
Por el momento no me creo capaz de hacer herramientas potentes como sqliteman, sqlitebrowser o phpmyadmin y supongo que nunca me pondré a hacer ese tipo de aplicaciones, mi enfoque va mas por el lado de dominar la técnica para poder hacer programas utilitarios que me permitan hacer algunas cosas con bases de datos y entender que sucede dentro del "capo" de estos "motores".

Citar:

-Por otro lado, por mucho que te esfuerces en hacerlo sencillo, la casuística siempre te sobrepasará a la hora de abrir bases de datos hechas por otros, con cosas que no tenías previstas y tu programa quedará corto. Por ejemplo...

Es verdad. Estoy trabajando con un módulo que convierte .mdb en sqlite y funciona bastante bien, pero lo probé con una BBDD que no había hecho yo y no funciono porque la base tenia caracteres extraños en los nombres de los campos y también espacios etc. etc.

Gracias por el ejemplo y los consejos.

Saludos.

Profile PM  

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.0791s (PHP: -34% SQL: 134%)
SQL queries: 25 - Debug Off - GZIP Enabled