Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2014
pani_alex pani_alex is offline
Miembro
 
Registrado: oct 2005
Posts: 51
Poder: 19
pani_alex Va por buen camino
Necesito saber el display label correcto

hola, a ver si me puedo explicar, necesito saber el display label correcto de un query, es decir si el campo se llama nombre y en el query esta escrito p.nombre (p del alias de la tabla personas) que en el display label me salga p.nombre, pues me da problemas al hacer el filtro cuando trago el nombre del campo desde el dbgridEh y hay mas de una tabla con el mismo nombre o tambien me trae el alias nombrePersona (p.nombre as nombrePersona) y no encuentra ningun campo con ese nombre.
Si no supe expresarme me lo dicen e intentare hacerlo con ejemplos graficos para darme a entender. Gracias
Responder Con Cita
  #2  
Antiguo 01-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pani_alex.

No sé si interpreté la situación, pero no debería existir conflicto si declaras diferentes alias para diferentes columnas.

Realiza la siguiente prueba donde veras listados los diferentes alias de columnas en un ListBox:
Código Delphi [-]
...
var
  i: Integer;
begin
  with TuQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT P.ID AS P_ID, Q.ID AS Q_ID, R.ID AS R_ID,');
    SQL.Add('P.NOMBRE AS P_NOMBRE, Q.NOMBRE AS Q_NOMBRE, R.NOMBRE AS R_NOMBRE');
    SQL.Add('FROM TABLA1 P, TABLA2 Q, TABLA3 R');  //(*)
    Open;
    for i:= 0 to FieldCount-1 do
      ListBox1.Items.Add(Fields[i].FieldName)
  end;
...
(*) Trabaja del mismo modo aplicado a una sola tabla:
Código Delphi [-]
   ....
    SQL.Add('FROM TABLA1 P, TABLA1 Q, TABLA1 R');
   ...
Claro está que los alias deberán ser distintos entre sí.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 01-07-2014
pani_alex pani_alex is offline
Miembro
 
Registrado: oct 2005
Posts: 51
Poder: 19
pani_alex Va por buen camino
gracias por la respuesta.

Hasta alli todo bien pero luego uso los eventos on click de la grilla segun sobre que columna uno este posicionado y modifico el query para crear filtros (en ejecucion por medio de unos procedimientos/funciones que cree), alli comienzan los errores pues "P_ID" por ejemplo no es un campo de ninguna tabla, para poder filtar por ese campo en el query tendria q pasarle el dato "P.ID" y tampoco puedo pasarle solo "ID" porque si existe otra tabla en el mismo query con el mismo nombre el filtro queda sin efecto.
Ahora en el clientDataSet teniendo todos los campos, me posiciono en uno de ellos, por ej "P_ID" que es el FielName, en el DisplayLabel tambien me carga el mismo texto pero si manualmente coloco "P.ID" todo va sobre ruedas, no hay error en nada y los filtros son aplicados sin problemas. Abria alguna forma de cargar correctamente el DisplayLabel, o de alguna manera obtener el "P.ID" DE "P_ID"?
Responder Con Cita
  #4  
Antiguo 01-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pani_alex.

No me sucede eso usando alias de columnas, para salir de dudas hace una prueba similar a esta,
Código Delphi [-]
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  fn: string;
begin
  fn:= Column.FieldName;
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT T1.NOMBRE AS T1_NOMBRE, T2.NOMBRE AS T2_NOMBRE');
    SQL.Add('FROM TABLA T1, TABLA T2');
    SQL.Add('ORDER BY ' + fn);
    Open;
  end;
end;
en mi caso ordena correctamente de acuerdo al alias de la columna seleccionada.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 02-07-2014
pani_alex pani_alex is offline
Miembro
 
Registrado: oct 2005
Posts: 51
Poder: 19
pani_alex Va por buen camino
Me da column unknown, solo si uso "T1.NOMBRE" funciona, tampoco son "NOMBRE" solo si es q dos tablas tienen el mismo nombre de campo
Responder Con Cita
  #6  
Antiguo 02-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pani_alex.

Me parece que es una cuestión de sintáxis relacionada con el tipo de componente y base de datos que estas usando.
Entonces la pregunta, ¿ Que gestor de base de datos y que componentes de conexión para conectarte a ella estas usando ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 02-07-2014
pani_alex pani_alex is offline
Miembro
 
Registrado: oct 2005
Posts: 51
Poder: 19
pani_alex Va por buen camino
Pensando un poco lo q quiero se podria llamar "como obtener el campo de un alias y el alias de la tabla de un campo", lo del campo de un alias calculo se podria sacar simplemente analizando el texto sql, creo q hare la funcion, pero como podria saber por ej:
select t1.*, t2.*
from tabla1 t1, tabla2 t2
donde t1 tiene el campo nombre y t2 tambien, "nombre" de que tabla... creo q tengo una idea de como hacerlo, voy a trabajar en ello
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
No me dibuja en un label en el tiempo correcto noob Varios 5 11-02-2009 23:15:38
como saber que .dll's necesito en mi aplicacion? federiconqn21 Varios 2 15-09-2006 22:14:57
necesito saber cosas hecla Varios 1 30-06-2006 22:04:26
ayuda, necesito saber 2 instrucciones SQL manolop Firebird e Interbase 2 16-05-2005 12:03:50
Necesito Saber Donde Lo Descargo!! condor Varios 17 21-05-2004 20:48:50


La franja horaria es GMT +2. Ahora son las 04:58:40.


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