Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2014, 15:39   #1
Максим1818
Пользователь
 
Регистрация: 06.02.2014
Сообщений: 29
По умолчанию Combobox и Master-Detail

Господа, есть 2-а комбобокса и так же 2-е таблицы в MS SQL

нужно, чтобы на основании параметра, выбранного в "Виде простоя", в "Группу простоя" загружались во второй Combobox только те записи из соответствующей таблицы, которые соответствуют параметру вида простоя?

Т.е., допустим, есть у вас таблица "продукт" и таблица "марки продуктов". В "продуктах" - только наименования, например "рис", "макароны" и т.д. В "марках продуктов" - соответствия вида "Макфа|макароны", "Вау|рис", "Мискузи|рис" и т.д.
Соответственно, если выбранный продукт - "макароны", то нужно вывести только те марки продуктов, которые соответствуют макаронам.
Максим1818 вне форума Ответить с цитированием
Старый 12.02.2014, 16:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Вы ещё одну тему про тоже самое решили создать... ну-ну....

по сути, чудес на свете не бывает, плясать надо от структуры таблиц: во второй таблице должны быть данные (например, foreign key == внешний ключ), ссылка на первую таблицу.
Тогда, на событие изменения значения в первом комбобоксе, вы передаёте параметер (ID выбранного значение) в запрос, с которым связан второй комбобокс.

Понятно? или пояснить на пальцах?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.02.2014, 16:52   #3
Максим1818
Пользователь
 
Регистрация: 06.02.2014
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы ещё одну тему про тоже самое решили создать... ну-ну....

по сути, чудес на свете не бывает, плясать надо от структуры таблиц: во второй таблице должны быть данные (например, foreign key == внешний ключ), ссылка на первую таблицу.
Тогда, на событие изменения значения в первом комбобоксе, вы передаёте параметер (ID выбранного значение) в запрос, с которым связан второй комбобокс.

Понятно? или пояснить на пальцах?
Все понятно, буду настраивать связи с таблицами
а что дальше та нужно будет делать ?
Максим1818 вне форума Ответить с цитированием
Старый 12.02.2014, 23:01   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Максим1818 Посмотреть сообщение
Господа, есть 2-а комбобокса и так же 2-е таблицы в MS SQL

нужно, чтобы на основании параметра, выбранного в "Виде простоя", в "Группу простоя" загружались во второй Combobox только те записи из соответствующей таблицы, которые соответствуют параметру вида простоя?

Т.е., допустим, есть у вас таблица "продукт" и таблица "марки продуктов". В "продуктах" - только наименования, например "рис", "макароны" и т.д. В "марках продуктов" - соответствия вида "Макфа|макароны", "Вау|рис", "Мискузи|рис" и т.д.
Соответственно, если выбранный продукт - "макароны", то нужно вывести только те марки продуктов, которые соответствуют макаронам.
Начинаем

1.
Код:
create Database T1;
---------------------- продукт----------------------
create table Product 
(
P_id int identity(1,1) primary key,
P_Naimenovanie nvarchar(40)
)
----------------------марки продуктов----------- 
Create table brand_products
(
  bp_id int identity(1,1),
  bp_marka nvarchar(30),
  P_id int not null ,
  constraint fk_brProduct  foreign key ( P_id ) references Product(P_id) 
  )
2.
Код:
  insert into Product(P_Naimenovanie)
   values ('Сахар'),
               ('макароны'),
               ('Кофе')
3.
Код:
insert into brand_products (bp_marka, P_id)
values ('Экстра',1),
           ('Сахар-Песок',1),
           (' крупы',1), 
            ('Makfa',2),
           ('Сэн Сой',2),
           ('Жменька',2) ,
           ('Altura',3),
           ('Good Washed',3),
           ('Central Standart',3)
объединение таблиц Product и brand_products с помощью inner join и сохраняем это запрос
Код:
    select  p.P_id, p.P_Naimenovanie, bp.bp_marka
    from Product  p 
    inner join brand_products bp
    on p.P_id = bp.P_id
4. И начинаем из Delphi
ADOQuery1 = qryProduct где пишем просто
Код:
select * from Product
5. Combobox1 = cbbProduct из который должен выбрать наименование товаров . На форму из свойства OnCreate пишем
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with qryProduct do
    begin
      DisableControls;
      cbProduct.Items.BeginUpdate;
      First;
      while not Eof do
        begin
          cbProduct.Items.Add(FieldByName('P_Naimenovanie').AsString);
          Next;
        end;
      cbProduct.Items.EndUpdate;
    EnableControls;
    end;
 end;
все при запуске все наименование товаров заливается Combobox1 = cbbProduct .
Осталось что бы при выбору Combobox1= наименование! отображалось на ComboBox2=марка .
6. Берем 2 Query = qrybrand_products и ComboBox2= cbMarka ! На Combobox1 = cbbProduct из свойства OnChange пишем
Код:
procedure TForm1.cbProductChange(Sender: TObject);
begin
  qrybrand_products.Close;
  qrybrand_products.SQL.Clear;
  qrybrand_products.SQL.Add('select  p.P_id, p.P_Naimenovanie, bp.bp_marka '+
                            'from Product  p '+
                            'inner join brand_products bp '+
                            ' on p.P_id = bp.P_id  ');
  qrybrand_products.SQL.Add('where  p.P_Naimenovanie LIKE '''+ cbProduct.Text+ '%' +'''');
  qrybrand_products.Open;
   //  ------------------Заполняем ComboBox2= cbMarka ----------------------//
  cbMarka.Items.Clear;
  While not qrybrand_products.Eof do
  begin
     cbMarka.Items.Add(qrybrand_products.Fields[2].AsString);
     qrybrand_products.Next;
  end;

end;
И все задача решается . Чем сложное есть задача ! Чем больше способ есть решать его . Но надо (шаг за шагом) . Думаю все понятно и как это выглядит у меня смотрите видео http://www.youtube.com/watch?v=iC47b...ature=youtu.be
Изображения
Тип файла: jpg 1.jpg (36.0 Кб, 136 просмотров)

Последний раз редактировалось xxbesoxx; 12.02.2014 в 23:04.
xxbesoxx вне форума Ответить с цитированием
Старый 13.02.2014, 10:10   #5
Максим1818
Пользователь
 
Регистрация: 06.02.2014
Сообщений: 29
По умолчанию

Спасибо Вам, сейчас буду пытаться сделать
Максим1818 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Master Detail. добавление редактирование t.baychorov БД в Delphi 1 10.12.2011 14:23
Master-detail DELPHI+FIREBIRD Liones БД в Delphi 1 30.11.2010 13:27
Master-Detail (Динамиичское создание и разрыв) DelphiQuestions БД в Delphi 0 23.12.2009 23:35
Сценарий Master-Detail в WPF Antonio_M Общие вопросы .NET 0 28.08.2009 10:33
Master-detail отчет Fast Report. truevoxdei Компоненты Delphi 3 28.04.2009 13:20