Hola, vamos a ver, el primer insert que haces diría que está bien, pero en lugar de un Open lo que tienes que hacer es un ExecSQL. Es decir:
Código:
Dm.Factura.SQL.Add('Insert into Prova');
Dm.Factura.SQL.Add('Select * from Albaran');
Dm.Factura.SQL.Add('Where fecha Between 05/01/2003 AND 05/05/2003');
Dm.Factura.ExecSQL;
El segundo es incorrecto, porqué haces un Add de la línea 'Insert into Prova' sin haber vaciado antes el query, con lo que el query que intentas ejecutar te queda así:
Código:
Insert into Prova
Select * from Albaran
Where fecha Between 05/01/2003 AND 05/05/2003
Insert into Prova
Evidentemente ese query es incorrecto.
Saludos.