Duplicidad de lineas en un DbGrid con Firebird

saruman91
29 de Octubre del 2004
Buenos dias, tengo un problema a la hora de visualizar el resultado de una consulta contra firebird en una rejilla. El problema consiste en que algunos registros aparecen duplicados, supongo que sera un problema de la consulta SQL ejecutada, pero de momento me he ofuscado con que la consulta esta mal. Pero si alguien puede repasarla para ver si esta bien o mal, lo agradeceria enormemente. Utilizo para la consulta un componente TIBQuery al cual enlaza un TIBTransaction un TDataSource que descarga el resultado de la sentencia contra el Grid. La consulta es la siguiente:

Intervienen en la consulta un total de 9 tablas que son BOOKING, PUERTOS_SIC, DESTINOS_SIC, EXPEDIENTES, CUENTAS, DEPOSITOS, MERCANCIAS_GRAL, MERCANCIAS_TARIC, MMP2

select
B.BOOKING,
B.SCHEDULE,
D1.DESTINO AS ORIGEN_INICIAL,
P1.NOMPTO AS PUERTO_ORIGEN,
P2.NOMPTO AS PUERTO_DESTINO,
D2.DESTINO AS DESTINO_FINAL,
B.EXPEDIENTE,
E.FAPERTURA,
E.CONTENEDOR,
E.PRECINTO,
E.PRECINTOLIN,
B.NUMBL,
B.CLIENTE,
C.NOMBRE AS NOMBRE_CLIENTE,
B.CLIENTEPERSONA,
B.DESTINO,
B.DOCUMENTACION,
B.ORIGEN,
B.COORDEN,
B.BULTOS,
B.EMBALAJEN,
T1.TIPO_ENVASE AS EMBALAJE,
B.PESO,
B.VOLUMEN,
B.MERCANCIA,
M1.MERCANCIA AS MERCANCIA_GRAL,
B.MERCANCIATARIC,
M2.NOMMER AS MERCANCIA_TARIC,
B.MERCLIBRE,
B.MMPP,
M3.DENCOM AS MERCANCIA_PELIGROSA,
B.DEPOSITO,
D3.DEPOSITO AS NOMBRE_DEPOSITO,
B.REFDEPOSITO,
B.IDALBARAN,
B.MARCAS,
B.OBSERVACIONES,
B.FRESERVA,
B.FENTRADA,
B.ESTRANSBORDO,
B.RECEPTOR,
B.EMBARCADOR
from
BOOKING B
left outer join SCHEDULE_SIC S on (S.SCHEDULE=B.SCHEDULE)
left outer join PUERTOS_SIC P1 on (P1.CODIGO=S.PORIGEN)
left outer join PUERTOS_SIC P2 on (P2.CODIGO=S.PDESTINO)
left outer join EXPEDIENTES E on (E.EXPEDIENTE=B.EXPEDIENTE)
left outer join CUENTAS C on (C.CODIGO=B.CLIENTE)
left outer join DESTINOS_SIC D1 on (D1.CODIGO=B.ORIGEN)
left outer join DESTINOS_SIC D2 on (D2.CODIGO=B.DESTINO)
left outer join TIPO_ENVASES T1 on (T1.CODIGO=B.EMBALAJEN)
left outer join MERCANCIAS_GRAL M1 on (M1.CODIGO=B.MERCANCIA)
left outer join MERCANCIAS_TARIC2 M2 on (M2.CODIGO=B.MERCANCIA)
left outer join MMPP2 M3 on (M3.CODIGO=B.MMPP)
left outer join DEPOSITOS D3 on (D3.CODIGO=B.DEPOSITO)
where
(B.FENTRADA is NULL)
order by
B.BOOKING, P2.NOMPTO, P1.NOMPTO;