Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Filter рекордсета, поля типа numeric и date / 12 сообщений из 12, страница 1 из 1
14.06.2005, 11:08:56
    #33115128
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
делаю фильтр так:
для numeric
1) rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'".
он нормально фильтрует, но только, если я значение ввожу целиком. а если ставлю * в конце ('" & CStr(Text1.Text) & "*'"), ругается "Не удается открыть фильтр". Как это исправить?
2) а с датой вообще ничего не получается. посоветуйте, как сделать фильтр по дате, чтобы можно было также не целиком искать, а любое совпадение.
Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
14.06.2005, 11:18:53
    #33115149
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Настенькаделаю фильтр так:
для numeric
1) rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'".
он нормально фильтрует, но только, если я значение ввожу целиком. а если ставлю * в конце ('" & CStr(Text1.Text) & "*'"), ругается "Не удается открыть фильтр". Как это исправить?
2) а с датой вообще ничего не получается. посоветуйте, как сделать фильтр по дате, чтобы можно было также не целиком искать, а любое совпадение.
Заранее спасибо за ответ.
1. Звезду замените на знак процента, если используете SQL Server. Какой источник данных? Какая библиотека доступа к данным - ADO или DAO? Что показывает Debug.Pring "('" & CStr(Text1.Text) & "*'")"? Может быть там ошибка синтаксиса, может быть знак переноса корретки, может быть кавычка.
2. Вы сами поняли, что спросили? По какому совпадению можно искать дату? Одинаковый день? Одинаковый месяц? Одинаковые буквы в названии месяца? :))
...
Рейтинг: 0 / 0
14.06.2005, 11:26:32
    #33115176
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
что выдает debug

sgdsumm like ('1*')

и потом ошибка "не удается открыть фильтр". когда ставлю звездочку со стринговыми полями, то всё в порядке.

про дату:
например, у меня в таблице такие значения

09.12.2004
11.12.2005

я ввожу 12, и он выдает эти 2 записи. т.е. совпадения как в стринговых полях.
любая часть ищется.
...
Рейтинг: 0 / 0
14.06.2005, 11:31:58
    #33115193
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Настенькачто выдает debug

sgdsumm like ('1*')

и потом ошибка "не удается открыть фильтр". когда ставлю звездочку со стринговыми полями, то всё в порядке.

про дату:
например, у меня в таблице такие значения

09.12.2004
11.12.2005

я ввожу 12, и он выдает эти 2 записи. т.е. совпадения как в стринговых полях.
любая часть ищется.
Ага, понятно:
1. Судя по названию, sgdsumm - нетекстовое поле, по этому -
Cstr(sgdsumm) или cast(sgdsumm as nvarchar(30)) в зависимости от СУБД.
2. тоже самое - дату привести к текстовому виду, а затем использовать LIKE
...
Рейтинг: 0 / 0
14.06.2005, 11:35:57
    #33115206
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
я же писала

rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'".

работает, но ищет только совпадение целиком. а мне надо вот что:

пример:

есть 2 значения
103
3001

я просто набираю 3, и две эти записи выводятся. как это сделать? * в конце не катит. :-(.

cast работает только с sql-запросами. у меня не sql-ЗАПРОС, а фильтр рекордсета.
...
Рейтинг: 0 / 0
14.06.2005, 11:45:13
    #33115244
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Настенькая же писала
rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'".
работает, но ищет только совпадение целиком. а мне надо вот что:
пример:
есть 2 значения
103
3001
я просто набираю 3, и две эти записи выводятся. как это сделать? * в конце не катит. :-(.
cast работает только с sql-запросами. у меня не sql-ЗАПРОС, а фильтр рекордсета.
Это такой легкий намек на используемую СУБД, да? ;))) Настенька, я-то знаю, что Вы принципиально не испльзуете Access, но окружающие-то об этом только догадываются.
Делайте представление и добавляйте в него поле, в котором sgdsumm переводится в текстовый вид. По этому полю и делайте LIKE.
Насчет неиспользуемости cast в Filter Вы уверены?
Но правильной политикой было бы использование хранимой процедуры, принимающей в качестве аргумента часть строки и возвращающей то, что Вам необходимо.
...
Рейтинг: 0 / 0
14.06.2005, 11:51:55
    #33115269
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
а можно по проще. без всяких представлений. надо модифицировать эту строку, чтобы искал любые совпадения.

rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'".

и больше ничего не надо. я не думала, что это так сложно будет. вроде, на первый взгляд элементарная вещь, а работать не хочет.
...
Рейтинг: 0 / 0
14.06.2005, 12:05:39
    #33115318
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Настенькаа можно по проще. без всяких представлений. надо модифицировать эту строку, чтобы искал любые совпадения.

rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'".

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

Если же вы настаиваете на своем способе фильтрации, то попробуйте так
Код: plaintext
rcd.Filter = "sgdsumm like ('%1%')"
или так
Код: plaintext
rcd.Filter = "cast(sgdsumm as nvarchar(30)) like ('%1%')"

Если при этом ошибка, то какая? Если NOT-ожидаемый результат, то какой?
Какая библиотека доступа к данным используется? ADO, RDO, DAO?
...
Рейтинг: 0 / 0
14.06.2005, 12:14:20
    #33115340
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
ничего не работает. :-(((.
использую ado.
с cast такая ошибка:
runtime '3001'
аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт с друг другом.

с процентами тоже ошибка:
когда я пытаюсь открыть фильтр (rcd.open). пишет, "Не удается открыть фильтр".

помогите!!!
...
Рейтинг: 0 / 0
14.06.2005, 12:22:30
    #33115369
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Настеньканичего не работает. :-(((.
использую ado.
с cast такая ошибка:
runtime '3001'
аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт с друг другом.

с процентами тоже ошибка:
когда я пытаюсь открыть фильтр (rcd.open). пишет, "Не удается открыть фильтр".

помогите!!!
Настенька, Вас спасет использование представлений. Когда SQL Server отказывается принимать знак процента, иного выхода, кроме как использовать его собственные механизмы - нет. Метод Filter в ADO достаточно ограничен для той судьбы, что Вы ему уготовили.
...
Рейтинг: 0 / 0
14.06.2005, 12:23:51
    #33115378
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Ладно, спасибо за ответы. видать, придется всё-таки использовать sql-запрос.
...
Рейтинг: 0 / 0
14.06.2005, 13:15:11
    #33115542
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Filter рекордсета, поля типа numeric и date
Настенька

а Вы смотрели какое значение принимает строка

Код: plaintext
"sgdsumm like '" & CStr(Text1.Text) & "*'".

может там лишние кавычки или еще что

к примеру
Код: plaintext
sgdsum like '*'
выдаст ошибку и надо по другому формировать фильтр (точнее его отсутствие rcd.Filter = "")
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Filter рекордсета, поля типа numeric и date / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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