También puedes tratar de hacer el mismo select pero utilizando JOINs
Código SQL
[-]select c.ncentro, l.carticulo, l.ncod_albaran, l.ccod_serie,
l.ncod_orden,c.npuntoventa, c.ncliente, c.dfecha,
l.ncantidad1, l.ncantidad2, l.ncantidadvalor, c.ntipoop
from cabalbcli c
left join linalbcli l
on c.ncod_albaran = l.ncod_albaran and c.ccod_serie = l.ccod_serie
left join articulos a
on l.carticulo = a.ccod_articulo
left join artifabr af
on af.ccod_articulo=a.ccod_articulo
left join multipuntosventa m
on m.ncod_puntoventa=c.npuntoventa
where
and c.lfacturable=0
and c.ntipoop=2
and (c.dfecha >= '10/01/10' and c.dfecha <= '10/31/10')
and l.lenvase=0
and l.ncantidadvalor < 0
and (l.ctipolinea='V' or l.ctipolinea='P' or l.ctipolinea='R')
and l.nenlacefab is null
and af.ncod_fabricante = 1
and af.lprincipal=1 m.ncod_fabricante=1
and af.csureferencia is not null
and m.nptovtaserv is null
order by l.carticulo, l.ncod_orden, l.ccod_serie, l.ncod_albaran
Notas:
He utilizado alias (cabalbcli c, por ejemplo) para que el sql sea más legible
Presta especial atención a los índices que te marco, pues son los que utilizará para tratar de unir una tabla con otra.
Dato que utilizas "
and campo is null" entiendo que quieres que te aparezcan registros en los que la tabla asociada no tiene registros. Por eso he utilizado
LEFT JOIN.