You might try .MoveLast and .MoveFirst to insure the recordset is filled:
Set rs = db.OpenRecordset("Select ID from [Room Bookings] where Invoiced = true")
rs.MoveLast
rs.MoveFirst
'/note I also use an arbitrarily large number instead of .Recordcount
MyIds = rs.GetRows(99999999)