Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.04 c
15-1179109163
Slider007
2007-05-14 06:19
2007.06.10
С днем рождения ! 12 мая


2-1179396741
Accel
2007-05-17 14:12
2007.06.10
русский язык в Html и Delphi


2-1179416636
Kostafey
2007-05-17 19:43
2007.06.10
Запрет на редактирование/удаление записи по значению


1-1176716998
well
2007-04-16 13:49
2007.06.10
BDS. Как создать иконку если нет ImageEditor


2-1179659324
ari_9
2007-05-20 15:08
2007.06.10
как из контекста устройства (HDC) получить битмап ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский