|
|
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
делаю фильтр так: для numeric 1) rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'". он нормально фильтрует, но только, если я значение ввожу целиком. а если ставлю * в конце ('" & CStr(Text1.Text) & "*'"), ругается "Не удается открыть фильтр". Как это исправить? 2) а с датой вообще ничего не получается. посоветуйте, как сделать фильтр по дате, чтобы можно было также не целиком искать, а любое совпадение. Заранее спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:08:56 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Настенькаделаю фильтр так: для numeric 1) rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'". он нормально фильтрует, но только, если я значение ввожу целиком. а если ставлю * в конце ('" & CStr(Text1.Text) & "*'"), ругается "Не удается открыть фильтр". Как это исправить? 2) а с датой вообще ничего не получается. посоветуйте, как сделать фильтр по дате, чтобы можно было также не целиком искать, а любое совпадение. Заранее спасибо за ответ. 1. Звезду замените на знак процента, если используете SQL Server. Какой источник данных? Какая библиотека доступа к данным - ADO или DAO? Что показывает Debug.Pring "('" & CStr(Text1.Text) & "*'")"? Может быть там ошибка синтаксиса, может быть знак переноса корретки, может быть кавычка. 2. Вы сами поняли, что спросили? По какому совпадению можно искать дату? Одинаковый день? Одинаковый месяц? Одинаковые буквы в названии месяца? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:18:53 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
что выдает debug sgdsumm like ('1*') и потом ошибка "не удается открыть фильтр". когда ставлю звездочку со стринговыми полями, то всё в порядке. про дату: например, у меня в таблице такие значения 09.12.2004 11.12.2005 я ввожу 12, и он выдает эти 2 записи. т.е. совпадения как в стринговых полях. любая часть ищется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:26:32 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Настенькачто выдает debug sgdsumm like ('1*') и потом ошибка "не удается открыть фильтр". когда ставлю звездочку со стринговыми полями, то всё в порядке. про дату: например, у меня в таблице такие значения 09.12.2004 11.12.2005 я ввожу 12, и он выдает эти 2 записи. т.е. совпадения как в стринговых полях. любая часть ищется. Ага, понятно: 1. Судя по названию, sgdsumm - нетекстовое поле, по этому - Cstr(sgdsumm) или cast(sgdsumm as nvarchar(30)) в зависимости от СУБД. 2. тоже самое - дату привести к текстовому виду, а затем использовать LIKE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:31:58 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
я же писала rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'". работает, но ищет только совпадение целиком. а мне надо вот что: пример: есть 2 значения 103 3001 я просто набираю 3, и две эти записи выводятся. как это сделать? * в конце не катит. :-(. cast работает только с sql-запросами. у меня не sql-ЗАПРОС, а фильтр рекордсета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:35:57 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Настенькая же писала rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'". работает, но ищет только совпадение целиком. а мне надо вот что: пример: есть 2 значения 103 3001 я просто набираю 3, и две эти записи выводятся. как это сделать? * в конце не катит. :-(. cast работает только с sql-запросами. у меня не sql-ЗАПРОС, а фильтр рекордсета. Это такой легкий намек на используемую СУБД, да? ;))) Настенька, я-то знаю, что Вы принципиально не испльзуете Access, но окружающие-то об этом только догадываются. Делайте представление и добавляйте в него поле, в котором sgdsumm переводится в текстовый вид. По этому полю и делайте LIKE. Насчет неиспользуемости cast в Filter Вы уверены? Но правильной политикой было бы использование хранимой процедуры, принимающей в качестве аргумента часть строки и возвращающей то, что Вам необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:45:13 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
а можно по проще. без всяких представлений. надо модифицировать эту строку, чтобы искал любые совпадения. rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'". и больше ничего не надо. я не думала, что это так сложно будет. вроде, на первый взгляд элементарная вещь, а работать не хочет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 11:51:55 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Настенькаа можно по проще. без всяких представлений. надо модифицировать эту строку, чтобы искал любые совпадения. rcd.Filter = "sgdsumm like '" & CStr(Text1.Text) & "'". и больше ничего не надо. я не думала, что это так сложно будет. вроде, на первый взгляд элементарная вещь, а работать не хочет. Использование представления - вполне нормальное решение, достаточно простое и безгеморройное. Если же вы настаиваете на своем способе фильтрации, то попробуйте так Код: plaintext Код: plaintext Если при этом ошибка, то какая? Если NOT-ожидаемый результат, то какой? Какая библиотека доступа к данным используется? ADO, RDO, DAO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:05:39 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
ничего не работает. :-(((. использую ado. с cast такая ошибка: runtime '3001' аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт с друг другом. с процентами тоже ошибка: когда я пытаюсь открыть фильтр (rcd.open). пишет, "Не удается открыть фильтр". помогите!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:14:20 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Настеньканичего не работает. :-(((. использую ado. с cast такая ошибка: runtime '3001' аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт с друг другом. с процентами тоже ошибка: когда я пытаюсь открыть фильтр (rcd.open). пишет, "Не удается открыть фильтр". помогите!!! Настенька, Вас спасет использование представлений. Когда SQL Server отказывается принимать знак процента, иного выхода, кроме как использовать его собственные механизмы - нет. Метод Filter в ADO достаточно ограничен для той судьбы, что Вы ему уготовили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:22:30 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Ладно, спасибо за ответы. видать, придется всё-таки использовать sql-запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:23:51 |
|
||
|
Filter рекордсета, поля типа numeric и date
|
|||
|---|---|---|---|
|
#18+
Настенька а Вы смотрели какое значение принимает строка Код: plaintext может там лишние кавычки или еще что к примеру Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 13:15:11 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=324&tid=2167630]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
796ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
3ms |
| others: | 209ms |
| total: | 1096ms |

| 0 / 0 |
