Primero y principal:
Creo que está mal hecho el sql.
La forma correcta de hacerlo debería ser así:
Código SQL
[-]
select a.campo1,a.campo2,a.campo3,
b.campo1,b.campo2,b.campo3,
c.campo1,c.campo2,c.campo3
from tabla1 a
[left/right] join tabla2 b
on (a.campo1=b.campo1)
[left/right] join tabla3 c
on (b.campo1=c.campo1) and (b.campo2=c.campo2)
where
a.campo1=1234
Código SQL
[-]
SELECT Factura.NumFactura, Factura.Fecha, Factura.Clicod, Clientes.Clinom,
Clientes.Clidom, Clientes.Clicuit, Clientes.Clitel, Factura.Emplecod, Facdetalle.Codipro,
Facdetalle.Concepto, Facdetalle.Cantidad, Facdetalle.Precio, Factura.SubTotal,
Factura.Descuento, Factura.importetotal
FROM Stock
RIGHT JOIN Clientes
ON Stock.Procod = Facdetalle.Codipro;
RIGHT JOIN Factura
ON Clientes.Clicod = Factura.Clicod)
LEFT JOIN Facturadetalle
ON (Factura.Tipofac = Facdetalle.Tipofac) AND (Factura.Numfactura = Facdetalle.Numfactura))
WHERE Factura.Numfactura=:Nrofact AND Factura.Tipofac=:TipoFact
Tambien deberías tener en cuenta el orden en que haces los joins. Sobre todo si son left o right join.
En este caso deberías poner primero From Facturas (porque filtras por su número y tipo) y esta factura unirla al resto de tablas (detalle,cliente,stock)
Tambien veo que no utilizas la tabla stock. Quizás no debas meterla en este select.
Código SQL
[-]
SELECT Factura.NumFactura, Factura.Fecha, Factura.Clicod, Clientes.Clinom,
Clientes.Clidom, Clientes.Clicuit, Clientes.Clitel, Factura.Emplecod, Facdetalle.Codipro,
Facdetalle.Concepto, Facdetalle.Cantidad, Facdetalle.Precio, Factura.SubTotal,
Factura.Descuento, Factura.importetotal
FROM Factura
LEFT JOIN Facturadetalle
ON (Factura.Tipofac = Facdetalle.Tipofac) AND (Factura.Numfactura = Facdetalle.Numfactura))
RIGHT JOIN Clientes
ON Clientes.Clicod = Factura.Clicod)
JOIN Stock
ON Stock.Procod = Facdetalle.Codipro;
WHERE Factura.Numfactura=:Nrofact AND Factura.Tipofac=:TipoFact