Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2007
atrus atrus is offline
Miembro
 
Registrado: oct 2006
Posts: 29
Poder: 0
atrus Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 26-05-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 26-05-2007
VaMPiRu VaMPiRu is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
VaMPiRu Va por buen camino
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...

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.

Última edición por VaMPiRu fecha: 26-05-2007 a las 02:42:11.
Responder Con Cita
  #4  
Antiguo 26-05-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por VaMPiRu
Está usando el MS Access...
¿de donde sacas eso?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 26-05-2007
atrus atrus is offline
Miembro
 
Registrado: oct 2006
Posts: 29
Poder: 0
atrus Va por buen camino
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....
Responder Con Cita
  #6  
Antiguo 26-05-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 26-05-2007
atrus atrus is offline
Miembro
 
Registrado: oct 2006
Posts: 29
Poder: 0
atrus Va por buen camino
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;
Responder Con Cita
  #8  
Antiguo 26-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Para construir los SQL en tiempo de ejecución revisa este hilo, quizás te sirva.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 26-05-2007 a las 12:24:41.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
El tafanario de la asistente marcoszorrilla La Taberna 0 27-09-2006 22:33:33
Como utilizar el asistente de grabacion de CD desde Builder? JuanErasmo C++ Builder 2 12-01-2006 23:11:37
Asistente para crear formularios (formas o fichas) Mauro.NET Varios 0 17-08-2005 18:36:09
Asistente de grabacion de CDs en XP Jan_polero API de Windows 0 10-03-2005 13:48:18


La franja horaria es GMT +2. Ahora son las 19:49:51.


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
Copyright 1996-2007 Club Delphi