На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67419256
10606
Hosts 3609201
2238
Visitors 53571736
10206

126


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Метод SetSel » в форуме: Макро   Просмотров: 9337
 
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 24.05.2010 11:52:48
 
 
В справке есть пример
Код

Sub CorPQN(raion,koeff)
    Set ptabl=Rastr.Tables("node"­)
    Set ppn=ptabl.Cols("pn")
    Set pqn=ptabl.Cols("qn")
    ptabl.SetSel("na="&raion)­
    ppn.Calc("pn*"&koeff)
    pqn.Calc("qn*"&koeff)
End Sub

ptabl - ссылка на объект Table по имени "node"
ppn и pqn - ссылки на столбцы в ptabl.
Если вызвать метод ppn.Calc("pn*"&koeff) без "выборки" ptabl.SetSel("na="&raion)­, то во всех узлах изменится активная нагрузка.
Если вызвать метод ppn.Calc("pn*"&koeff) с "выборкой" ptabl.SetSel("na="&raion)­, то активная нагрузка измениться в определенном районе.
Вопрос следующий. Можно предположить, что метод SetSel "меняет" объект ptabl, т.е. "сокращает" количество строк согласно выборке. Как метод SetSel воздействует на объект, который его вызывает ?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 24.05.2010 12:46:13
 
 
Объект, для которого можно сделать SetSel один - отображение таблицы данных. Когда Вы создаете объект вызовом типа Set spTable = Rastr.Tables("node"), в spTable оказывается отображение затребованной таблицы из базы данных. Часть операций с отображением напрямую выполняется и с таблицей. К числу таких операций относятся Size, AddRow, DelRow и т.д. Свойство SetSel ничего с таблицей не делает. Оно устанавливает критерий отбора для функций, которые умеют этот критерий использовать. К их числу относятся упомянутый Calc, FindNextSel, и т.д. Если Вы создадите два отображения одной таблицы (повторите описанный вызов как Set spTable2 = Rastr.Tables("node"), то spTable и spTable2 будут независимы в части выборки: можно задать разные выборки для этих двух отображений.
Таким образом SetSel напрямую не воздействует на объект. Он позволяет задать фильтр функциям, которые этот объект обрабатывают.
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 24.05.2010 13:10:04
 
 
Цитата
Евгений Машалов пишет:
Если Вы создадите два отображения одной таблицы (повторите описанный вызов как Set spTable2 = Rastr.Tables("node"), то spTable и spTable2 будут независимы в части выборки: можно задать разные выборки для этих двух отображений.

Хм. Получается, что каждый вызов Rastr.Tables("node") возвращает новый объект с одинаковыми данными и это лишь некое "отображение", "копия" основной таблицы ?
Цитата
Евгений Машалов пишет:
Он позволяет задать фильтр функциям, которые этот объект обрабатывают.

Как "убрать" фильтр, т.е. чтобы функции обрабатывали всю таблицу ?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 24.05.2010 16:36:14
 
 
Да. Это новая "обертка" одной и той же таблицы.
Убрать - ....SetSel ""
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 01.06.2010 08:52:37
 
 
Можно ли при помощи SQL-запросов "читать" данные из таблиц Растра ?
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 01.06.2010 18:16:36
 
 
Нет, нельзя
 
Профиль
Наверх
Иван Почечуев
Постоянный посетитель
 
Всего сообщений: 175
Дата регистрации: 24.06.2010
Создано: 11.09.2012 15:44:15
 
 
Подскажите можно ли сортировать выборку и если можно то как ?
 
Профиль
Наверх
Вадим
Гость
 
Создано: 11.09.2012 19:03:00
 
 
можно загнать данные из выборки в массив и сортировать как угодно, удобно сделать один из массивов именно номера строк в таблице, тогда больше не нужно будет использовать FindNextSel
 
Наверх



Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019