powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Совет по рекордсетам
15 сообщений из 15, страница 1 из 1
Совет по рекордсетам
    #32614228
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем трям!
MS SQL - Access 2000 (ADO)
Есть форма - простая, без источника данных со множеством полей, каждое из которых вычисляется программно запросами. С переходом с 97 на 2000 решил оптимизировать процесс и засунул все запросы в хп на сервере. С целью минимизировать количество открытий рекордсетов засунул их в одну хп и обращаюсь к ним через NextRecordset.
А теперь вопрос - а есть ли вообще разница между - если на каждый рекордсет своя хп или все запросы в одной хп.
Интересует как с точки зрения программного выполнения в access (скорость), так и выполнения хп.
Зы: если непонятен вопрос, распишу подробней...
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614242
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что один запрос лучче, чем несколько.
Непонятно, зачем несколько наборов, почему одним набором не вернуть?
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614263
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем так. Запросов много (~15) и в один их не объединить...
Поэтому есть варианты на каждый селект делать хранимку или в одной вернуть все сразу типа:
Select....
Select....
....
Select...
и перебирать их с помощью NextRecordset.
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614272
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запросов много и их не объединить
Select @p1=...
From...
..
Select @p15=...
From ...

Select @p1,
..
@p15
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614276
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно всё вернуть одним набором. Просто в ХП сделайте переменные, выводите их в селекте, а алиасы полей это имена контролов на форме (если нужно, то и тип контрола можно добавлять).
Потом примерно вот так - чтобы все контролы не перечислять:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim fld As ADODB.Field

With cmd
    .ActiveConnection = CurrentProject.Connection
    .CommandText = "MySP"
    .CommandType = adCmdStoredProc
    .Parameters.Append .CreateParameter("@MyParam", adInteger, adParamInput, , MyValue)
    Set rst = .Execute
End With
For Each fld In rst.Fields
    Me(fld.Name).Value = fld.Value
Next
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614278
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.....



SELECT @p1 as A,@p2 as B, @p3 as C ....
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614281
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конце ХП сделайте один селект:
Select @p15 AS NameFld1, @p15 as NameFld2
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614304
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Shark, Hummer спасибо за идею, надо подумать.
Дело в том что не все select-ы возвращают 1 значение среди них есть и наборы тоже...(ну это уже мои проблемы по оптимизации :) ). Ну а всетаки, чисто теоретически есть разница между открытием нового рекордсета и NextRecordset (одного и того же конекшена). Сорри за настырность, просто на будущее...
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614322
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полагаю, что да, один запрос к серверу лучше десяти.

>Me(fld.Name).Value = fld.Value
Мне кажется, что контролы и филды лучче называть по разному, чтобы знать, что имеешь в виду, когда пишешь Me!myField
те я бы написал че-нибудь такое
Me("c" & fld.Name).Value = fld.Value
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614336
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NextRecordset IMHO лучше, ибо логика собрана в одной ХП ну и чуть-чуть (незаметно) быстрей будет
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614338
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Не все селекты возвращают одно значение
Кто мешает написать
Select @p1=..,
@p2=...
..
From...

Select @p1 p1,
....

Те никто не мешает возвращать селектами больше одного значения
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614372
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы. Пойду думать дальше :)
Дело в том что на самом деле первичных полей для заполнения ~50, а запихивать в одну хп стока запросов имхо тоже не есть гуд, так например:
Один из наборов возвращает :
Select id, Sum(summa) as Summa From... Where... Group by id
где id ~ 8 и на клиенте я просто пробигаю по этому рекордсету выбирая значения, а сесли в хп присваивать каждому свой селект то запросов будет на 7 больше (имхо это хуже). Или я туплю?
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614389
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Или я туплю
Не, не тупишь, все так и есть. В твоем случае(очень необычный случай) может и правда есть смысл вернуть больше одного набора.
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614422
lsnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Shark
В том то и дело, эта форма есть результат работы обекта, который производит и потребляет продукцию причем нормы расхода зависят от произведенной продукции, режима работы и могут меняться во времени... :) Вот и имеем кучу констант которые меняються во времени и на основе их и данных о работе расчитываем кучу результирующих данных (ну ооочень разные по своему характеру) конечная цель которых получить экономический эффект от работы объекта.
Дело еще осложняется тем что когда создавалась структура базы, было слабое представление как это будет крутиться, поэтому структура немного кривовата, вот и приходиться изворачивать :). Надо будет над структурой поработать!
...
Рейтинг: 0 / 0
Совет по рекордсетам
    #32614686
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexey Sh
И так и эдак логикак в одной ХП, не так ли?:)

2 Shark
Дело вкуса.
Обращайся к полю Me., а к данным Me! - мне так удобнее, к примеру, когда я все данный из контролдов в where-условие передаю - не нужно лишнюю операцию делать по удалению префикса или суффикса...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Совет по рекордсетам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]