Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 24.04.2010
Сообщений: 77

Вопрос по фильтрам!

18.06.2010, 01:11. Показов 1795. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть табличная подформа A1 на форме A2, кроме того на форме A2 есть lable, caption которого должен содержать сумму поля из показываемых в таблице A1 записей.
Вопросы:
1. Как пробежаться по Recordset’у – полному и
2. как сделать тоже с отфильтрованным Recordset’ом

заранее благодарен за помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.06.2010, 01:11
Ответы с готовыми решениями:

Фильтрация ADO по 2 фильтрам сразу
Здравствуйте, я тут делаю программу. БД отдельна а интерфейс весь в делфи будет. Я пока что просто написал так. ...

Фильтрация DataGridView по четырём фильтрам
Здравствуйте. В приложении для практики необходимо сделать фильтрацию по четырем критериям для любой их комбинации. Пробовал прописывать...

Пишу курсовую по цифровым фильтрам (Баттерворта)
Пишу курсовую по цифровым фильтрам (Баттерворта). Может быть такой ФНЧ - Scope (показывает непрерывный сигнал с вых. Сумматора),...

14
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
18.06.2010, 13:12
Используйте метод формы RecordsetClone, а для adp посмотрите и
http://am.rusimport.ru/MSAccess/topic.aspx?ID=362
0
1 / 1 / 0
Регистрация: 24.04.2010
Сообщений: 77
19.06.2010, 15:55  [ТС]
спасибо, однако предложенный вариант (в http://am.rusimport.ru/MSAccess/topic.aspx?ID=362) мне не подходит по след. причинам. Предлагается след. код, цитирую:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Dim Filt As String
Dim Pbeg As Long, Pend As Long
Filt = Me.Filter
'----- замена кавычек на апостроф ------
Do While InStr(1, Filt, '''')
Mid(Filt, InStr(1, Filt, ''''), 1) = '''
Loop
'----- обработка поля даты --------------
Pbeg = InStr(1, Filt, '#')
If Pbeg <> 0 Then
Pend = InStr(Pbeg + 1, Filt, '#')
Mid(Filt, Pbeg, 1) = '''
Mid(Filt, Pend, 1) = '''
End If
'----------------------------------------
'MsgBox Filt
Me.ServerFilter = Filt
Me.Requery
End Sub
При установке фильтра это вроде бы работает (или не это, но записи фильтруются), однако при удалении установленного фильтра в послед. строке кода (Me.Requery) возникает ошибка (err=2725)

Мой recorset происходит из хранимки (наверное следовало уточнить это сразу), а в корявом Help’е Access’а сказано, что ServerFilter для хранимок – игнорируется. Непонятно однако из-за чего игнорируется он при установке и из-за чего не игнорируется при удалении. Но ведь даже не это главное.
Я понимаю так, накладывая фильтр на форме и нет необходимости перезагружать данные с сервера, ведь форма сама может ходить по фильтрованному Recordset, тогда и я наверное должен мочь повторить программно тот же процесс.

Вопрос только как?
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 47
20.06.2010, 15:45
М.б. все-таки в подчиненной форме в примечании формы вставить свободное поле где данные=Sum([Summ])?
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 47
20.06.2010, 15:47
М.б. все-таки в подчиненной форме в примечании формы вставить свободное поле где данные=Sum([Summ])?
Имеется ввиду Summ - это имя поля по которому нужна итоговая сумма
0
1 / 1 / 0
Регистрация: 24.04.2010
Сообщений: 77
21.06.2010, 01:44  [ТС]
to k_na:
Вы имеете в виду SQL функцию SUM()? Это хорошо для всего набора данных. Но как я смогу посчитать те записи, которые пользователь отфильтровал? Ведь ServerFilter на катит в случая с хранимками.

Или есть функция SUM() в VBA, пардон я в Access VBA – профан.
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 47
21.06.2010, 11:58
В подчиненной форме в примечании формы вставить свободное поле где данные=Sum([ПолеПоКоторомуНужна сумма])- сделайте так и посмотрите что она суммирует. Суммируется то, что вибирается в подчиненной форме, в том числе и с фильтром.
0
1 / 1 / 0
Регистрация: 24.04.2010
Сообщений: 77
22.06.2010, 01:51  [ТС]
to: k_na

Кладу на подчиненную форму textbox, делаю ему
Code
1
controlsource = sum([my_fild])
запускаю, фильтрую и вижу тот же результат, что и без фильтра. Может я что то не понял?
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 47
22.06.2010, 11:26
У меня на пробном примере все фильтруется.
Сами записи-то отфильтрованы?
Дайте свой E-mail.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
22.06.2010, 11:28
Так ведь нужно ещё указывать для чего Sum: для всего, группы или отсутствует (свойство «Сумма с накоплением» (RunningSum))...
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 47
22.06.2010, 11:35
Ничего кроме поля в приложении формы с данными =Sum([ПолеПоКоторомуНужнаСумма]).По E-mail пошлю пример.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
22.06.2010, 13:42
Прошу прощения, я было об отчётах, но товарищу, похоже, нужно в табличной форме для сетевого варианта...
0
1 / 1 / 0
Регистрация: 24.04.2010
Сообщений: 77
24.06.2010, 01:44  [ТС]
Совершенно верно, мне именно и надо «в табличной форме
для сетевого варианта». Т.е. мой recordset выходит из хранимки (M$ SQL), следовательно, ServerFilter не катит. Подсчитывать мне надо не только сумму, но это не важно.
Мне бы хотелось подсчитать (например) sum для «для всего, группы, ...»
Я не знаю, что такое «Сумма с накоплением» (RunningSum)».
Но если вас не затруднит на примере объяснить – буду признателен.

С Уважением ..
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 47
24.06.2010, 15:50
см http://kozin1.narod.ru/newsite/index.html
Есть раздел 'Пример серверного фильтра и решения проблемы с рекордсетом формы и флажком'
0
1 / 1 / 0
Регистрация: 24.04.2010
Сообщений: 77
25.06.2010, 21:25  [ТС]
Большое спасибо за помощь и предоставленные материалы, однако моя проблема не решена.
To k_a: спасибо за ваш пример. К сожалению у меня стоит MSDE, а он как известно идет без Nordwind и Office у меня не русский, поэтому меня издавна терзает проблема русских имен в элементах управления (Access ругается не все, что он не в состоянии понять). Поэтому я не могу адекватно оценить Ваш пример. Однако я могу (в отдельных случаях, не могу) просмотреть окно и код не запуская их.
Если я не ошибаюсь, вы берете данные из Table или VIEW, а не из Stored Procedure. Вот что я проверил на своей базе:

ниже я предлагаю сделанные мною выводы и ожидаю вашего общего мнения на эту тему:

Создаю Procedure и View с одинаковой SELECT. Если данные берутся из View, то при помощи ServerFilter и Requry можно получить
=SUM([fild_name]). Меняем источник данных на Procedure и
=SUM([fild_name]) – не меняется при фильтровании формы. Но ЭТО ТОЛЬКО ПРОБЛЕМА N1

ПРОБЛЕМА N2:
Access в состоянии фильтровать записи без Requery (зачем таскать их с сервера без необходимости) надо (я только не знаю как) получить доступ к отфильтрованным Access’ом записям

ПРОБЛЕМА N3:
Если доступ нельзя получить (или не известно как), то мне кажется наиболее разумным решение - Dynamic SQL, т.е. использовать строку Filter для преобразования ее в Клаузу WHERE по синтаксису TSQL. И тогда можно поручить подсчет SUM (AVG, и т.д.) не Access’у а SQL Server. Однако и здесь я вижу одну проблему: для представления записей отвечающих фильтру и для подсчета статистики по группам отфильтрованных записей необходимо 2 разных запроса (т.е. связка таблиц – та же, WHERE – тот же, но + Group by и следовательно агрегатные функции в SELECT)

Именно этот вариант я буду использовать. Хотя очень хочется решить проблему N2, тогда не будет необходимости дважды (а то и более) обрабатывать один запрос.

Жду Ваших высказываний / мнений.

С Уважением ..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2010, 21:25
Помогаю со студенческими работами здесь

Вывод текста (CSS) в textbox по фильтрам
Имеется программка, которая открывает css файлы. Пока только научился весь исходный css в textbox. Можно ли как нибудь отфильтровать...

Поиск файлов по фильтрам на удаленном компьютере
Доброго времени суток! В ходе изучения C#, столкнулся с такой задачей. Нужно организовать поиск файлов по меткам. При этом используя...

ищу пример, урок, литературу по фильтрам каталога
все курсы пройти категорически нет времени. Н сайте битрикса написано ,что надо гдето 2 месяца на изучение движка. мне надо агрессивно...

Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves)
Есть набор форм, назовём их 'интерфейсными'. Есть отдельная форма, назовём её 'хранилищем'. Сама по себе она нигде не используется: лишь...

VBulletin [ВОПРОС]: Меню и вопрос при регистрации
Помогите пожалуйста. У меня vbulletin 4.0.7 и после установки в верхнем меню есть лишняя навигация. Например: Главная Форум Blogs ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru