Parte de culpa de todo esto lo tienen los nombres, mira este codigo, es identico al tuyo, pero cambiando los nombres de query_lin_alb y query_alb, ya que no se corresponde con los datos que representa, y lo único que hace es "molestar". Es importante dar nombres descriptivos
Código Delphi
[-]
with DataModule_Fact_Albar do
begin
qry_Clientes.First;
Query_Clientes.DisableControls;
while not(qry_Clientes.Eof) do
begin
qry_Alb_A_Facturar.First;
qry_Alb_A_Facturar.DisableControls;
while not(qry_Alb_A_Facturar.Eof) do
begin
query_Lin_Fact.Append;
Query_Lin_FactCANTIDAD.Value:=qry_Alb_A_FacturarCANTIDAD.Value;
Query_Lin_FactCONCEPTO.Value:=qry_Alb_A_FacturarCONCEPTO.Value;
Query_Lin_FactPRECIOUNIDAD.Value:=qry_Alb_A_FacturarPRECIOUNIDAD.Value;
Query_Lin_FactTOTAL.Value:=qry_Alb_A_FacturarTOTAL.Value;
Query_Lin_Fact.Post;
qry_Alb_A_Facturar.Next;
end;
qry_Alb_A_Facturar.EnableControls;
qry_Clientes.Next; end;
qry_Clientes.EnableControls;
end;
Yo al menos lo veo más claro, para cada cliente, se mira los albaranes que tiene que facturar, y para cada uno de ellos se crea la linea de factura.
Tu problema reside en la relación que has definido entre qry_Clientes y qry_Alb_A_Facturar. Esa relación seguro que no está bien.
Si quieres ver mejor el fallo, da de alta 4 clientes, 3 albaranes por cada cliente y manda a facturar
Un saludo