Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 21:40   #1
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
Вопрос Таинственная ошибка в СУБД Absolute DataBase

Доброго времени суток! Проблема в следующем. У меня есть база данных в Absolute Database (разработка Component Ace), в ней три таблицы. Вот структура:

Таблица Groups:
1. ID [integer]
2. Name [string]

Таблица SubGroups:
1. ID [integer]
2. Group [integer]
3. Name [string]

Таблица Points:
1. ID [integer]
2. Group [integer]
3. Subgroup [integer]
4. Name [string]

В окне у меня 3 объекта dbGrid, настроенных на отображение содержимого этих 3 таблиц соответственно. Проблема вот в чём. Я хочу, чтобы при выборе записи в первых 2 таблицах производилась фильтрация по соответствующему полю. Вот код, который работает безо всяких вопросов:

procedure TFormMain.DBGrid2CellClick(Column: TColumn);
begin
TablePoints.Filter := 'SubGroup = ' + DBGrid2.Fields[0].AsString;
TablePoints.Filtered := true;
end;

Здесь всё без всяких претензий - щёлкаю на нужную строку в dbGrid2 и соответственно меняется содержимое, отображаемое в dbGrid3. А вот следующий код:

procedure TFormMain.DBGrid1CellClick(Column: TColumn);
begin
TablePoints.Filter := 'Group = ' + DBGrid1.Fields[0].AsString;
TablePoints.Filtered := true;
end;

А вот здесь проблема. Доходит до второй строчки кода (когда должна начаться фильтрация) и выдаёт вот такую ошибку:

"Boolean expression expected, but 'Group' found at line 1, column 1 - Native error: 30066"

Народ! Помогите! Как это понимать и что делать?!
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Старый 20.12.2010, 23:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

никогда в жизни не сталкивался с этой СУБД (хотя, конечно, слышал о такой).

я бы рекомендовал
1) попробовать заключить выражение в круглые скобки:
Код:
TablePoints.Filtered :=false; 
TablePoints.Filter := ' (Group = ' + DBGrid1.Fields[0].AsString+')';
TablePoints.Filtered := true;
если не поможет, переменовать поле GROUP
(например, GroupNumber или NGroup или как угодно, только не использовать ключевые слова в качестве имён полей (и таблиц)...

если не помогло, я не виноват!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.03.2011, 23:48   #3
Копоть Артём
Пользователь
 
Аватар для Копоть Артём
 
Регистрация: 12.04.2009
Сообщений: 29
По умолчанию

Эврика! Исправил название поля с Group на Gr - и всё заработало! Спасибо!!!
Программист - это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали.
Копоть Артём вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
связать таблицы в Absolute Database furstenberg БД в Delphi 5 08.03.2011 10:51
Ошибка в DataBase Desktop!!! darova Помощь студентам 1 20.06.2009 02:18
Ошибка в DataBase Desktop!!! darova БД в Delphi 0 08.06.2009 16:12
ошибка при связывании таблиц в Database Desktop vaso1983 БД в Delphi 3 18.05.2009 10:36
Помогите с Absolute Database sveiks БД в Delphi 1 30.07.2007 17:03