The general subject to google is "subselect". Here's how it might look in a standard SQL subselect query. Note that, since we're using the tblPrices table twice, it has to have two different aliases.
Code:
SELECT
tS.Company,
tS.Itemno,
tS.SaleDate,
tP.NewPrice
FROM
tblSales AS tS,
tblPrices AS tP
WHERE
( (tP.Company = tS.Company)
AND (tP.ItemNo = tS.ItemNo)
AND (tP.PriceDate =
(SELECT Max(tP2.PriceDate)
FROM tblPrices AS tP2
WHERE
( (tP2.Company = tS.Company)
AND (tP2.ItemNo = tS.ItemNo)
AND (tP2.PriceDate <= tS.SaleDate)
)
)
)
);