Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 786

/ вопрос открыт /

Здравствуйте, эксперты!

При использовании ABS хочу сделать фильтрацию, но получаю ошибку
"Boolean expression expected, but 'Group' found at line 1, column 2 - Native error: 30066"

В чём ошибка?

Приложение:
  1. var
  2. F, S: string;
  3. begin
  4. S := Form1.DBGrid1.Fields[0].AsString;
  5. F := ' Group = ' + QuotedStr(S);
  6. Form1.ABSTable2.Filter := F;
  7. Form1.ABSTable2.Filtered := true;
  8. Form1.ABSTable2.Refresh;


Anton (w) Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Anton (w) (статус: Посетитель)
Вопрос отправлен: 29 июля 2008, 10:46
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Шичко Игорь

Здравствуйте, iamantbk!
Я так понимаю Вы пытаетесь сделать фильтр по строковому значению.
Формат фильтра по строковому значению в этом случае немного не такой и выглядит следующим образом:
Form1.ABSTable2.Filter := 'Group = ''' + S + ''''; // S - строковой значение.

Фильтр по числовому значению:
Form1.ABSTable2.Filter := 'Nomer = ' + IntToStr(N); // N - числовое значение.

Кроме этого необходимо иметь ввиду, что в переменной S должно быть четной число кавычек (если это к примеру названия организаций и т.п.). Иначе фильтр будеть выдавать ошибку.

Ответ отправил: Шичко Игорь (статус: 9-ый класс)
Время отправки: 29 июля 2008, 11:41


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 30 июля 2008, 03:34; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 29 июля 2008, 11:26 [#1]:

Использовать ключевые слова (а Group есть таким) в качестве имен полей таблицы очень вредно для здоровья и нервов. Но если сильно-сильно хочеться, то можно, правда при этом надо серверу БД объяснить, что это именно поле, а не ключевое слово. Как это делать в случае ABS - не знаю, никогда не использовал.
ABS - это Absolute DataBase?
Галочка "подтверждения прочтения" - вселенское зло.
Anton (w)

Anton (w) (статус: Посетитель), 29 июля 2008, 11:37 [#2]:

Вадим, спасибо. Точно, после изменения имён полей всё заработало!
Совершенно забыл о зарезервированных словах.
А ABS - это да, Absolute DataBase. +1
Вадим К

Вадим К (статус: Академик), 29 июля 2008, 12:25 [#3]:

to iamantbk
Ну и где же +1?:)

to Шичко Игорь
функция QuotedStr как раз и заключает в кавычки и экранирует по мере надобности другие кавычки.
Посмотрите на свою строку
Form1.ABSTable2.Filter := 'Group = ''' + S + ''''; // S - строковой значение.
потом почитайте мой ответ, и подумайте, почему он неверный.
Галочка "подтверждения прочтения" - вселенское зло.
Вадим К

Вадим К (статус: Академик), 29 июля 2008, 12:26 [#4]:

to Шичко Игорь
а также подумайте, что будет, если строка S будет содержат кавычку:)
Галочка "подтверждения прочтения" - вселенское зло.
Anton (w)

Anton (w) (статус: Посетитель), 30 июля 2008, 03:34 [#5]:

to Вадим К
>>Ну и где же +1?:)

Почему-то появляется

"Изменение репутации участника
Ошибка при передаче системных параметров.
[назад]
[закрыть окно]"

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.04 сек.