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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 08:56   #1
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию фильтрация в делфи

бд подключена через adoquery, вывожу в dbgrid, нужно что бы при нажатии на название поля в шапке таблицы происходила фильтрация данных по элементам этого поля. литературу смотрел, но не разобрался, поэтому просьба не посылать куда то, а помочь, направить
Азамат Казанчев вне форума Ответить с цитированием
Старый 16.05.2011, 09:10   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

с квери хорошо через SQL запрос работать, слыхали о таком?
Примерчик
Код:
with adoquery1 do
 begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM MyTable WHERE MyField  = 10')
  Open;
В данном примере мы отобразили все записи у которых поле MyField равно 10
SERG1980 вне форума Ответить с цитированием
Старый 16.05.2011, 09:24   #3
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

с sql запросами я знаком, но сдесь это не то, что мне надо. Я наверное плохо сформулировал вопрос. есть таблица с 3 полями, выводится на главной форме. надо что бы при нажатии на заголовок первого поля была фильтрация по элементам этого поля, при нажатии на заголовок втрого поля-фильтрация по данным второго поля и тд. Слышал о таком
Азамат Казанчев вне форума Ответить с цитированием
Старый 16.05.2011, 09:47   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Может сортировка? Для фильтрации должно условие отбора быть. У вас какое тогда условие для фильтрации
SERG1980 вне форума Ответить с цитированием
Старый 16.05.2011, 10:26   #5
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

может сортировка. по сути в таблице 1ое поле содержит числовые значения, 2 - содержит дату, 3 - содержит название. интересны сортировки по перврму и второму полю по возрастанию, так что бы сортировалась вся таблица
Азамат Казанчев вне форума Ответить с цитированием
Старый 16.05.2011, 11:09   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Ну тогда так попробуйте
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
Column.Field.
with form1.ADOQuery1 do
 begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM MyTable ORDER BY ' + Column.Field.FieldName + ' ASC');//сортировка по возрастанию
 //SQL.Add('SELECT * FROM MyTable ORDER BY ' + Column.Field.FieldName + ' DESC');//сортировка по убыванию
  Open;
 end;
end;
SERG1980 вне форума Ответить с цитированием
Старый 16.05.2011, 11:35   #7
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

если я правильно понял
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
Column.Field;
with form1.ADOQuery1 do
 begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM MyTable ORDER BY ' + Column.Field.FieldName + ' ASC');//сортировка по возрастанию
 //SQL.Add('SELECT * FROM MyTable ORDER BY ' + Column.Field.FieldName + ' DESC');//сортировка по убыванию
  Open;
 end;
end;
в этом коде:
MyTable - имя моей таблицы
asc и desc - функции для сортировки
как это подогнать мне под себя если я изначально опирирую с бд а в таблице где надо сортировать я вывожу поля из двух таблиц бд с помощью sql запроса
Код:
select Предприятие.[Наименование предприятия], Баланс.Баланс, Баланс.[дата след проверки]
from Предприятие INNER JOIN Баланс ON Предприятие.ID=Баланс.[ID предприятия]
через adoquery я подключаю не таблицу с именем а бд, или это не имеет значения и уже начал тупить
Азамат Казанчев вне форума Ответить с цитированием
Старый 16.05.2011, 13:09   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

ну и допишите эту строку к вашему запросу
Код:
 ORDER BY ' + Column.Field.FieldName + ' ASC'
SERG1980 вне форума Ответить с цитированием
Старый 16.05.2011, 13:38   #9
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

выводит такую ошибку
Doc1.doc
дописываю так
Код:
select Предприятие.[Наименование предприятия], Баланс.Баланс, Баланс.[дата след проверки]
from Предприятие INNER JOIN Баланс ON Предприятие.ID=Баланс.[ID предприятия]
ORDER BY ' + Column.Field.FieldName + ' ASC'
уточняю - запрос записываю в свойство sql->string компонента adoquery
Азамат Казанчев вне форума Ответить с цитированием
Старый 16.05.2011, 14:23   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от Азамат Казанчев Посмотреть сообщение
уточняю - запрос записываю в свойство sql->string компонента adoquery
да нет конечно этот запрос должен быть вот здесь
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
а если в query то
Код:
select Предприятие.[Наименование предприятия], Баланс.Баланс, Баланс.[дата след проверки]
from Предприятие INNER JOIN Баланс ON Предприятие.ID=Баланс.[ID предприятия] ORDER BY Предприятие.[Наименование предприятия] ASC
будет сортировка по полю Наименование предприятия, или вставьте другое поле по которому будете сортировать
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация Rasl18 БД в Delphi 1 23.04.2010 23:18
Фильтрация в D7 rombler69 БД в Delphi 4 30.10.2009 11:40
Фильтрация изображения (в Системе распознавания лица на Делфи) agatamen Помощь студентам 4 08.10.2009 07:07
Фильтрация Gorychev БД в Delphi 20 10.06.2008 23:30