![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как подставить в ComboBox значения из таблицы БД?
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 набора данных