Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизКак подставить в 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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.042 c