Я, может быть, слишком прост, чтобы понять проблему, но мне кажется, что если вы хотите получить одно случайное изображение, то все, что вам нужно сделать, это сгенерировать одно случайное число, которое каким-то образом вводится в таблицу доступных изображений. тебе. Если на выбор доступно 100 изображений, вам нужно случайное число от 1 до 100.
Итак, вы генерируете это число:
Round(100 * Rnd(), 0)
... и затем вы используете это, чтобы получить изображение. Если в таблице изображений есть Autonumber PK, вы можете просто использовать это, и это будет ОЧЕНЬ БЫСТРО. Если ваше изображение находится в подчиненной форме, вы можете установить для LinkMaster буквальное значение PK, и это позволит получить изображение для вас.
Что касается функции Randomize (), я не могу заставить ее повторяться, когда я вызываю Rnd () в окне Immediate, поэтому я не уверен, нужна ли она.
Но все это кажется мне очень простой операцией, которая может не требовать SQL или использования набора записей. Если вы идете по маршруту набора записей, я бы порекомендовал открыть его один раз и сохранить его, а затем перемещаться по нему каждый раз, когда вам это нужно, а не открывать его повторно каждый раз, когда вам нужно новое изображение. Но если бы я делал это, я бы упростил для себя все как можно проще и пошел бы по пути Autonumber PK для изображений. Если вы хотите сделать это в SQL, это будет:
SELECT Images.ID, Images.Path
FROM Images
WHERE Images.ID = Round(100 * Rnd(), 0)
Obvoiusly, вы бы изменили 100 на соответствующий номер. Если вам нужна Randomize (), то замените прямой Round(100 * Rnd(), 0)
на функцию, которая вызывает Randomize () и затем возвращает Round(100 * Rnd(), 0)
.
Но, может быть, я упускаю некоторые важные детали, которые делают это намного сложнее, чем мне кажется.