Vamos a por el segundo intento.
Te explico lo que debes hacer (es parecido a lo anterior, pero con "variaciones sobre el tema"). Haz el proceso poco a poco, que es un poco complejo:
1.- Crea una consulta sobre la tabla ALMACEN_TELA y añades el campo ref (te quedará en la primera columna del grid). La guardas como CPiezas
2.- En la segunda columna del grid, en la primera línea (la correspondiente a "Campo:", escribes lo siguiente:
ref2: SiInm([ENTRADAS]<>0;[ref] & [ENTRADAS];[ref] & [msalidas])
3.- En la tercera columna del grid, en la primera línea, escribes lo siguiente:
Piezas: SiInm([ENTRADAS]<>0;1;-1)
4.- En la cuarta columna añades ENTRADAS, y en la quintacolumna añades msalidas.
5.- Creas una consulta, que llamaremos CStockPrevio, basada en la consulta CPiezas. Añades:
- En la primera columna, el campo [ref2]
- En la segunda columna, el campo [Piezas]
6.- Conviertes esa consulta en una consulta de totales, agrupando el campo [Piezas] por suma (el otro no lo tocamos)
7.- En la columna del campo [Piezas], en la línea correspondiente a "Criterios:", escribes
<>0
Guardas esa consulta.
8.- Creas una tercera consulta, que llamaremos CStock, basada en:
- La consulta CPiezas
- La consulta CStockPrevio
9.- Creas manualmente una relación entre los campos [ref2] de ambas consultas.
10.- Añades al grid de la consulta:
- Primera columna: [ref] de la consulta CPiezas
- Segunda columna: [SumaDePiezas] de la consulta CStockPrevio
- Tercera columna: [ENTRADAS] de la consulta CPiezas
11.- Conviertes esa consulta en una consulta de totales, pero no tocamos el agrupamiento que sale por defecto (todos los campos quedan con el valor "Agrupar por".
Y ya está. Ahora esta consulta te dará el número de piezas de las entradas en las que haya stock.
A ver si esta vez la hemos acertado.