powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтрация в подчиненной форме
10 сообщений из 10, страница 1 из 1
Фильтрация в подчиненной форме
    #32880249
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация такая (AC2000, проект ADP):

есть форма master-detail. С помощью контролов в главной форме пользователь может накладывать на подчиненную фильтры. Например так:

Внедренный1.Form.Filter = "fk_section = " & edSection
Внедренный1.Form.FilterOn = True

Все хорошо работает, но только если свойство "Источник записей" подчиненной формы указывает непосредсвенно на таблицу. А вот если вместо нее указать SQL запрос (пусть даже SELECT * FROM), то все отваливается. Пишет "Возникла ошибка при обращении к свойству или методу объекта OLE.".
Также скажу, что в MDB такой код работал прекрасно. В чем тут может быть проблема?

И раз такое дело, в догонку еще один вопрос. Раз уж он пишет "при обращении к свойству или методу объекта OLE", то как можно узнать что это за объект и каков код ошибки. В данной ситуации я думаю, что имеется ввиду объект ADO, но вот коллекция CurrentProject.Connection.Errors подозрительно пуста...

Буду признателен за помощь.
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880290
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МОЖЕТ глюки с индексами, хотя не факт. Но всё равно проверь.
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880302
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с такой ошибкой не сталкивался, потому что люблю делать по-другому. Обычно "управляющих" контролов на форме много, да они все разные. Но все влияют на представление данных в подчиненной. Я формирую строку select, а конкретно ее чать where ручками, постепенно склеивая нужные условия. А потом сажаю подчиненную форму на новый Recordsource.

У вас сказано, что имеют место мастер-деталь формы. Тогда еще можно загнать условия отбора в LinkChild/MasterFields.

Вот, прямо не ответил, но два пути обхода подсказал. Может, пригодится...
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880448
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaМОЖЕТ глюки с индексами, хотя не факт. Но всё равно проверьХм... а какие возможны глюки с индексами?

Программист-ЛюбительЯ с такой ошибкой не сталкивался, потому что люблю делать по-другому. Обычно "управляющих" контролов на форме много, да они все разные. Но все влияют на представление данных в подчиненной. Я формирую строку select, а конкретно ее чать where ручками, постепенно склеивая нужные условия. А потом сажаю подчиненную форму на новый Recordsource.Спасибо за рекомендацию. Просто это не совсем "честный" способ :). Я хотел бы использовать локальный фильтр, чтобы поменьше гонять данные по сетке. Но все идет к тому, что придется сделать именно так.

Программист-ЛюбительТогда еще можно загнать условия отбора в LinkChild/MasterFields.Попробовал. Появлявляются такие глюки.... на словах не объяснишь... короче в полях формы и починенной формы появляется полная чепуха. Очевидно, я что-то делаю не так, но вот как правильно, не понятно.
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880458
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например 2 PK, или повторяющееся поле на ключе ну и т.д.
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880503
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman10Я хотел бы использовать локальный фильтр, чтобы поменьше гонять данные по сетке.
А вы уверены, что они не гоняются при использовании св-ва Filter?
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880552
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сочинение строки WHERE отбирает с сервера только те данные, которые подпадают в ваше условие. В случае разных фильтров это неявно делается аксессом.
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880727
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПА вы уверены, что они не гоняются при использовании св-ва Filter?Уже нет... :) Хотя вот у Гетца, 2-й том написано, что "... сугубо локальная клиентская технлогия, не предусматривающего никакого взаимодейсвтия с сервером".

На самом деле я проблему уже решил. Нужный мне SQL запрос я просто оформил в виде view, и уже его указал в качестве источника записей подчиненной формы. Вероятно, некие высокие моральные соображения не позволяют Акцессу фильтровать рекордсет, если он получен явным указанием текста запроса. Будемь знать :).

Больше спасибо всем откликнувшимся на мой пост.
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880745
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Уже нет... :) Хотя вот у Гетца, 2-й том написано, что "... сугубо локальная клиентская технлогия, не предусматривающего никакого взаимодейсвтия с сервером".


Из чего следует вывод, что даже при жестком Filter с сервера будут утянуты все записи ?
...
Рейтинг: 0 / 0
Фильтрация в подчиненной форме
    #32880828
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-Любитель автор
Уже нет... :) Хотя вот у Гетца, 2-й том написано, что "... сугубо локальная клиентская технлогия, не предусматривающего никакого взаимодейсвтия с сервером".


Из чего следует вывод, что даже при жестком Filter с сервера будут утянуты все записи ?
Это же не серверный фильтр (Form.ServerFilter)
Раз фильтр локальный - то и фильтруется локально. А с сервера идет все подряд.

-------------------------------

Кстати, я вот тут сижу и ради интереса пытаюсь от этого избавиться.
Мыслил я, что если повесить форму на отсоединенный рекордсет - то он не будет к серверу обращаться. Хрена лысого.
Имею код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Option Compare Database
Option Explicit

Private Sub Command4_Click()
    Me.Filter = Nz(Me!fltr.Value, "")
    Me.FilterOn = True
End Sub

Private Sub Form_Open(Cancel As Integer)
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.Open "тута коннекшн"

    Dim rst As ADODB.Recordset
    Set rst = New ADODB.Recordset
    rst.CursorLocation = adUseClient ' на всякий случай
    rst.Open "select * from t", cnn, adOpenStatic, adLockReadOnly
    Set rst.ActiveConnection = Nothing

    cnn.Close ' тож на всякий случай

    Set Me.Recordset = rst
End Sub
На каждое нажатие кнопки - имею результат работы профайлера:
профайлерselect * from t
select * from t
EXEC sp_MShelpcolumns N't', NULL, N'id', 1

Ну и как это у него получается - обновлять отвязанный рекордсет, висящий на закрытом коннекшене?
Ниче не понимаю

Аксес 2003 SP1, MS SQL 2000 SP3a
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтрация в подчиненной форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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