powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заменить часть текста в тексте фильтра формы
13 сообщений из 13, страница 1 из 1
Заменить часть текста в тексте фильтра формы
    #40059577
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Хочу вставить фильтр формы в sql запроса, чтобы в итоге получить сохраненный запрос, отфильтрованный как мне нужно.
Т.е. я фильтрую запрос в форме и передаю этот фильтр в запрос.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[/SRC]
Private Sub Кнопка32_Click()
Dim filt
filt = Me.Filter

'В полученной переменной нужно заменить источник полей и кавычки
'Сейчас получается, что полученный текст фильтра Me.Filter выглядит так: ((([Запрос1].Поле1)="ФильтрТекст"))
'А его нужно заменить на следующий: ((([Табл1].Поле1)='ФильтрТекст'))
'НЕ ЗНАЮ, КАК ЭТО СДЕЛАТЬ.


'Далее подставляю фильтр в запрос и все.
    CurrentDb.QueryDefs("Запрос1").SQL = "SELECT [Табл1].Поле1, [Табл2].Поле2 FROM Табл1, Табл2 " _
    & "WHERE " & filt & " _
    & "ORDER BY [21].TEst1, [22].Test2;"
    
End Sub
[SRC vba]



Это возможно? Если да, то как?
Заранее спасибо!
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40059583
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал. Все работает.
Может коряво. Если кто подскажет, как сделать красивей. Но главное - работает!!!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[/SRC]
Private Sub Кнопка32_Click()
Dim filt
Dim filt2

filt2=Replace(Me.Filter, Chr(34), Chr(39))
filt = Replace(filt2, "Запрос1", "Табл1")

'Далее подставляю фильтр в запрос и все.
    CurrentDb.QueryDefs("Запрос1").SQL = "SELECT [Табл1].Поле1, [Табл2].Поле2 FROM Табл1, Табл2 " _
    & "WHERE " & filt & " _
    & "ORDER BY [21].TEst1, [22].Test2;"
    
End Sub
[SRC vba]
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40059586
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Greg987,
Код: vbnet
1.
SELECT [Табл1].Поле1, [Табл2].Поле2 FROM Табл1, Табл2 "


Если-б еще знать какой смысл в декартовом произведении("перемножении" каждого значения поля одной таблицы(с неким отбором) на все содержимое поля другой таблицы) может лучше JOIN-но не зная решаемой Вами задачи трудно "ванговать"
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40059847
Greg987, а где вы используете этот запрос? От ответа зависят и советы.
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40059993
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
почему перемножении?
Обычный запрос на выборку с фильтрацией.
Просто я хочу отфильтровать запрос в форме и эту фильтрацию передать в запрос на добавление.
Единственное, что я придумал, это фильтровать запрос в форме, брать текст этого фильтра из свойства формы "фильтр" и вставлять его в запрос на добавление, меняя кавычки "" на ''.

Подозреваю, что другие решения есть, но, наверное, они сложные. Это самое простое, раз мне пришло в голову. А т.к. я не сторонник сложных решений, ввиду того, что я новичок, то меня это устраивает.

Конечно, всегда буду рад увидеть и другие варианты, если предложите. Надеюсь, я задачу описал более внятно, Вам судить. Для развития очень полезно.
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40059994
Greg987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий,
Добрый день!
В предыдущем посте я описал задачу. Не знаю, как хорошо у меня это получилось.
Добавить хотел бы, что фильтр я передаю все таки в запрос на добавление, поэтому вместо Select, конечно же, там стоит Insert Into, хотя сути это не меняет.
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060090
Greg987, судя по
((([Запрос1].Поле1)="ФильтрТекст"))
в вашем источнике формы присутствует два поля "Поле1" из разных таблиц.
Или исключите лишнее, или дайте ему псевдоним. Тогда ваш фильтр будет выглядеть так: ((([Поле1] )="ФильтрТекст")), и, вероятно, его можно применить в вашем запросе без изменений.
Насчёт лучших решений - вам знакомо слово Recordset? В форме присутствуют все поля, необходимые для добавления в другую таблицу?
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060195
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Greg987

...Просто я хочу отфильтровать запрос в форме и эту фильтрацию передать в запрос на добавление....
Иногда необходимо добавить в таблицу новую запись изменив только дату(или несколько полей-например при оформлении ОСАГО) ,тогда проще всего создать новую запись так:поиск по форме(либо штатными средствами либо процедура VBA),найти нужную запись,разместить на форме кнопку при нажатии которой выполнить
Код: vbnet
1.
"INSERT INTO таблица (поле1,поле2) VALUES (" & Me.поле1 & ",'" & Me.поле2 & "')" 'поле1-числовое,поле2-текст

пропустив поля не подлежащие изменению (они в новой записи будут пустыми)
Перейти в форме на последнюю запись и заполнить пустые поля (вместо INSERT можно применять рекордсет-об этом говорилось выше)
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060525
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Иногда необходимо добавить в таблицу новую запись изменив только дату(или несколько полей-например при оформлении ОСАГО) ,тогда проще всего создать новую запись ...пропустив поля не подлежащие изменению (они в новой записи будут пустыми)
Перейти в форме на последнюю запись и заполнить пустые поля (вместо INSERT можно применять рекордсет-об этом говорилось выше)

Вроде в Вашем примере создается запись только с двумя заполненными полями.
А как же остальные - не подлежащие изменению? Вы же пишите, что остальное должно скопироваться?
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060534
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП

....Вроде в Вашем примере создается запись только с двумя заполненными полями.
А как же остальные - не подлежащие изменению? Вы же пишите, что остальное должно скопироваться?
это пример для двух полей, а в реале сколько хотите
Про пустые:
sdku
..пропустив поля не подлежащие изменению (они в новой записи будут пустыми )
Вы это читали??
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060544
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..пропустив поля не подлежащие изменению (они в новой записи будут пустыми и заполнятся с клавиатуры новыми значениями)
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060746
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
..пропустив поля не подлежащие изменению (они в новой записи будут пустыми и заполнятся с клавиатуры новыми значениями)

Тут слово НЕ зачеркнуто что ли? тогда все понятно.
...
Рейтинг: 0 / 0
Заменить часть текста в тексте фильтра формы
    #40060752
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,
Прошу прощения за ошибку-слово "НЕ" конечно же не читать
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заменить часть текста в тексте фильтра формы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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