Есть таблица Access состоящая, скажем, из 10 записей. Обращение к записям происходит в произвольном порядке (через Rnd по номеру строки). Повторное обращение к уже использованной записи не допускается. Добавил в таблицу дополнительное поле "Type" где фиксируется обращались ли уже к этой записи или нет. Удалять записи из таблицы нельзя.
Вот стою я на перепутье.
Либо создать массив и перегонять эти записи в массив и уже с массивом работать, но я не знаю как удалять, допустим 4 или 7 (не первую и не последнюю строку этого массива).
Либо создать вторую таблицу с такой же структурой как и первая, соответственно перегонять туда записи из первой таблицы и работать уже со второй таблицей (использованные строки удалять из нее).
Если таблица будет большая, то второй способ будет тормозить, ведь вторую таблицу где-то хранить надо, а Access постоянно Flush'ит, для надёжности. Поэтому просто загоняй всё в массив (если конечно памяти много), а потом - зануляй элементы. Кстати, ноль в этом случае послужит и флагом обращения к записи...
Но вот в чем вопрос. Если к 4 записи было обращение, флаг там будет равен 0, то где вероятность, что Rnd снова не выдаст номер этой записи. Можно сделать проверку на флаг и снова запускать Rnd, пока она не покажет другую цифру.
Я хотел немного по другому. Не отмечать использованную запись, а удалять ее и кол-во строк массива делать -1.
Проблема в том, что я не знаю как удалять n-ую строку массива.
A ее и нельзя удалять, можно обрезать с краю или добавить, используя Preserv.
А чем тебе поможет удаление строки из массива? Случайное(псевдослучайное) число будет выбрасываться в независимости от твоего желания. Что я бы предложил так это во использовать Collection, там можно и добавлять и удалять, это как раз твой случай.
A ее и нельзя удалять, можно обрезать с краю или добавить, используя Preserv.
А чем тебе поможет удаление строки из массива? Случайное(псевдослучайное) число будет выбрасываться в независимости от твоего желания. Что я бы предложил так это во использовать Collection, там можно и добавлять и удалять, это как раз твой случай.
вот тут и пришлось писать функцию по обработке записи коллекции. Значения этих полей сохраняется в переменные, запись коллекции удаляется и дальше работают переменные. Как процедура отрабатывает, берется следующая запись коллекции и все по новой.
Для добавления в коллекцию кустарной переменной нужно записывать её как класс. Для этого в модуле класса объяви эти переменные и добавляй в коллекцию копии модуля класса.