Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];

Вниз

SQL -> ADODataset.Filter   Найти похожие ветки 

 
fog   (2008-07-13 20:30) [0]

Кризис. Никак не получается перегнать фильтр под Дельфи.
SQL:
WHERE (Table1.Field1 LIKE "*что-то*")AND(Table1.Field1 LIKE "*где-то*") и т.д. В Access-е работает.
Field1 - Memo.

ADODataset.Filter := "Field1 LIKE "*что-то*"" - работает.
ADODataset.Filter := "(Field1 LIKE "*что-то*")AND(Field1 LIKE "*где-то*")" -нет (ошибка).

Help, pls.


 
Правильный$Вася   (2008-07-13 20:35) [1]


> -нет (ошибка).

озвучь


 
Anatoly Podgoretsky ©   (2008-07-13 20:46) [2]

Не может ни то, ни то работать, обе конструкции должны выдать ошибку и компиляция прекратиться.


 
sniknik ©   (2008-07-13 22:44) [3]

* -> %


 
fog   (2008-07-13 22:51) [4]

...raised exception class EOleException with message "Arguments are of the wrong type, are out of acceptable range, or are in conflict with another"


> Anatoly Podgoretsky ©   (13.07.08 20:46) [2]
> Не может ни то, ни то работать, обе конструкции должны выдать
> ошибку и компиляция прекратиться.

Нет ошибки при компиляции и выполнении.


procedure TForm5.Button2Click(Sender: TObject);
begin
ADODataSet1.Filter := "(Field1 LIKE *что-то*)AND(Field1 LIKE *где-то*)";
ADODataSet1.Filtered := true;
end;

Без после AND... работает.


 
sniknik ©   (2008-07-13 23:02) [5]

> Нет ошибки при компиляции и выполнении.
есть. и пока не будеш говорить правду ничего не исправишь.


 
Anatoly Podgoretsky ©   (2008-07-13 23:38) [6]

> fog  (13.07.2008 22:51:04)  [4]

Так это совсем другой код.


 
Anatoly Podgoretsky ©   (2008-07-13 23:40) [7]

> fog  (13.07.2008 22:51:04)  [4]

Ах да, новый фкод на первый взгляд бессмысленный.


 
fog   (2008-07-13 23:52) [8]


> sniknik ©   (13.07.08 23:02) [5]
> > Нет ошибки при компиляции и выполнении.
> есть. и пока не будеш говорить правду ничего не исправишь.
>

"Пытай-пытай, Мюллер" )))

Дано:
База - Access.
ADOConnection(JET.OLEDB.4.0), ADODataSet, DataSource, DBGrid, 2 Button"s.
CommandText (Dataset) - "SELECT * FROM Table1"
Поля в Dataset - соответствуют Table1.
Решаемая задача - фильтрация по Memo-полю.
Решение:

procedure TForm5.Button2Click(Sender: TObject);
begin
ADODataSet1.Filter := "(Field1 LIKE *что-то*)";
ADODataSet1.Filtered := true;
end;

Результат - работает. БЕЗ ЛЮБЫХ ОШИБОК.

Усложняем задачу - фильтрация по нескольким словам.
В Access - "довешиваем" WHERE через AND(OR) см.[0]
В Дельфи - см.[4] - получается ошибка.

Вот и пытаюсь понять - куда копать?

P.S. А можно ли (целесообразно ли, соотв.) произвести сортировку memo-поля по аналогии с поколоночной сортировкой Items в TListView?


 
Anatoly Podgoretsky ©   (2008-07-13 23:57) [9]

Ерунда получается, а не фильтр


 
fog   (2008-07-14 00:19) [10]


> Anatoly Podgoretsky ©   (13.07.08 23:57) [9]
> Ерунда получается, а не фильтр

А вот и нет. Изначально в БД - 87 записей, после фильтрации - 12.
Проверял через Label1.Caption := IntToStr(ADODataSet1.RecordCount);

От того, что  заменить "Field1" на "Abstract", а "*что-то*" на "*дитиокарбамат*" - ничего не меняется.
БД- тестовая. 2 поля - AutoIncrement и Memo.

Вопрос остается - как перевести SQL "WHERE..." [0] в текстовую строку для ADODataSet.Filter.


 
fog   (2008-07-14 19:12) [11]

Попробовал произвести фильтрацию через Commandtext

ADODataSet1.CommandText := "SELECT * FROM Table1 WHERE Field1 LIKE *что-то*";

Возвращает 0 (RecordCount).
Аналогично ситуация с ADOQuery.
SQL = "SELECT * FROM Table1 WHERE (Table1.Field1 LIKE "*что-то*");"
SQL-запрос взял из Access-a (там работает)

Почему не берет ADO?


 
sniknik ©   (2008-07-14 19:39) [12]

[3]


 
Palladin ©   (2008-07-14 19:47) [13]

перевожу, символы "звездочка" заменить символами "процент"


 
fog   (2008-07-14 19:58) [14]


> sniknik ©   (13.07.08 22:44) [3]
> * -> %


> Palladin ©   (14.07.08 19:47) [13]
> перевожу, символы "звездочка" заменить символами "процент"

Спасибо, заработало. Но остался вопрос - почему wildcard работает в Access-e и частично работает в дельфи [8] и наоборот - заменил * на % в Access-e и не работает.


 
Palladin ©   (2008-07-14 20:08) [15]

прими как должное... не все, что работает в access (либо другом прикладном ПО к СУБД), так же работает и через провайдера...


 
fog   (2008-07-14 20:54) [16]


> Palladin ©   (14.07.08 20:08) [15]

OK.
Но на какой SQL ориентироваться (89 или 92) по использованию %,*, ?, _, # и ESCAPE?


 
fog   (2008-07-14 21:01) [17]

Опять грабли - на "=" и "/".
Пример: "%ПДК = 1 мг/кг%". Приходиться по частям - "%ПДК%", потом "%1 мг%"


 
Нат   (2008-07-25 05:34) [18]

Странно, многие утверждают, что процент и звездочка эквивалентны.
У меня сделан поиск на свойстве фильтр, где подставляется "нечто*" и работает.

А в посте №4 автор приводит код с ошибкой, т.к искомая строка не заключена в кавычки (" ") или quoted()



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
15-1215263672
Fredy314
2008-07-05 17:14
2008.08.31
Вычисление crc32 по частям


11-1192910752
Виктор007
2007-10-21 00:05
2008.08.31
Ошибка в TBitBtn при включенном GRAPHCTL_XPSTYLES


3-1202463519
Prohodil Mimo
2008-02-08 12:38
2008.08.31
Можно ли определить таблицу и запись , которая не даёт удалить...


15-1215768527
Правильный*Вася
2008-07-11 13:28
2008.08.31
только что касперский выдал


2-1216877838
uno-84
2008-07-24 09:37
2008.08.31
Извлечь дату из таблицы Базы Данных с условиями





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский