Imagino que debes tener una tabla donde tienes los movimientos de entrada y otra tabla donde tienes los movimientos de salida (o los dos movimientos en una tabla) pero ademas debes tener una tabla donde tienes las cantidades existentes en la cual debes tener en resumen (codigoarticulo, lote, fechavencimiento, cantidad).
Pues, esa tabla de "existencias" es la que debes consultar para saber los que tienes vencidos.
la consulta seria mas o menos.
Código SQL
[-]
select *
from tablaexistencias
where fechaactual >= fechavencimiento
Espero haberte despejado un poco el panorama.
Saludos.