1 (edited by Hram 2014-07-09 12:15:20)

Topic: Выбор с 2-х ComboBox в Edit

Доброго времени суток.
Подскажите недотепе, как не меняя структуры базы сделать сортировку данных через 2 ComboBox в Edit. 
Дабы не загружать объяснениями, выкладываю прогу - 1 форма, все предельно просто.

http://www.fayloobmennik.net/3935631

Заранее спасибо.

Re: Выбор с 2-х ComboBox в Edit

Приветствую,

если вам необходим связанный список, то структура базы данных немного не верна, скачайте этот проект в качестве примера (связанный список Страна > Регион > Город)

Post's attachments

Attachment icon Linked Lists.zip 3.87 kb, 562 downloads since 2014-07-09 

Dmitry.

Re: Выбор с 2-х ComboBox в Edit

Со связанными списками понятно, спасибо за пример. Но в моем случае это не совсем удобно будет. Поправлюсь - возможно ли решение моего примера через SQL запрос?

Re: Выбор с 2-х ComboBox в Edit

К сожалению я толком не понял, что требуется сделать )

Dmitry.

Re: Выбор с 2-х ComboBox в Edit

Используя структуру моей базы, вывести в Edit4.Text результат сортировки связанного списка ComboBox1 и ComboBox2.

Re: Выбор с 2-х ComboBox в Edit

у понятия сортировки нет результата )
вы имеете ввиду чтобы в Edit4 появилось что то типа "Название категории > Специализация" ?

Dmitry.

7 (edited by Hram 2014-07-10 10:09:50)

Re: Выбор с 2-х ComboBox в Edit

Имеется база Doctors, в которой записаны следующие данные

Фамилия
id_Специализации
id_категории

либо

id_Фамилия
id_Специализация
id_Категория

т.е

Сидоров                                Петров
Стоматолог                           Хирург
Высшая категория               Без категории

Требуется->

при выборе в ComboBox1 специализации (Хирург), в ComboBox2 можно было выбрать только "Петров", а после выбора в Edit1.Text появлялось "Без категории".
Дабы было проще, выслал на Ваш адрес (support@drive-software.com) свой проект.

Re: Выбор с 2-х ComboBox в Edit

Понял )
Ответил на емейл

Dmitry.

Re: Выбор с 2-х ComboBox в Edit

http://www.barca.ru/forum/images/smilies/bowdown2.gif
Да! Огромнейшее спасибо!

10 (edited by Hram 2014-07-10 15:46:25)

Re: Выбор с 2-х ComboBox в Edit

Кстати, небольшое дополнение.
А как сделать тоже самое, но не в Edit, а в ComboBox?
ComboBox1.SelText программа не понимает, ComboBox1.Text ничего не происходит.

procedure Form1_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
Form1.ComboBox3.Text:= 'dsds';
end;

Все, сам допер.

procedure Form1_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
Form1.ComboBox3.Style:=csDropDown;
Form1.ComboBox3.Text:= 'dsds';
end;

Update.
Все равно есть трабла. Запись в ComboBox отображается, но если не выбрать значение вручную - в базу она не записывается.

Re: Выбор с 2-х ComboBox в Edit

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


Здесь можно прочитать об этом
http://www.softtime.ru/bookphp/gl12_6.php

Dmitry.

12 (edited by Hram 2014-07-11 09:54:38)

Re: Выбор с 2-х ComboBox в Edit

Ошибку понял. Пробую выбирать Items - программа не понимание DefaultIndex[1]

procedure zapic_na_priem_FIO_Doc_OnChange (Sender: string);
var
  S : String;
begin
zapic_na_priem.cat_select.Style:=csDropDown;
S:=VarToStr( SQLExecute('SELECT Cat FROM Category WHERE id = ' + IntToStr(zapic_na_priem.FIO_Doc.dbItemID) ) );
if S='Высшая' then
zapic_na_priem.ComboBox1.DefaultIndex[1];  
end;

а если

zapic_na_priem.ComboBox1.ItemIndex:=1;

, то ничего не происходит.

Update.
Решено

zapic_na_priem.ComboBox1.ItemIndex:= (1);

P.S. Текст не убираю специально - может кому поможет.

Re: Выбор с 2-х ComboBox в Edit

По идее должно быть примерно так

zapic_na_priem.ComboBox1.dbItemID := StrToInt( VarToStr( SQLExecute('SELECT id_Category FROM Doctors WHERE id = ' + IntToStr(Form1.ComboBoxDoctor.dbItemID) ) ) );
Dmitry.

Re: Выбор с 2-х ComboBox в Edit

Да, Ваш вариант решения намного лучше, т.к. позволяет использовать значения с базы, а в моем случае приходилось использовать переменные.
Честно говоря, уже неудобно обращаться, но может Вы подскажете, как лучше реализовать массив (как мне кажется, без него не получится) и работу с ним в ComboBox.dbItemID. Суть траблы такова. На прошлых примерах Вы показали как можно работать через SQL запрос с ComboBox. Сейчас у меня работает (Специализация)->(Фамилия)->(Категория). Немного изменив структуру формы (Редактирование базы) я хочу, что бы в соответствии с параметрами (Специализация)->(Фамилия)->(Категория), у меня была возможность выборки в ComboBox (Услуга) и (Стоимость). Базу (Price) я изменил по подобию (Doctors). Используя 

zapic_na_priem.Usluga.dbItemID := StrToInt( VarToStr( SQLExecute('SELECT id_Category FROM Price WHERE id = ' + IntToStr(zapic_na_priem.FIO_Doc.dbItemID) ) ) );;

в Combobox (Услуга) я получаю значение, например "Протезирование". Меняя врачей (Специализация)->(Фамилия)->(Категория), я могу получить только первую запись из базы (Price), принадлежащую конкретному врачу. Причем в Combobox (Услуга) у меня отображаются все услуги для всех врачей. Используя

zapic_na_priem.Usluga.Items.Clear;

я очищаю список, но получить весь список услуг для конкретного врача я не смогу.
По почте отправил на Ваш адрес измененную версию проекта.
Заранее огромное спасибо.

Re: Выбор с 2-х ComboBox в Edit

К сожалению не смог разобраться что к чему, нет сейчас времени чтобы разобраться как следует с проектом, будут конкретные вопросы, пишите )

Dmitry.