Saludos
Seria bueno que en vez de anteponer la insercion, lo pongas cuando al instante vayas a introducir datos. Pon la tabla detalle en insercion despues de asiganar la variable
num. Prueba.
Código Delphi
[-]num := tabla_ventas.Fields[1].AsInteger;
tabla_detalle.insert;
tabla_detalle.FieldByName('num_venta').AsInteger := num;
tabla_detalle.FieldByName('SubTotal').AsInteger := dbgrid1.Fields[5].AsInteger;
tabla_detalle.Post;
end;