Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ayda con un join!!!!!! (https://www.clubdelphi.com/foros/showthread.php?t=75979)

hanabi 01-10-2011 02:17:32

ayda con un join!!!!!!
 
Hola soy nueva en delphi!, les agradeceria si me pueden ayudar con una aplicacion lo que debo de hacer es un join entre 2 tablas, y este join debe apareccer mostrando los datos en un dbgrid, el problema es que hago la consulta con un ibquery, pero me marca error!!! les agradeceria si me ayudan con un ejemplo, de antemano gracias por la atención.

ecfisa 01-10-2011 04:16:00

Hola hanabi y bienvenida a los foros de Club Delphi. :)

Por favor, danos más datos para poder ayudarte, de tu mensaje lo único entender es que tenes que hacer un join entre dos tablas y mostrar los datos en un DBGrid.

Pero, ¿ Cuales son los campos ? ¿ Que datos deben ser mostrados ?, ¿ Cuál es el criterio de selección ?, ...

Como te daras cuentas tu mensaje deja mas preguntas que respuestas. ;)

Te invito a leer la Guía de estilo, un conjunto de sugerencias para que todos tengamos un mejor entendimiento.

Un saludo y gracias por tu colaboración. :)

Caral 01-10-2011 04:24:28

Hola
El uso del Join no tiene nada que ver con delphi, tiene que ver con sql.
El error que te envía es seguramente relacionado a la conexión, no creo que tenga que ver con el join ya que esto lo que hace es simplemente la relacion entre dos campos de dos o varias tablas:
Como dice mi amigo ecfisa, te falto dar información.
Quieres ejemplos de join:
Código SQL [-]
SELECT IIf(TipoTransac='FA','Factura','Nota Débito') AS Documento,
CxCobrar.CodTransac, CxCobrar.FechaTransac, CxCobrar.CodCliente, Clientes.NombreCliente,
CxCobrar.Balance, CxCobrar.PagosRec, Balance-PagosRec AS Saldo, current_date-CxCobrar.FechaTransac AS Dias
FROM Clientes RIGHT JOIN CxCobrar ON Clientes.CodCliente = CxCobrar.CodCliente
WHERE (((CxCobrar.CodCliente)>= :PRI And (CxCobrar.CodCliente)<= :FIN)
AND ((Balance-PagosRec)>0) AND ((CxCobrar.TipoTransac)='FA' Or (CxCobrar.TipoTransac)='ND'))
ORDER BY CxCobrar.CodCliente, CxCobrar.OrdTrans;
Otro:
Código SQL [-]
SELECT CxCobrar.CodTransac, CxCobrar.Secuencia, CxCobrar.TipoTransac,
CxCobrar.FechaTransac, CxCobrar.FechaVencimiento, (current_date - CxCobrar.FechaVencimiento) AS Dias,
CxCobrar.CodCliente, Clientes.NombreCliente, Clientes.LimiteCredito,
Clientes.DiasCredito, Balance-PagosRec AS Saldo,
IIf((current_date - CxCobrar.FechaVencimiento >0)
And (current_date - CxCobrar.FechaVencimiento <31),Balance-PagosRec,0) AS ME30dias,
IIf((current_date - CxCobrar.FechaVencimiento <61)
And (current_date - CxCobrar.FechaVencimiento >30),Balance-PagosRec,0) AS E3160dias,
IIf((current_date - CxCobrar.FechaVencimiento <91)
And (current_date - CxCobrar.FechaVencimiento >60),Balance-PagosRec,0) AS E6190dias,
IIf(current_date - CxCobrar.FechaVencimiento >91,Balance-PagosRec,0) AS MA90dias
FROM Clientes INNER JOIN CxCobrar ON Clientes.CodCliente = CxCobrar.CodCliente
WHERE (((CxCobrar.TipoTransac)='FA' Or (CxCobrar.TipoTransac)='ND') AND ((Balance-PagosRec)>0))
ORDER BY CxCobrar.CodCliente, CxCobrar.FechaTransac, CxCobrar.CodTransac;
Con esto ya tienes para un rato.:)
Si quieres mas ejemplos con gusto.:D
Saludos

oscarac 03-10-2011 16:19:35

seria bueno que hanabi se pronuncie y de mas datos

hanabi 03-10-2011 22:43:31

hola saludos!!! tengo dos tablas una llamada ciudades y otra colonias, tengo k realizar un join entre estas 2 tablas, en el dbgrid se debe mostrar la consulta con el join, ya conecte la base de datos el problema es k no se como realizar el llamado del dbgrid y muestre la consulta, no se si me explique, disculpen las molestias! gracias!
Esta es la consulta la hice en IB Expert y si me muestra la consulta.

SELECT COL.CLAVECOL, COL.NOMCOL, CD.NOMCIUDAD
FROM ciudades CD, colonias COL
WHERE CD.CIUDAD=COL.clavecol

Caral 03-10-2011 23:27:52

Hola
IBExpert entonces debemos suponer que es firebird.
Por lo mimo debemos suponer que componentes IBX.
Entonces debemos suponer que se enlaza el dbgrid con el datasource con el ibquery con el ibtransaction con el ibdatabase.
Tambien debemos suponer que cd.ciudad esta ligado a col.clavecol.
Bueno, me canse de suponer.
Saludos
PD: Si se quiere ayuda, por lo menos se tiene que tener claro que no somos adivinos.

hanabi 04-10-2011 22:44:05

hola, asi es, supones bien XD, encontre la solucion del join!!, gracias x la atencion k me brindaron!! saludos

Casimiro Noteví 04-10-2011 22:54:14

Para la siguiente vez estaría bien que antes leas nuestra guía de estilo ;)

ecfisa 05-10-2011 01:55:28

Cita:

Empezado por hanabi (Mensaje 414560)
hola, asi es, supones bien XD, encontre la solucion del join!!, gracias x la atencion k me brindaron!! saludos

Hola hanabi.

Sería muy bueno si pudieses compartir la solución que encontraste. De ese modo, aquél que con un problema similar lea este hilo, podrá resolverlo gracias a tu aporte.

Un saludo. :)

hanabi 05-10-2011 02:02:39

hola! pues este es el codigo que ocupe para mostrar los datos en el DBGrid, y los componentes database.ibquery,datasource y ibtransaction.
Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
begin
IBQuery1.Close;
IBQuery1.SQL.Text:='SELECT COL.CLAVECOL, COL.NOMCOL, CD.NOMCIUDAD FROM CIUDADES CD, COLONIAS COL WHERE CD.CIUDAD=COL.CLAVECOL ';
IBQuery1.Open;
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
form2.Show;
form2.Edit1.Text:=IBQuery1.fieldByName('CLAVECOL').AsString;
form2.Edit2.Text:=IBQuery1.fieldByName('NOMCOL').AsString;
form2.Edit3.Text:=IBQuery1.fieldByName('NOMCIUDAD').AsString;
gracias!! y saludos de acuerdo leere las guias

oscarac 05-10-2011 15:55:54

Se que es un tema que ya solucionaste... pero no veo el join por ningun lado

Código Delphi [-]
 
Select Tabla1.Campos, Tabla2.Campos
From Tabla1 
Left Join Tabla2 on Tabla1.CamporenComun = Tabla2.CampoenComun
Where... condiciones

no estoy criticando tu solucion, solo que esta me parece la forma mas logica


La franja horaria es GMT +2. Ahora son las 12:57:24.

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