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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 09:29   #1
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию DBGridEh: показать только нужные строки

Всем доброго времени суток

Вопрос такой:

Есть связанные между собой Adoconnection, Adoquery, DataSource. В DBGridEh – таблица из Oracle. Подскажите, пожалуйста, как показать в Grid`е только нужные мне строки?

Например, в таблице «table» два поля: name, group. Имена разные, группы совпадают. Мне надо показать в Grid`е только строки, в которых в ячейке «группы», к примеру, значение: «group 1».

Как это реализовать? Надо работать непосредственно со строками или это делается в запросе?
new player вне форума Ответить с цитированием
Старый 07.10.2010, 09:50   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Проще всего в запросе (и сервер меньше грузит)
select name from table where group = "group 1" order by name
А еще лучше сделать родительскую таблицу с полем group и связать таблицы по индексам. Кстати, связь лучше делать по числовому полю.
_SERGEYX_ вне форума Ответить с цитированием
Старый 07.10.2010, 09:52   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
или это делается в запросе?
Именно в запросе. в предложении where указываешь критерий отсева записей.
например select * from mmm where name<>'Пупкин' - отсеет пупкина
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2010, 10:32   #4
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Сделал так:

Код:
ADOQuery.SQL.Add('select * from table1 where group_name = "G45"');
ADOQuery.Active := false;
ADOQuery.Active := true;
Ошибка

Цитата:
ORA-00904: "G45": invalid identifier
Группа с таким названием есть. Такая же ошибка, когда вызываю функцию. Что я делаю не так?
new player вне форума Ответить с цитированием
Старый 07.10.2010, 10:53   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

1. А текст из предыдущего запроса удалил?
ADOQuery.Close;
ADOQuery.Sql.Clear;
ADOQuery.SQL.Add('select * from table1 where group_name = "G45"');
ADOQuery.Open;

2. Не помню точно синтаксис в Оракле... Могут быть косяки с кавычками. Некоторые СУБД принимают (`) вместо (").

3. Поле точно называется group_name?
И я сомневаюсь, что в БД есть таблица с именем table1....
_SERGEYX_ вне форума Ответить с цитированием
Старый 07.10.2010, 11:36   #6
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
1. А текст из предыдущего запроса удалил?
ADOQuery.Close;
ADOQuery.Sql.Clear;
ADOQuery.SQL.Add('select * from table1 where group_name = "G45"');
ADOQuery.Open;
Предыдущего запроса нет. Этот первый. Вылетает таже ошибка
Цитата:
ORA-00904: "G45": invalid identifier
Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
2. Не помню точно синтаксис в Оракле... Могут быть косяки с кавычками. Некоторые СУБД принимают (`) вместо (").
Если сделать так:

Код:
ADOQuery_group_user.SQL.Add('select * from v_adm_usr_group where group_name = `G45`');
То вылеатает:

Цитата:
ORA-00911: invalid character
Если в коде ошибок нет, видимо, косяки с ковычками. В качестве СУБД использую Oracle Database 10g EE

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
3. Поле точно называется group_name?
И я сомневаюсь, что в БД есть таблица с именем table1....
table1 - это просто так.
Выглядит все так:

Код:
ADOQuery_group_user.Close;
ADOQuery_group_user.SQL.Clear;
ADOQuery_group_user.SQL.Add('select * from v_adm_usr_group where group_name = "G45"');
//ADOQuery_group_user.Active := false;
//ADOQuery_group_user.Active := true;
ADOQuery_group_user.Open;
new player вне форума Ответить с цитированием
Старый 07.10.2010, 11:49   #7
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Ух, разобрался

Вместо одной ", надо было две '



_SERGEYX_ и Stilet, спасибо за помощь.

Последний раз редактировалось new player; 07.10.2010 в 11:58.
new player вне форума Ответить с цитированием
Старый 07.10.2010, 12:49   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Угу, кстати на сайте двойная кавычка (") и две одиночные ('') выглядят почти одинаково, а подсветка синтаксиса работает медленно, а иногда не срабатывает вообще.
Я когда-то писал подсветку синтаксиса Паскаля для своего сайта. Работала мгновенно.

АДМИНЫ !!!!! Извиняюсь, что не в тему, но пересмотрите принцип подсветки Pascal.

Вот, что я писал на своем сайте (для образца)
highlight_pas.txt

Последний раз редактировалось _SERGEYX_; 07.10.2010 в 12:51.
_SERGEYX_ вне форума Ответить с цитированием
Старый 07.10.2010, 14:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
ADOQuery.SQL.Add('select * from table1 where group_name = '+QuotedStr('G45'));
И ваши штанишки всегда будут такими же сухими как у ковбоев Оракла )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2010, 22:05   #10
-MagicAlex-
Пользователь
 
Аватар для -MagicAlex-
 
Регистрация: 28.12.2009
Сообщений: 42
По умолчанию

А еще лучше использовать параметры в запросах
-MagicAlex- вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как оставить только нужные строки? Palantir Microsoft Office Excel 6 18.03.2010 12:36
Удалить не нужные строки в диапазоне valerij Microsoft Office Excel 8 06.03.2010 23:21
вырезать из строки нужные числа fize Помощь студентам 1 16.12.2009 18:25
SQL запрос - показать только N последних записей SERG1980 БД в Delphi 8 28.03.2009 13:22
Как показать только не повторяющиеся записи А. Долматов Microsoft Office Access 4 20.05.2008 14:29