powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource у формы формируется динамически. Как применить фильтр?
23 сообщений из 23, страница 1 из 1
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311267
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как Саныч и просил, придумал, как мне кажется, красивое название топику. Ну а поговорим мы в нем о водке и бабах. Шучу.
Код: plaintext
1.
Оценил.
        Саныч.

Собственно сабжевая проблема. Не дает мне, засранец, применить фильтр к такой форме. Соурс подставляется в зависимости от условий разные строки SQL. При открытии формы (по двойному клику) все нормально. Открываю ее в режиме конструктора, а потом опять в режиме форму - все, трандец, соурса как не бывало. Я так понимаю, что и фильтр поэтому не применить, а надо. Как это сделать? Как сделать, чтобы соурс запоминался, что ли у формы??
P.S. Пока что меняю соурс формы, изменяя WHERE, но мне так не удобно, нужен фильтр.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311291
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная задача, а что создание MDE/ADE не планируется?
Иначе как тогда пользователь сможет Открываю ее в режиме конструктора ?

А вообще из Гетца (почти дословно):
"любые изменения внесенные в форму, открытую в режиме формы, программным способом не сохраняются. Чтобы сохранить изменения их нужно вносить когда форма открыта в режиме конструктора."
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311307
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То incold :
М-да, фиговенько. :( Я открывал форму в скрытом режиме, а потом туда соурсе запихиваю. (пробовал наоборот, говорит что форма не существует). Екарный бабай, че же делать?? Может есть у кого идеи?
По поводу mde или ade - нет, этого не планируется. Эту базу я пишу, что называется "для себя", чтобы мне упростить мою работу. Для создания adp-проекта, будем нанимать програмиста (или в 1С будем писать, еще не решено), который у будет делать все как надо. Но это будет через месяц, а мне сейчас надо работать. Поэтому и стараюсь ускорить этот процесс лично для себя.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311314
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я открывал форму в скрытом режиме, а потом туда соурсе запихиваю. (пробовал наоборот, говорит что форма не существует

Ну так написал же:
Чтобы сохранить изменения их нужно вносить когда форма открыта в режиме конструктора

Открываешь в конструкторе невидимую, пишешь туды соурс, сохраняешь, открываешь в нормальном виде.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311317
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
впихни все условия
в запрос
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311328
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Источник данных для формы тоже формируется динамически. Форма в ade открывается в Hidden, потом по кнопке есть возможность фильтра - всё работает нормально.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
With Me!RTable.Form
If Len(p_s_Name) >  0  Then
    .ServerFilter =  "Name LIKE '%" & p_s_Name & "%'" 
Else
    .ServerFilter = ""
End If
.Requery
End With
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311345
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То incold :
Можно попробовать. Ща сделаИм.
То Хам Трамвайный :
Это меня не совсем устраивает, я уже сказал. Мне нужен именно фильтр
То Hummer :
Ну если бы у меня все заработало с первого раза, то я бы не стал сюда постить, верно? ;-)
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311354
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем форму в режиме конструктора открывать-то? Тебе нужно значения сохранять? Не нужно. потому что при след. запуске другая строка может быть и фильтр другой.
Вот открытие формы.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim strSQL as string
strSQL =  "Select * from MyTable" 
DoCmd.OpenForm  "имя" , , , , , acHidden
With Forms![имя]
        ![имя подчинённой].Form.RecordSource = strSQL
        .Caption =  "бла-бла-бла" 
        .Visible = True
End With


Потом на основной форме - поле для ввода фильтра и кнопка с приведённым выше кодом. Вместо ServerFilter использовать обычный в мдб.
Должно всё работать.

Или нужно не совсем это?
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311357
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То incold :
Не-а, не фига не получается. :(((
Пишет, что "Объект <далее моя strSQL> не найден ядром базы данных MS JET. Проверьте правильность ......"
Чувствует мое сердечко, что это реальный облом. :(
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311364
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 TRoUbLEs
Сдается мне, что ты пытаешься сделать что-то такое, что плохо представляешь сам и используешь непонятные методы.

Напиши что нужно получить, а не то что не получается сделать.
Скорее всего делать нужно другим методом/способом.
Например как предложил Хаммер.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311366
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То Hummer :
нужно следующее. Сначала, форма открывается для всех записей (вернее там есть уже условие отбора по Контрагенту в strSQL), а вот дальне надо работать. При двойном клике на дате, применяем фильтр по текущей дате. При двойном клике по номеру машины применяем вдобавок фильтр по номеру машины. Еще раз кликаем по номеру машины, отменяем фильтр по номеру машины, оставляем только по дате, выбираем новую машину, кликаем.... и т.д.
Можно, конечно, менять strSQL, но меня эти пряники не радуют. :( С фильтром достаточно нажать кнопку "Отменить фильтр" и я снова вижу все записи, а для strSQL, придется где-то его сохранять. :(
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311381
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что мешает обрабатывать двойной клик по контролу и применять фильтр?
Код я уже написал.
Единственно, нужно заносить в переменную, что фильтр по номеру уже есть или ещё нет, и в зависимости от этого применять фильтр по текущему номеру или отменять его. Так же и для дат. И для всех остальных полей.
Т.е. строка фильтра - это как условие Where со всеми вытекающими.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311397
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То Hummer :
Списибо, дружище, но это я и сам допетрил делать. Интересен был случай именно с фильтром, т.к. можно по одному клику его отменить. А так пидется еще код писать, чтобы открывать изначальный strSQL без всех условий WHERE и скорее всего, вешать его на кнопку, т.к. форма открывается в табличном виде и повесить кнопку в примечание не получится, а делать ее подчиненной меня тоже не устраивает. :(
Еще раз спасибо.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311413
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты фильтр и будешь задавать - я написал про Where, потому что его нужно будет дополнять полями, по которым хочешь фильтровать (есть фильтр по дате, хотим добавить номер - присваиваем Me.Filter & [фильтр для номера]).
И всё.
Если вышлешь пример - сделаю.
Tosty@mail.ru
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311423
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня по кнопке Filtracia в главной форме вызывается процедура, которая фильтрует подчиненную табличную форму Child6 по тому полю, в котором стоит курсор. Обратно возвращает при повторном нажатии. Может пригодится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Private Sub Filtracia_Click()
Dim str As String
If (MLCFTRSwitch =  0 ) Then
    Me.AddInMailList.Visible = False
    Me.Choose.Visible = False
    Me.IzSdelki.Visible = False
    Me.NavigationButtons = False
    FTR = Me!Child6.Form.Filter
    MIDA = Me!Child6.Form.McontentID
    ContraName = Me!Child6.Form.ActiveControl.Name
    Select Case Me!Child6.Form.ActiveControl.Name
    Case  "PersonSurNameRus" 
    Me!Child6.Form.Filter =  "(([_MailListContent].PersonID ="  & Me!Child6.Form.PersonID &  "))" 
    Case  "NickName" 
    Me!Child6.Form.Filter =  "(([_MailListContent].CompanyID ="  & Me!Child6.Form.CompanyID &  "))" 
    Case  "FilialNameRus" 
    Me!Child6.Form.Filter =  "(([_MailListContent].FilialID ="  & Me!Child6.Form.FilialID &  "))" 
    End Select
    
    MLCFTRSwitch =  1 
    Me!Child6.Form.OrderBy =  "ListNo" 
    Me!Child6.Form.FilterOn = True
    Me!Child6.Form.OrderByOn = True
Else
    Me.AddInMailList.Visible = True
    Me.Choose.Visible = True
    Me.IzSdelki.Visible = True
    Me!Child6.Form.Filter = FTR
    MLCFTRSwitch =  0 
    Me.NavigationButtons = True
End If
    str =  "McontentID="  & MIDA
    Me!Child6.Form.Recordset.FindFirst str
    Me!Child6.Form.Controls(ContraName).SetFocus

End Sub
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311501
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То Hummer :
Спасибо, но пример, к сожалению, выслать не смогу, т.к. коммерческая тайна (не сама база, конечно, а данные). Хотя... может если только из дома, когда ее немного почищу. В любом случае, сасибо за предложение.
То Лифчик :
Спасибо. С этим буду разбираться дома на выходных.
То All :
На данный момент всем спасибо, уже нет времени на разборы полетов, надо поработать. На выходных напишу что и как.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32311980
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Я ох..еваю!" - сказала пиписка, надуваясь"
(с) вместо пролога
Это ж пиз..дец какой-то!!! Я вчера до полтретьего ночи е...ался с этим фильтром и сегодня с утра. А сейчас, появилось пару свободных минут и все сделал за полчаса!!!! Причем РекордСоурс как был динаимическим так и остался. но Me.Filter=string и Me.FilterOn заработали без проблем!!!!!! Это пиз..дец!!!!
Правда мне только что Аксес с 2000 проапгрейдили до 2002 (ХР), но дома-то у меня стоит именно ХР, так что я думаю, что тут это не причем.
Нет, ну это точно какой-то пиз..дец!
P.S. Простите за мат, но других словей у меня нету.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32312112
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ан нет, погорячился я!!! Как ни работало, так не фига и не работает. :(( Просто случайно у формы сохранил РекордСоурс и если я применял фильтр, то он применялся к сохраненному соуру, а не к тому, что я только что открыл. :((
Тогда такой вопрос: Как сохранить отрытую форму в режиме конструктора, а потом ее привести в табличное состояние? Если не затруднит, то черканить пару строк кода.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32312121
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Docmd.close acform, "имя", acSaveYes
Docmd.OpenForm

Всё, что написано выше - ДОЛЖНО РАБОТАТЬ! Проверяйте ещё раз.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32312168
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне только кажется, что не надо злоупотреблять открытием форм в режиме конструктора. Потом концов можно не собрать (ИМХО)
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32312273
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Все, через 5 минут буду собираться пиСтоФать домой и дому уже буду разбираться, скорее всего завтра.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32312305
Гео
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пис.. пизз..
Иттить!
Иттить домой!
Ик.
...
Рейтинг: 0 / 0
RecordSource у формы формируется динамически. Как применить фильтр?
    #32312698
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, не стал ИПаться и сделал 4 формы с фиксированным соурсом (абсолютно одинаковые) и дальше понавешал фильтров на даблклики, аж 7 штук в каждой форме. ;-)
То Лифчик :
Код почитал, разобрался, локально сохранил, но пока решил не применять. Если базу нам будет писать наемный человек, то пусть себе пишет, если нет... ну тогда зимой буду свою переделывать и совершенствовать, вот тогда и воспользуюсь. А пока - спасибо.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource у формы формируется динамически. Как применить фильтр?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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