|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
всем добрый день. может конечно придумаваю фигню, но прошу подсказать насколько это реально Суть в следующем: есть форма, в ней подформа (ленточная форма - таблица), в подформе эн-нное количество записей, отобранный стандартным механизмов подформы. С основной формой связано через поле связи. Для работы с данными подформы использую DAO.recordset. Понадобилось найти по одному полю максимальное значение, сделал через Код: vbnet 1.
. Второй вариант - сделать SQL-запрос в исходную таблицу, которая по факту содержит данные, отобранные в рекордесете подформы, то есть отборать по полю связи и найти MAX. Вопрос в следующем: реально ли сделать SQL-запрос в уже отобранный рекордсет, идея в том, что раз он уже отобран, то запрос должен быстрее обрабатываться, чем сделать такой же запрос непосредственно в исходную таблицу, где может быть несколько тысяч значений. Спасибо за ответы ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:15 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
может "слепить" из DAO.recordset программно временную таблицу и уже в нее сделать SQL-запрос, а после получения данных бахнуть таблицу, т.к. она больше не нужна ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:16 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов АлександрВопрос в следующем: реально ли сделать SQL-запрос в уже отобранный рекордсет,нет Ганов Александридея в том, что раз он уже отобран, то запрос должен быстрее обрабатываться, чем сделать такой же запрос непосредственно в исходную таблицу, где может быть несколько тысяч значений.нет Ганов Александрможет "слепить" из DAO.recordset программно временную таблицу и уже в нее сделать SQL-запроснет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:22 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов Александрможет конечно придумаваю фигнюда ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:23 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:27 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов Александрсделать SQL-запрос в исходную таблицуда ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:28 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
то есть единственные варианты цикл или SQL-запрос в базовую таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:28 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов Александр, нужно трезво оценить количество записей которое возможно будет отобрано. Но в общем случае курсором перебрать значения будет дольше чем обработать массив записей запросом (язык SQL заточен под работу со множеством) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:32 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов АлександрПонадобилось найти по одному полю максимальное значение, сделал через Код: vbnet 1.
А не проще создать в примечании подформы поле с выражением =MAX([Ваше поле])? Ганов АлександрВторой вариант - сделать SQL-запрос в исходную таблицу, которая по факту содержит данные, отобранные в рекордесете подформы, то есть отборать по полю связи и найти MAX Проще - функция DMax(). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:46 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов Александрвсем добрый день. может конечно придумаваю фигню, но прошу подсказать насколько это реально Суть в следующем: есть форма, в ней подформа (ленточная форма - таблица), в подформе эн-нное количество записей, отобранный стандартным механизмов подформы. С основной формой связано через поле связи. Для работы с данными подформы использую DAO.recordset. Понадобилось найти по одному полю максимальное значение, сделал через Код: vbnet 1.
. Второй вариант - сделать SQL-запрос в исходную таблицу, которая по факту содержит данные, отобранные в рекордесете подформы, то есть отборать по полю связи и найти MAX. Вопрос в следующем: реально ли сделать SQL-запрос в уже отобранный рекордсет, идея в том, что раз он уже отобран, то запрос должен быстрее обрабатываться, чем сделать такой же запрос непосредственно в исходную таблицу, где может быть несколько тысяч значений. Спасибо за ответы Как хранится отобранный рекордсет и причем тут агрегатные функции? :) Создавайте на подчиненной ленточной форме дополнительные поля, вычисляющие MAX, MIN,AVG,COUNT и.т.д. В источнике данных так и пишите =MAX ([ваше_поле_для_расчета]) итд. Создаются они в примечании подчиненной ленточной формы. А потом на главной форме создайте дополнительные поля, которые ссылаются на эти расчетные. По типу = [подчиненная_ленточная_форма].[вычисляемое_поле_из_примечания]. И без всяких лишних манипуляций с DAO , SQL и такой то матери вы получаете итоговые значения из подчиненной в полях на уровне главной. PS* DAO.Recordset он такой... может обидится на нецелевое использование)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:10 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Сергей Лалов, спасибо за подсказку. почему-то про поле я вообще не подумал, хотя применяю его в отчетах для подсчета ИТОГО по столбцам. Всем еще раз спасибо за то, что убрали "туман" из головы :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:40 |
|
использование Агрегатных функций с DAO
|
|||
---|---|---|---|
#18+
Ганов Александр, можно- тонкость только в одном - нужно переменную подформы создать в основной форме и работать с ней. Код: vbnet 1. 2. 3. 4. 5. 6.
для неё делаете рекордсет, лучше клон Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:37 |
|
|
start [/forum/topic.php?fid=45&fpage=37&tid=1610879]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 420ms |
0 / 0 |