Страница 1 из 1

Вопрос о преселекте элементов массива Workflow

Добавлено: 30 ноя 2007, 09:55
Александр
не подскажите как можно сделать следующую вещь
есть запрос - есть 4 фильтра
и мне нужно вывести в массив все результаты запроса + подсветить на экране те из них которые соответствуют фильтрам чтобы потом уже из подсвеченных элементов - чекбоксами отобрать только те - что нужны для дальнейшей работы....
именно подсветить а не каждый раз перенабирать массив по фильтрам

просто мне кажется что с подсветкой это будет работать быстрее...? (т.к. массив данных уже создан и его просто надо раскрасить) а может не будет, а может это вообще сделать нельзя??
что скажите?

Добавлено: 30 ноя 2007, 11:40
Disillusioned
Наверное, здесь уместно будет создать глобальную временную таблицу. Результат выборки в нее помещаем, затем используем эти результаты для любых необходимых целей (формируем списки, фильтруем массивы, определяем индексы для подсветки и т.д. и т.п.) без повторной выборки из структур Лоции и без необходимости использования циклических действий, которые отрабатывают, прямо скажем, не очень быстро.

Добавлено: 30 ноя 2007, 12:41
Александр
слушай такой еще вопрос - создам я временную таблицу - а как она себя ведет? в смысле как обновляется - это сервер делает сам при каждом изменении данных вообще или нужно какой то триггер вешать к этой таблице на изменение строго определенных данных?

нет а если в начале работы просто набрать массив (не выводя его на форму) и потом остальные набирать из него по фильтрам или еще как - это будет медленно? -в основном массиве порядка 1000 записей х 4 столбца

Добавлено: 30 ноя 2007, 14:00
Disillusioned
Глобальная временная таблица интересна тем, что данные в ней разделены по соединениям с БД (т.е. один пользователь не видит данные другого). Соответственно при разрыве соединения данные удаляются. В остальном все то же самое, что и обычная таблица, т.е. данные автоматом не обновляются, просто сначала результаты выборки укладываем во временную таблицу, а уже потом из временной таблицы закачиваем в массивы. Надо обновить данные - очищаем временную таблицу и заполняем ее данными заново.
Здесь надо оговорится: Лоция создает несколько соединений с БД, притом какие для чего не известно, а глобальная временная таблица будет функционировать только в рамках одного. Т.е. если окажется что, например, функция загрузки данных в массив и функция f_ExecSQLSelect работают по разным коннектам, ничего мой подход не даст. Но все это легко проверить на практике.
Можно, наверное, работать и с массивом напрямую, но это будет значительно медленнее (по моему скромному опыту работы с циклическими действиями - на порядки) и муторнее (SQL мой любимый язык программирования).