Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно создавать фильтры для ДБГрид, Как правильно создавать фильтры для ДБГр 
:(
    Опции темы
maxfox111
Дата 16.8.2014, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



Добрый день помогите пожалуйста разобраться в своих ошибках

В ДБГрид выводится несколько столбцов с данными,
необходимо сделать фильтры по столбцам, начальник сказал .
 Пишу для кнопки фильтра так:

Код

//TableName – Таблица базы
//id_LastName – имя поля Таблицы

DataSet_Table_AccountFIO.Close;
sTableRequestText := 'SELECT DISTINCT id_LastName FROM ' + TableName + ' WHERE id_LastName LIKE '+quotedstr('Иванов-Петров ')+ ' ORDER BY id_LastName';

DataSet_Table_AccountFIO.CommandText    := sTableRequestText;
DataSet_Table_AccountFIO.Filtered        := True;
DataSet_Table_AccountFIO.Active        := True;
DataSet_Table_AccountFIO.Open;


При выполнении данного кода, в ДБГриде остаются только строчки содержащие заданную фамилию ‘Иванов-Петров’

Теперь вопросы:
1) Удаляются также данные из других столбцов ДБГрид. Пожалуйста :подскажите как это победить? То есть как выполнить фильтр в ДБГрид, но что бы данные из других столбцов остались видимыми. Потому что Имя, Отчество, дата рождения и другие характеристики пропадают.
2)Возможно ли таким образом выполнять еще и другие фильтры над другими столбцами?
3)Как научить программу выводить данные по фильтру фамилии, где в значении фильтра используется только часть фамилии?
например:
есть 
Иванов-Петров Алексей
Иванов-Перин Алексей
Иванов-Буков Алексей
Иванов-Букер Алексей
то есть, при задании фильтра «-Бук» выводились и “Иванов-Буков Алексей” и “Иванов-Букер Алексей”




PM MAIL   Вверх
ТоляМБА
Дата 16.8.2014, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



1. SELECT DISTINCT id_LastName выводит неповторяющиеся значения ТОЛЬКО поля id_LastName. Чтобы выводились другие поля их надо перечислить через запятую, например SELECT id_LastName, Fam, Imya, Otch
2. Если п.1 сработает, то да
3. В чистом SQL твой запрос будет выглядеть так:
Код
SELECT *
FROM Table1
WHERE id_LastName LIKE '*-Бук*'
ORDER BY id_LastName

или
в LIKE % вместо *
кавычки сам расставишь в коде.

Это сообщение отредактировал(а) ТоляМБА - 16.8.2014, 17:42
PM   Вверх
tzirechnoy
Дата 16.8.2014, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Настоятельно несоветую делать SELECT * в программном коде. Перечисляйте полностью список полей, он обычно невелик. Такая практика избавляет от многих неожыданностей.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.