Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как подставить в ComboBox значения из таблицы БД?


Страницы:   1 2

delphino ©   (2007-05-18 07:20:00) 

Хочу сделать фильтрацию по полю и чтобы значение для фильтрации выбиралось из выпадающего списка.


{RASkov}   (2007-05-18 13:29:00) [1]

> Мне в этом случае приходит волшебное слово DISTINCT :).

Ну дык тут надо еще и SQL прикручивать, а здесь пока походу без него... :(
Я вот с ним(SQL) тоже не дружу(как собствено вообще с БД), но верю, что волшебное слово - это то что надо.


DrAndrey   (2007-05-18 13:27:00) [2]

>Уже определились, что DataSourse не нужен :) Здесь не редактирование, а >условия фильтрации
Ясно было с самого начала, это моя трактовка поста: ЮЮ ©   (18.05.07 12:50) [21]


ЮЮ   (2007-05-18 13:20:00) [3]

>Но по этой ветке, мне именно [19] пришло в моск.;)

Так ты уникальные значения выбираешь. Мне в этом случае приходит волшебное слово DISTINCT :).

>DrAndrey ©   (18.05.07 13:13) [23]
Уже определились, что DataSourse не нужен :) Здесь не редактирование, а условия фильтрации


DrAndrey   (2007-05-18 13:13:00) [4]

Вслед за ЮЮ:
DataSourse - один НД,  ListSourse - другой НД


{RASkov}   (2007-05-18 13:08:00) [5]

> [21] ЮЮ ©   (18.05.07 12:50)
> То же самое предоставил бы и TDBLookComboBox,

Не знаю как это должно выглядеть с фамилиями, но например с товарами, где могут присутствовать одинаковые имена товаров, TDBLookComboBox он с определенными настройками покажет товары в своем списке но всет.е. могут в TDBLookComboBox присутсвовать два итема с "Мука".
Может я и не в тему объяснил... сорри. Но по этой ветке, мне именно [19] пришло в моск.;)


ЮЮ   (2007-05-18 12:50:00) [6]

>То что надо, спасибо!

То же самое предоставил бы и TDBLookComboBox, у которого ListSource.DataSet выбилал бы записи из таблицы Инженеров.
Единственное, что надо помнить, что при использовании  DBLookupCombo-компонентов надо иметь ОТДЕЛЬНЫЙ НАБОР ДАННЫХ к той же таблице, отличный от уже использукмых.


delphino   (2007-05-18 12:38:00) [7]


> Добавляй в TComboBox Items так:
> DataSet.First;
> while not DataSet.Eof do begin
> if ComboBox.Items.IndexOf(DataSet.FieldByName('C_Name').
> AsString)<0 then
>  ComboBox.Items.Add(DataSet.FieldByName('C_Name').AsString);
>
> DataSet.Next;
> end;
> FieldByName('C_Name')- может я и не то поле взял, поменяй.
>
> Ну а далее ставь фильтр

То что надо, спасибо!


{RASkov}   (2007-05-18 12:29:00) [8]

> Допустим мне надо отсортироватьпервую таблицу по одному
> инженеру. Если использовать DBLookupComboBox таблица фильтруется,
> но также изменяется значение C_Inzhener на выбранный в
> списке.

Может отфильтровать?
Добавляй в TComboBox Items так:
DataSet.First;
while not DataSet.Eof do begin
if ComboBox.Items.IndexOf(DataSet.FieldByName('C_Name').AsString)<0 then
 ComboBox.Items.Add(DataSet.FieldByName('C_Name').AsString);
DataSet.Next;
end;

FieldByName('C_Name')- может я и не то поле взял, поменяй.
Ну а далее ставь фильтр

> Мне надо сделать фильтр уже отфильтрованных записей! Первый
> фильтр работает при вводе логина и пароля при входе в приложение.

Если при логине используется Filtered, значит используй SetRange, или наоборот....


ЮЮ   (2007-05-18 12:26:00) [9]

Первый фильтр работает при вводе логина и пароля при входе в приложение.

procedure TDataModule2.clientFilterRecord(DataSet: TDataSet;
 var Accept: Boolean);
begin
if pr=false then
  Accept := (DataSet['C_Manager'] = log)
else
  Accept := (DataSet['C_Inzhrner'] = sch)
end;

Замени sch, определяемое при входе в приложение. на значение в DBLookupCombobox-е (названного, например cbInzhrnerFilter(:

Accept :=  
 VarIsNull(cbInzhrnerFilter.KeyValue)  or
 // для снятия фильтра в НД можно включить запись NULL, 'Все' или
 // "очистить" выбор, если компрнент позволяет
 (DataSet['C_Inzhrner'] = cbInzhrnerFilter.KeyValue)


Elen   (2007-05-18 12:21:00) [10]


> Мне надо сделать фильтр уже отфильтрованных записей! Первый
> фильтр работает при вводе логина и пароля при входе в приложение.

А не проще это сделать выборкой Select а потом уж ее фильтровать?


delphino   (2007-05-18 12:09:00) [11]

Мне надо сделать фильтр уже отфильтрованных записей! Первый фильтр работает при вводе логина и пароля при входе в приложение.


delphino   (2007-05-18 12:07:00) [12]


> Ну да. Она мне вчера проект целиком прислала. Если бы призналась,
>  что это уже есть в проекте, ио глянул бы :)

этого нет в проекте который я тебе прислала, а ты уже мог наизусть выучить всю структуру моей базы, я тебе раз десять одно и то же объясняю.:-)


ЮЮ   (2007-05-18 11:33:00) [13]

>Не покажет. Это секрет. :)

Ну да. Она мне вчера проект целиком прислала. Если бы призналась, что это уже есть в проекте, ио глянул бы :)


iXT   (2007-05-18 11:22:00) [14]

> [12] ЮЮ ©   (18.05.07 11:20)

Не покажет. Это секрет. :) Придется применять методы по вытягиванию ин-фы.


ЮЮ   (2007-05-18 11:20:00) [15]

> Не понятно как сделать то, что ты посоветовал.:-)

Для непонятливых повторяю вопрос: "Каким образом сейчас организована фильтация?", т.к. есть два принципиально различных метода:
1) Набор является детальнм в связке мастер-детэйл и следует сменить запись в мастере
2) Набор фильтруется
 a) cв-во Filter
 б) обработчик OnFilterRecord

Что использовала ты? Если 2-е, то покажи код


delphino   (2007-05-18 11:07:00) [16]


> Почему значение менялось понятно, но почему при этом таблица
> фильтруется - непонятно.

Нет с этим все понятно.

> Для фильтр можно использлвать как KeyValue в OnChange, так
> и связав фильтруемые набор с ListSource как с мастером

Не понятно как сделать то, что ты посоветовал.:-)


ЮЮ   (2007-05-18 10:57:00) [17]

>Не понятно...

Аналогично непонятно как "Если использовать DBLookupComboBox таблица фильтруется, но также изменяется значение C_Inzhener на выбранный в списке."

Почему значение менялось понятно, но почему при этом таблица фильтруется - непонятно. Почему она фильтруется? Из-за написанного кода? приведи - скажу где и как следует исправить? из-зв настроек компонентов? Каких? Просто так фильрация возникнуть не может.

>Короче используй DBComboBox загоняй его в цыкл, и не парся,
А вот этот компонент предназначен ИСКЛЮЧИТЕЛЬНО для набора данных, которого автор и хочет избежать.
и не парся,
:)


FIL-23   (2007-05-18 10:42:00) [18]

Короче используй DBComboBox загоняй его в цыкл, и не парся, у меня тоже была раньше такая проблема я пробовал DBLookupComboBox ни чего не выходило....


delphino   (2007-05-18 10:29:00) [19]


> Для фильтр можно использлвать как KeyValue в OnChange, так
> и связав фильтруемые набор с ListSource как с мастером,
> ибо выбор значения в списке приведет к неявному скроллированию
> ListSource набора данных

Не понятно...


ЮЮ   (2007-05-18 10:11:00) [20]

>Если использовать DBLookupComboBox таблица фильтруется, но также изменяется значение C_Inzhener на выбранный в списке.

Я уже говорил: DataSouurce и FieldName в таком компоненте должны быть пусты, иначе проискодит редактирования поля в наборе данных.
Для фильтр можно использлвать как KeyValue в OnChange, так и связав фильтруемые набор с ListSource как с мастером, ибо выбор значения в списке приведет к неявному скроллированию ListSource набора данных


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо