Access - Ayuda con INNER JOIN ...

   
Vista:

Ayuda con INNER JOIN ...

Publicado por Héctor Flórez (25 intervenciones) el 13/01/2011 18:19:56
Gracias por la ayuda:

Tengo un formulario con el siguiente Origen de registro:

SELECT Salidas.*, Provedor.Apellidos, Provedor.Nombre, Provedor.Nit, Provedor.Dir, Provedor.Tel, Empleados.Apellidos AS Apellidos_Empleados, Bancos.RangoIniCheque, Bancos.RangoFinCheque FROM Bancos INNER JOIN (Empleados INNER JOIN (Provedor INNER JOIN Salidas ON Provedor.Id=Salidas.Provedor) ON Empleados.Id=Salidas.Responsable) ON Bancos.Id=Salidas.Banco;

Basicamente lo que hace es mostrar los datos de una factura.

La cuestión es que el usuario puede seleccionar el código de banco cuando se ha cancelado con cheque. PERO no me muestra sino los registros ralacionados con la tabla bancos.... y los cancelados en efectivo ó por pagar no los muestra por pantalla...

Cómo hacer que el usuario visualice todos los registros.

Intente usando el comando:

stDocName = "Egresos"

stLinkCriteria = "[Egresos.Id]=" & Me![Egreso]
DoCmd.OpenForm stDocName, , , stLinkCriteria

Pero igual, el registro que se cancela en efectivo o esta por pagar no lo muestra, abre el formulario en blanco....

Pero si me muestra unicamente los registros relacionados con la tabla bancos...

Gracias por cualquier ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con INNER JOIN ...

Publicado por jfableon (7 intervenciones) el 17/01/2011 16:12:42
Hola Hector,

Me imagino que los documentos que quieres mostrar están en la tabla Salidas. Si así es puedes cambiar el INNER JOIN de la combinación con la tabla banco por RIGHT JOIN así:

SELECT Salidas.*, Provedor.Apellidos, Provedor.Nombre, Provedor.Nit, Provedor.Dir, Provedor.Tel, Empleados.Apellidos AS Apellidos_Empleados, Bancos.RangoIniCheque, Bancos.RangoFinCheque FROM Bancos RIGHT JOIN (Empleados INNER JOIN (Provedor INNER JOIN Salidas ON Provedor.Id=Salidas.Provedor) ON Empleados.Id=Salidas.Responsable) ON Bancos.Id=Salidas.Banco;

Con INNER se ve solo los datos que correpondan en ambas tablas. Por eso los registros en Salidas que no tienen un Banco no se muestran.

Con LEFT se vería todo lo que este en Bancos y los registros en Salidas que no corresponda con Bancos no se verían.

con RIGHT se verán todos los registros de Salidas, así no tengan Banco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar