i can't solve speed problem in MIcrosoft access
i want create table from xp2 but it is very slow.
xp table

Queries
xp1
SELECT xp.ID, xp.Date, Format$([xp.Date],"yyyymmdd") & Format([xp.ID],"00") AS ID2, xp.typeID, xp.Goods, xp.quantity, xp.Cost, xp.Cost/xp.quantity AS unitcost, IIf([typeID]="IN",[quantity],-1*[quantity]) AS rtquantity, xp.Company, xp.Cost/xp.quantity AS unitPrice, xp.[1PaymentDate], xp.[1PaymentAmount], xp.[2PaymentDate], xp.[2PaymentAmount], xp.[3PaymentDate], xp.[3PaymentAmount], IIf([typeID]="IN",-1*[Cost]+[1PaymentAmount]+[2PaymentAmount]+[3PaymentAmount],IIf([typeID]="OUT",[Cost]-[1PaymentAmount]-[2PaymentAmount]-[3PaymentAmount],0)) AS rtblanace, IIf([typeID]="IN",-1*[Cost],IIf([typeID]="OUT",[Cost],0)) AS rtpl
FROM xp;
xp2
SELECT xp1.ID, xp1.Date, xp1.ID2, xp1.typeID, xp1.Goods, xp1.quantity, xp1.Cost, xp1.unitcost, Val(DSum("[xp1].rtquantity","[xp1]","Goods = '" & [Goods] & "' " & "AND ID2 <= " & [ID2])) AS ∑quantity, xp1.Company, xp1.unitPrice, xp1.[1PaymentDate], xp1.[1PaymentAmount], xp1.[2PaymentDate], xp1.[2PaymentAmount], xp1.[3PaymentDate], xp1.[3PaymentAmount], Val(DSum("[xp1].rtblanace","[xp1]","Company = '" & [Company] & "' " & "AND ID2 <= " & [ID2])) AS ∑blanace, Val(DSum("[xp1].rtpl","[xp1]","Goods = '" & [Goods] & "' " & "AND ID2 <= " & [ID2])) AS ∑ProfitAndLossByGoods, Val(DSum("[xp1].rtpl","[xp1]","ID2<=" & [ID2])) AS ∑ProfitAndLoss
FROM xp1;