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

Select @p1,
..
@p15
...
Рейтинг: 0 / 0
21.07.2004, 11:43:24
    #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
21.07.2004, 11:44:38
    #32614278
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совет по рекордсетам
.....



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

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

Select @p1 p1,
....

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

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


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