Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: CL | DM;

Вниз

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

 
delphino   (2007-05-18 07:20) [0]

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


 
Elen ©   (2007-05-18 07:45) [1]

Воспользуйся DBComboBox иначе в цикле, но это не решение.


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

я использовала DBComboBox, так не получится


 
iXT ©   (2007-05-18 09:16) [3]

DBLookupComboBox попробуй, хотя про какую фильтрацию говоришь не понял.


 
delphino   (2007-05-18 09:28) [4]

У меня две таблицы,
1.
С_Name
C_Adress
...
C_Inzhener(integer)

2.
I_Code(+)
I_Familiya(string)

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


 
iXT ©   (2007-05-18 09:47) [5]

Я бы Query выбрал :) (если оно конечно можно)

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

Вот это совсем теперь не понял :)


 
delphino   (2007-05-18 10:06) [6]


> Вот это совсем теперь не понял :)

:-D


 
ЮЮ ©   (2007-05-18 10:11) [7]

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

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


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


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

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


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

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


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

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

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

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

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


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


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

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

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

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


 
ЮЮ ©   (2007-05-18 11:20) [12]

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

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

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


 
iXT ©   (2007-05-18 11:22) [13]

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

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


 
ЮЮ ©   (2007-05-18 11:33) [14]

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

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


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


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

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


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

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


 
Elen ©   (2007-05-18 12:21) [17]


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

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


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

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

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)


 
{RASkov} ©   (2007-05-18 12:29) [19]

> Допустим мне надо отсортировать первую таблицу по одному
> инженеру. Если использовать 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, или наоборот....


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


> Добавляй в 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")- может я и не то поле взял, поменяй.
>
> Ну а далее ставь фильтр

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


 
ЮЮ ©   (2007-05-18 12:50) [21]

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

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


 
{RASkov} ©   (2007-05-18 13:08) [22]

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

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


 
DrAndrey ©   (2007-05-18 13:13) [23]

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


 
ЮЮ ©   (2007-05-18 13:20) [24]

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

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

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


 
DrAndrey ©   (2007-05-18 13:27) [25]

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


 
{RASkov} ©   (2007-05-18 13:29) [26]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.06.10;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.019 c
2-1179807221
Руслан56
2007-05-22 08:13
2007.06.10
Как составить запрос


2-1179650441
dima2207
2007-05-20 12:40
2007.06.10
запуск приложения .


3-1174533472
merko$
2007-03-22 06:17
2007.06.10
Копирование записи в IBTable


2-1179798888
delphino
2007-05-22 05:54
2007.06.10
Копирование набора Query в Table


10-1133359168
AndDem
2005-11-30 16:59
2007.06.10
Печать многих документов в Word