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 15-12-2005
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
No me aparece mi tabla completa

Hola a tod@s, estoy programando en delphi 7 con Access, hago uso de componentes Ado.

Vale, mi problema es que tengo dos tablas en una(la tabla se llama Tema) tengo dos campos [Registro] y [TEMA], en la otra tengo todos los datos [Cliente][Direccion]....[etc] tambien tengo el campo [Registro] tipo Número.

Bien el problema es que he hecho una unión de las dos tablas como en otro hilo me explico Neftalí(Un saludo) con el siguiente código:

Código SQL [-]
size="1">SELECT Archivo.* , Tema.*

FROM Archivo

INNER JOIN Tema

ON Archivo.Registro2=tema.Registro2;


Eso lo tengo asociado a mi Dbgrid, en un principio funcionaba bien con esa tabla, pero,ahora tengo otra tabla que tambien he de unir con la Tabla Tema y asociarla a otro DbGrid y si hago la misma consulta que he escrito arriba solo me muestra los registros que contienen algo en el Campo Tema los demás no me los muestra.

Si hago una consulta del tipo:

Código SQL [-]
SELECT *
FROM Master;
Me aparecen 2000 registros mas o menos pero si hago :

Código SQL [-]
size="1">SELECT Master.* , Tema.*

FROM Master

INNER JOIN Tema

ON Master.Registro2=tema.Registro2;

Que es la misma que en la otra tabla solo me muestra 1000 y pico que son los que el cliente ha puesto algo en el campo Tema los demás no me los muestra.

No se si alguien sabe como puedo solucionarlo, de todas formas gracias por el tiempo que me dedicais siempre.

Un Saludo a todos los Forer@s.
Responder Con Cita
  #2  
Antiguo 15-12-2005
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
Prueba asi:
Código SQL [-]
SELECT Master.* , Tema.*

FROM Master

LEFT OUTER JOIN Tema

ON Master.Registro2=tema.Registro2;
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #3  
Antiguo 15-12-2005
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Nelet Funcionó, muchisimas gracias.

Me podrias explicar que consigo poniendo

Código SQL [-]
LEFT OUTER JOIN Tema

Es para saber cuando lo tengo que utilizar.

Ante todo muchas gracias por que estaba poniendo mi tabla patas arriba probando cosas.

Un saludo.
Responder Con Cita
  #4  
Antiguo 15-12-2005
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
El LEFT OUTER JOIN indica a la base de datos que tiene que traerse todas las filas de la tabla de la derecha y solo las filas de la tabla de la izquierda en las que se de la igualdad, con lo que tendras las filas de la tabla derecha con datos y las de la izquierda que no cumplan la igualdad las tendras a null.

El RIGHT OUTER JOIN es lo mismo pero con la tabla derecha con todos los datos.
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #5  
Antiguo 15-12-2005
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Muchisimas Gracias Nelet.

Perdona que abuse de tu confianza, pero mira tengo otro problemilla con las sentencias SQL.Tengo que hacer lo mismo que he hecho con la tabla Temas, pero con otra tabla, y las he de unir las dos en la tabla archivo.

Tengo el siguiente codigo
Código SQL [-]
size="1">SELECT Archivo.* , Tema.*,Formato.*
 
FROM Archivo
 
LEFT OUTER JOIN Tema
 
ON Archivo.Registro2=tema.Registro2
 
LEFT OUTER JOIN Formato
 
ON Archivo.Id=Formato.Id;
 

Me da un error de sintaxis(falta operador) en la expresion de consulta:

Código SQL [-]
ON Archivo.Registro2=tema.Registro2
 
LEFT OUTER JOIN Formato
 
ON Archivo.Id=Formato.Id;

Segun he leido y me han dicho, se pueden anidar JOIN sin problemas pero es que no se que operador me falta.

Gracias por tu ayuda.
Responder Con Cita
  #6  
Antiguo 15-12-2005
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 22
Nelet Va por buen camino
Hoy me has pillado curiosón. Y acces hace cosas raras y curiosas.
¿Has probado a confeccionar la consulta en el diseñador de acces?.
Si lo haces puedes unir los campos y después dándole con el botón derecho en las flechitas de las relaciones se puede definir el tipo de JOIN.
Pos bueno...tu consulta así como está al señorito access no le parece bien (al señor SQL-Server si...). La he hecho con el diseñador utilizando tablas mias y me he encontrado con que Access pone unos paréntesis en el primer join. Tu consulta quedaría de la siguiente forma:

Código SQL [-]
SELECT Archivo.* , Tema.*,Formato.*
 
FROM (Archivo
 
LEFT OUTER JOIN Tema
 
ON Archivo.Registro2=tema.Registro2)
 
LEFT OUTER JOIN Formato
 
ON Archivo.Id=Formato.Id;

Y de paso también me he dado cuenta que el OUTER no es necesario...
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #7  
Antiguo 15-12-2005
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Muchisimas gracias por fin funciono, me he estado volviendo loco y al final era una tonteria de parentesis, eah!! asi es la informática las cosas mas sencillas pueden llegar a convertirse en muy complejas,jeje.


Gracias tio por tu ayuda.Un saludo.
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


La franja horaria es GMT +2. Ahora son las 21:59:59.


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