Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Заменить часть текста в тексте фильтра формы  [new]
Greg987
Member

Откуда:
Сообщений: 8
Добрый день!

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

[/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]


Это возможно? Если да, то как?
Заранее спасибо!
4 апр 21, 16:57    [22304117]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
Greg987
Member

Откуда:
Сообщений: 8
Сделал. Все работает.
Может коряво. Если кто подскажет, как сделать красивей. Но главное - работает!!!

[/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]
4 апр 21, 17:25    [22304123]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7250
Greg987,
SELECT [Табл1].Поле1, [Табл2].Поле2 FROM Табл1, Табл2 "

Если-б еще знать какой смысл в декартовом произведении("перемножении" каждого значения поля одной таблицы(с неким отбором) на все содержимое поля другой таблицы) может лучше JOIN-но не зная решаемой Вами задачи трудно "ванговать"

Сообщение было отредактировано: 4 апр 21, 18:29
4 апр 21, 18:31    [22304130]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 613
Greg987, а где вы используете этот запрос? От ответа зависят и советы.
5 апр 21, 15:09    [22304522]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
Greg987
Member

Откуда:
Сообщений: 8
sdku,
почему перемножении?
Обычный запрос на выборку с фильтрацией.
Просто я хочу отфильтровать запрос в форме и эту фильтрацию передать в запрос на добавление.
Единственное, что я придумал, это фильтровать запрос в форме, брать текст этого фильтра из свойства формы "фильтр" и вставлять его в запрос на добавление, меняя кавычки "" на ''.

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

Конечно, всегда буду рад увидеть и другие варианты, если предложите. Надеюсь, я задачу описал более внятно, Вам судить. Для развития очень полезно.
5 апр 21, 19:33    [22304755]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
Greg987
Member

Откуда:
Сообщений: 8
Кривцов Анатолий,
Добрый день!
В предыдущем посте я описал задачу. Не знаю, как хорошо у меня это получилось.
Добавить хотел бы, что фильтр я передаю все таки в запрос на добавление, поэтому вместо Select, конечно же, там стоит Insert Into, хотя сути это не меняет.
5 апр 21, 19:35    [22304756]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 613
Greg987, судя по
((([Запрос1].Поле1)="ФильтрТекст"))
в вашем источнике формы присутствует два поля "Поле1" из разных таблиц.
Или исключите лишнее, или дайте ему псевдоним. Тогда ваш фильтр будет выглядеть так: ((([Поле1] )="ФильтрТекст")), и, вероятно, его можно применить в вашем запросе без изменений.
Насчёт лучших решений - вам знакомо слово Recordset? В форме присутствуют все поля, необходимые для добавления в другую таблицу?
6 апр 21, 11:21    [22304956]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7250
Greg987

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

Сообщение было отредактировано: 6 апр 21, 17:43
6 апр 21, 17:51    [22305145]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
ИВП
Member

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

Вроде в Вашем примере создается запись только с двумя заполненными полями.
А как же остальные - не подлежащие изменению? Вы же пишите, что остальное должно скопироваться?

Сообщение было отредактировано: 7 апр 21, 20:51
7 апр 21, 20:57    [22305694]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7250
ИВП

....Вроде в Вашем примере создается запись только с двумя заполненными полями.
А как же остальные - не подлежащие изменению? Вы же пишите, что остальное должно скопироваться?
это пример для двух полей, а в реале сколько хотите
Про пустые:
sdku
..пропустив поля не подлежащие изменению (они в новой записи будут пустыми)
Вы это читали??
7 апр 21, 22:43    [22305717]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7250
..пропустив поля не подлежащие изменению (они в новой записи будут пустыми и заполнятся с клавиатуры новыми значениями)
7 апр 21, 23:20    [22305733]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
ИВП
Member

Откуда:
Сообщений: 426
sdku
..пропустив поля не подлежащие изменению (они в новой записи будут пустыми и заполнятся с клавиатуры новыми значениями)

Тут слово НЕ зачеркнуто что ли? тогда все понятно.
8 апр 21, 15:43    [22306027]     Ответить | Цитировать Сообщить модератору
 Re: Заменить часть текста в тексте фильтра формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 7250
ИВП,
Прошу прощения за ошибку-слово "НЕ" конечно же не читать
8 апр 21, 15:50    [22306035]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить