No pones cómo es la consulta de la que obtienes los datos, sólo pones el campo calculado, que imagino será uno de los de la consulta...
Me parece que tu mejor opción para lograr el inventario final, es aplicar la máxima de "divide y vencerás", y realizarlo en varias consultas:
1º/ Haces una consulta de totales (que llamas, por ej. CInvIngresos) sobre las tablas 02 y 09 para obtener los ingresos (compras) de cada libro, con esta SQL:
SELECT [02LIBROS].CodLib, Sum([09INGRESOS].CantIng) AS SumaDeCantIng FROM 02LIBROS INNER JOIN 09INGRESOS ON [02LIBROS].CodLib = [09INGRESOS].CodLib GROUP BY [02LIBROS].CodLib;
2º/ Haces una consulta de totales (que llamas, por ej. CInvEgresos) sobre las tablas 02 y 10 para obtener las salidas (bajas) de cada libro, con esta SQL:
SELECT [02LIBROS].CodLib, Sum([10EGRESOS].CantEgr) AS SumaDeCantEgr FROM 02LIBROS INNER JOIN 10EGRESOS ON [02LIBROS].CodLib = [10EGRESOS].CodLib GROUP BY [02LIBROS].CodLib;
3º/ Haces una consulta de totales (que llamas, por ej. CInvPrestamos) sobre las tablas 02 y 11 para obtener los préstamos de cada libro, con esta SQL:
SELECT [02LIBROS].CodLib, Count([11VALES_PRÉSTAMO].ValeNo) AS CuentaDeValeNo FROM 02LIBROS INNER JOIN 11VALES_PRÉSTAMO ON [02LIBROS].CodLib = [11VALES_PRÉSTAMO].CodLib GROUP BY [02LIBROS].CodLib;
4º/ Haces una consulta de totales (que llamas, por ej. CInvDevoluciones) sobre las tablas 02, 11 y 12 para obtener los préstamos de cada libro, con esta SQL:
SELECT [02LIBROS].CodLib, Count([12DEVOLUCIONES].DescargoNo) AS CuentaDeDescargoNo
FROM (02LIBROS INNER JOIN 11VALES_PRÉSTAMO ON [02LIBROS].CodLib = [11VALES_PRÉSTAMO].CodLib) INNER JOIN 12DEVOLUCIONES ON [11VALES_PRÉSTAMO].ValeNo = [12DEVOLUCIONES].ValeNo GROUP BY [02LIBROS].CodLib;
Con estas 4 consultas, tendrás para cada libro los totales de cada movimiento.
5º/ Creas una consulta (CInventario) sobre la tabla 02 y las 4 consultas anteriores, cogiendo los datos que quieras mostrar de la tabla 02 y los campos de totales de las 4 consultas. Tendrás que crear las relaciones entre el campo CodLib de la tabla 02Libros y lso campos CodLib de cada una de las consultas, y modificarlas para que te muestre todos los registros de la tabla 02Libros y los relacionados de cada consulta. Por último, añades el campo calculado "InvFinal", según la fórmula que describes antes. Te podría quedar una SQL como esta:
SELECT [02LIBROS].CodLib, [02LIBROS].ISBN, [02LIBROS].Libro, [02LIBROS].InvInicial, CInt(Nz([SumaDeCantIng],0)) AS Ingresos, CInt(Nz([SumaDeCantEgr],0)) AS Egresos, CInt(Nz([CuentaDeValeNo],0)) AS Prestamos, CInt(Nz([CuentaDeDescargoNo],0)) AS Devoluciones, [InvInicial]+[Ingresos]-[Egresos]-[Prestamos]+[Devoluciones] AS InvFinal
FROM (((CInvDevoluciones RIGHT JOIN 02LIBROS ON CInvDevoluciones.CodLib = [02LIBROS].CodLib) LEFT JOIN CInvEgresos ON [02LIBROS].CodLib = CInvEgresos.CodLib) LEFT JOIN CInvIngresos ON [02LIBROS].CodLib = CInvIngresos.CodLib) LEFT JOIN CInvPrestamos ON [02LIBROS].CodLib = CInvPrestamos.CodLib;
Con esto creo que ya tienes un inventario como pides, o al menos, una idea para empezar a montarlo.
En cuanto a la segunda parte, destacar los libros que tienen préstamos, en un cuadro de lista como pretendes es imposible. Tienes la opción de mostrar los resultados en un subformulario continuo, en vez del cuadro de lista, y usar el formato condicional para destacar esos libros. En la web de Neckkito tienes un ejemplo de esto: ¿Combo de colores... o no?