powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтр в ADO
32 сообщений из 32, показаны все 2 страниц
Фильтр в ADO
    #32787369
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ADO рекордсет. Его надо отфильтровать, при чем все поля числовые, даты привести в текстовой формат и выбрать через Like.
В DAO все было тип топ.
Код: plaintext
1.
MeRst.Filter = "format(ПолеДата) like '*1*' or format(ПолеЧисло) like '*1*'"
Set rst = MeRst.OpenRecordset

А вот ADO использование VBA’шных функций приводит к ошибке.

Код: plaintext
Rst.Filter = "format(ПолеДата) like '*1*' or format(ПолеЧисло) like '*1*'"

Ругается

3001 Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Ну не понимает он их. А преобразовывать в текстовой формат необходимо в фильтре.
Что можете посоветовать?
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787385
scoritt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать функцию Str(Expression).
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787400
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И Str(), и CStr являются VBA’шными функциями. ADO их не понимает в Filtre.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787401
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В рекордсет можно доп. поля со строковым представлением включить...
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787408
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В прочем как и IsNull()/ Но тут есть обход.
rst.Filter "Поле = Null"
А вот как обойти непонятливость в вопросе выше.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787418
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PAВ рекордсет можно доп. поля со строковым представлением включить...
В моем варианте, к сожалению, это не подходит.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787426
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в аналогичных случаях я делаю по-шагам

Rst.Filter = "format(ПолеДата) "

Rst.Filter = "txt_gjkt like '*1*' "

и т.д.

Rst.Filter = "format(ПолеДата) like ('*1*')" ежели не ошибаюсь
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787437
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяRst.Filter = "format(ПолеДата) like ('*1*')" ежели не ошибаюсь
Вадя, ADO не понимает VBA’шных функций.
Ваша строка работать не будет.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787475
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если мне не изменяет жена
то скорее всего вместо "*"
надоть использовать "%"
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787494
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищ, дорогой, только без кровопролития.
Из хелпа по ADO, Find
«In a LIKE clause, you can use a wildcard at the beginning and end of the pattern (for example, LastName Like '*mit*'), or only at the end of the pattern (for example, LastName Like 'Smit*').»

Да и у меня со звездочками работает.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787503
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейЕ

sql89 - *
sql92 - %
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787506
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК2 АлексейЕ

sql89 - *
sql92 - %
Ну хорошо, ищ может не беспокоится по поводу супруги.
Но мне это не помогает.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787515
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищ не женат, не бери в голову
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787526
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКищ не женат, не бери в голову
Ну и славо богу. А то я так за него переживал. :)
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787531
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
признаюсь, что не %.
это я у гетца прочитал
он же там и пишет
"со сложными выражениями Find не справляется. Максимум, на что он способен, это понять выражение, сосотоящее из имени поля, оператора сравнения и значения.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787576
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по этому поводу возникает один вопрос, пока один

а разве для того чтобы like отработал так как нужно обязательно преобразовывать?
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787589
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вообще тема использования пользовательских функций в ADO меня тоже волнует, так как работая на DAO активно пользовал такую возможность
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787607
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lenivecа разве для того чтобы like отработал так как нужно обязательно преобразовывать?
К сожалению да.

Like Operator
Used to compare two strings.Используемый, чтобы сравнить две вереницы(нити).

Syntax
Код: plaintext
result = string Like pattern

The Like operator syntax has these parts:

Код: plaintext
1.
2.
3.
Part                 Description 
result Required;     any numeric variable. 
string Required;     any string expression. Требуемый; любое выражение вереницы(нити).  
pattern Required;    any string expression conforming to the pattern-matching conventions described in Remarks. 
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787629
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оператор Like (справочник Jet SQL)

Синтаксис:

выражение Like "образец"

Ниже перечислены аргументы оператора Like:

выражение - Выражение SQL, используемое в предложении WHERE.

образец - Строка, с которой сравнивается выражение.

про стринг я тут ничего не нашел, как ни пытался
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32787634
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а тот лайк который ты привел, это оператор языка программирования, а он никакого отношения к SQL не имеет
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32788894
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фишка такая:
чтобы преобразовать число в стринг
можно сложить ее со строкой ,
напимер так
myintfield + " "
или так
myintfield & " "
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32788904
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Lenivec

like имеет прямое отношение к ADO фильтру см. хелп по ADO.filter
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32788999
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C (&) такая ошибка
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

С (+), такая -
Item cannot be found in the collection corresponding to the requested name or ordinal.

Ну ни как не получается обмануть корявку. :(
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789058
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК

я и не против, но там нигде не написано что выражение обязательно должно формировать текстовое поле (смотри выше, выписка из хелпа)
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789067
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что если в исходном запросе сделать такое преобразование - как вычисляемое поле ?
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789109
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenivecАлексейК

я и не против, но там нигде не написано что выражение обязательно должно формировать текстовое поле (смотри выше, выписка из хелпа)
Lenivec :) Вы просто попробуйте.

АлексейКа что если в исходном запросе сделать такое преобразование - как вычисляемое поле ?
Вот как раз этого я и хотел избежать, но видимо не получится. Буду думать в направлении вычисляемых полей (скрепя сердцем), или создания нового рекордсета с условием WHERE (еще больше скрепя.)
Может еще есть варианты?
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789271
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже долго парился с ADO-ным фильтром
особенно много гемора хапнул с несоответствием синтаксиса
фильтра ADP-ной формы (вроде как тоже на ADO рекордсете основанной)
и фильтра ADO рекордсета полученного клоном
а тут еще глюки условного форматирования итд и тп.

в конце концов плюнул и теперь если встречаю юзера который
хочет фильтры активно юзать
то сливаю данные в локальный MDB-к и открываю форму
через DAO из этого MDB-ка

кода три строки гемора ноль.
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789366
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати если речь идет об adp то у формы есть еще и серверный фильтр, там побогаче с выбором функций (серверные)
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789416
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как вам такое извращение, тока что придумал:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub qqq()
Dim rs As ADODB.Recordset
Dim vFields() As Variant
Dim i As Long
    
    Set rs = ...

    i =  0 
    Do While rs.EOF <> True
        If rs("Birthdayy").Value Like "*1*" Then
            ReDim Preserve vFields(i)
            vFields(i) = rs.Bookmark
            i = i +  1 
        End If
        rs.MoveNext
    Loop
    rs.Filter = vFields
    
End Sub
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789424
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Birthdayy - это я просто на своей базе пробовал, там такое поле типа дата
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789552
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и никаких отзывов, неужели уже никому не надо
...
Рейтинг: 0 / 0
Фильтр в ADO
    #32789686
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lenivecи никаких отзывов, неужели уже никому не надо
Да конечно надо.
Спасибо. Тоже способ. Будем извращаться.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Фильтр в ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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