Михаил Реутов
Постоянный посетитель
Всего сообщений: 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
|