Otra opción es utilizar una vista o unir las tablas con JOINs y hacer los bucles directamente con ella. Pero esto depende del motor de base de datos que utilices.
En Firebird (o cualquier otro motor SQL):
Código SQL
[-]select c.asiento,c.fecha,d.linea,d.debe,d.haber
from conta_asientos c
join conta_asientos_deta d
on c.asiento=d.asiento
Y finalmente (también dependiendo del motor de base de datos) es generar un procedimiento almacenado al cual le pasas los datos (fecha_desde, fecha_hasta y cuenta) y te devuelve los datos que necesitas ordenados y calculados.