Topic: Combobox -- ParentCombobox

Здравствуйте.
Возникла проблема с комбобоксами.
Есть 3 комбобокса. Каждый связан с таблицей. У первой таблицы связь со вторым и третьим.
С помощью ParentCombobox могу связать только с одним но надо с двумя.
Пробовал через фильтр но выводит ошибку.

Select `object` From `Object` Where `Object`.`id_Rating`={ComboBoxRegion} 

пробовал и так

Select `object` From `Object` Where `Object`.`id_Rating`='+main.ComboBoxRegion.sqlValue
Post's attachments

Attachment icon Набросок.png 128.39 kb, 312 downloads since 2017-02-02 

Re: Combobox -- ParentCombobox

Здравствуйте.


Пожалуйста опишите словесно, что от чего зависит на примере. Т.к. возможно структура неверна.

Dmitry.

Re: Combobox -- ParentCombobox

1 таблица object
2 таблица objectcategory
3 таблица region

object связь с objectcategory
object связь с region

То есть в коком регионе находится объект и к кокой категории он относится.

Делаю так. ComboBoxObject---ParentComboBox (ComboBoxObjectCategory)  или ComboBoxObject---ParentComboBox (ComboBoxRegion)

Но как делать что бы в  ComboBoxObject  были объекты из выбранного региона(ComboBoxRegion) и выбранной категории (ComboBoxObjectCategory)

Re: Combobox -- ParentCombobox

beniamin91
К сожалению не могу сообразить что к чему с данным описанием.

Dmitry.

5 (edited by beniamin91 2017-02-06 19:35:49)

Re: Combobox -- ParentCombobox

.        таблица  objectcategory
запись1   cat1
запись2   cat2
----------     cat3
----------     cat4
----------     cat5



          таблица   region
запись1   reg1
запись2   reg2
----------     reg3
----------     reg4
----------     reg5




          таблица   object
запись1   obj1  +  cat1  + reg5
запись2   obj2  +  cat4  + reg1
----------     obj3  +  cat2  + reg2
----------     obj4  +  cat1  + reg2
----------     obj5  +  cat2  + reg5



ComboBoxObjectCategory (ForeignKey --- objectcategory)
ComboBoxRegion (ForeignKey  --- region)

ComboBoxObject (ForeignKey  --- object) (Parent ComboBox --- ComboBoxObjectCategory)

При такой конструкции могу выбрать ComboBoxObjectCategory=cat1
тогда в ComboBoxObject  останутся  obj1  и  obj4
но obj1 из reg5
      obj4 из reg2
надо чтобы при выборе ComboBoxRegion=reg2  остался только obj4 (то есть два Parent ComboBox)

Re: Combobox -- ParentCombobox

Сделал так

procedure main_dobjectcategory_OnChange (Sender: string);
begin
    if main.dregion.dbItemID>0
        then begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_Region='''+IntToStr(main.dregion.dbItemId)+''') and (id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='id_Region='''+IntToStr(main.dregion.dbItemId)+'''';
                    UpdateDatabase('Object');
                     end
             end
        else begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='object LIKE "%%"';
                    UpdateDatabase('Object');
                     end
             end

end;

procedure main_dregion_OnChange (Sender: string);
begin
    if main.dregion.dbItemID>0
        then begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_Region='''+IntToStr(main.dregion.dbItemId)+''') and (id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='id_Region='''+IntToStr(main.dregion.dbItemId)+'''';
                    UpdateDatabase('Object');
                     end
             end
        else begin
            if main.dobjectcategory.dbItemID>0
                then begin
                    main.dobject.dbFilter:='(id_ObjectCategory='''+IntToStr(main.dobjectcategory.dbItemId)+''') ';
                    UpdateDatabase('Object');
                     end
                else begin
                    main.dobject.dbFilter:='object LIKE "%%"';
                    UpdateDatabase('Object');
                     end
             end

end;

Похоже работает.
Может еще кому то пригодится.