Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   asistente de SQL (https://www.clubdelphi.com/foros/showthread.php?t=44019)

atrus 26-05-2007 01:18:48

asistente de SQL
 
Hola a todos,
estoy haciendo un asistente automatico de consultas sql como el que tiene el acces, pero no se me aocurre como hacerlo en delphi, mi pregunta es si para hacer inner joins automaticos hay alguna manera de detectar las relaciones que hau entre tablas con el delphi?
tengo dos listbox con multiselect, uno con las tablas y el otro con los fields de estas, y voy montando la consulta a medida que se va pulsando en ellas, no se si es el mejor planteamiento pero es lo que se me ha ocurrido.

graicas a todos por vuestro tiempo.

jachguate 26-05-2007 02:32:38

Depende del motor que uses, si cumple con el estándar SQL esta información está en el diccionario de datos.

No puedo dar mas información, porque desconozco los datos mínimos para hacerlo.

Hasta luego.

;)

VaMPiRu 26-05-2007 02:38:53

Cita:

Empezado por jachguate
Depende del motor que uses, si cumple con el estándar SQL esta información está en el diccionario de datos.

Está usando el MS Access... :rolleyes:

La cuestión es si con dicho motor se puede conseguir lo que propone el compañero sin tener que recurrir a recorridos anidados entre los campos de las tablas seleccionadas comparando el nombre de los campos (PK y FK tienen mismo nombre) para saber si existe relación o no.

Gracias =)

PD: Datos, usando Delphi 6 SP2 (con componentes base, sin posibilidad de añadir de terceros), Access 2003, conectando con los ADO.

jachguate 26-05-2007 02:40:01

Cita:

Empezado por VaMPiRu
Está usando el MS Access... :rolleyes:

:confused: ¿de donde sacas eso? :confused:

atrus 26-05-2007 02:41:15

asistente SQL
 
El motor, como ha dicho Vampiru es Access, perdona por la falta de información, el problema es que en el asistente nos piden hacer Inner Joins y no se como hacerlo, si alguien propone una idea, lo agradeceria mucho....

jachguate 26-05-2007 03:10:14

Podes hacer inner joins aún entre tablas que no tengan definida una relación (integridad referencial).

Por otro lado, Desconozco si access tiene un diccionario de datos accesible via sql.

Hasta luego.

;)

atrus 26-05-2007 03:26:10

muchas gracias jachguate, de todos modos posteo el codigo y a ver si alguien me puede ayudar, porqué no se me ocurren ideas, espero que esto esté permitido.
voy cogiendo de un combobox las tablas i de otro los campos i voy creando la sentencia.
Código Delphi [-]
procedure TP09_MENU_PRINCIPAL.cmb_taulaChange(Sender: TObject);
begin

        cmb_camp.ItemIndex:=-1;
        adoc1.GetFieldNames(cmb_taula.Items[cmb_taula.itemindex],cmb_camp.Items);  //carga los campos de las tablas al combobox
        if (icont=0) then begin//si no hay nada en la parte del from entonces insertara el primero
                sfrom := cmb_taula.Items[cmb_taula.itemindex];
        end;

        if (icont=1) then begin
                sfrom := sfrom+', '+cmb_taula.Items[cmb_taula.itemindex];
        end;
        icont:=1;

end;

procedure TP09_MENU_PRINCIPAL.cmb_campChange(Sender: TObject);
begin
        if (icont_field=0) then begin
                sselect :=cmb_camp.Items[cmb_camp.itemindex];
        end;

        if (icont_field=1) then begin
                sselect :=sselect+', '+cmb_camp.Items[cmb_camp.itemindex];
        end;

        icont_field:=1;
end;

procedure TP09_MENU_PRINCIPAL.btn3Click(Sender: TObject);
begin
        mem1.Lines.Text := 'select '+sselect+' from '+sfrom;
end;

Lepe 26-05-2007 12:06:10

Para construir los SQL en tiempo de ejecución revisa este hilo, quizás te sirva.

Saludos


La franja horaria es GMT +2. Ahora son las 14:34:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi