![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Добрый день!
Опишу свою задачку. Есть две таблицы в MS SQL Оборудование (id_ob, name_ob,otdel) и Отделы (id_ot, otdel_name). Связь id_ot-otdel. (что-то вроде какое оборудование в каком отделе). На форме есть TreeView, в который загружаются данные из таблицы Отделы и Сотрудники.(см.рис). Так же есть DGGrid, в котором отображены все записи из таблицы оборудование. Хочу сделать следующее: при выборе в TreeView отдела в DBGrid должно отображаться оборудование, которое есть в данном отделе. (вроде задачка-то простая, но я никак не соображу как ее сделать )рис.отделы&сотруднки.jpg |
|
#2
|
|||
|
|||
|
фильтровать набор данных на который ссылается DBGRID, при клике или смене узла в дереве.
|
|
#3
|
||||
|
||||
|
ммм...спасибо! попробую разобраться с этим
![]() |
|
#4
|
|||
|
|||
|
А можете примером(кодом) показать, меня тоже интересует такой вопрос, но вообще не знаю как делать!!
|
|
#5
|
|||
|
|||
|
Цитата:
Общая стратегия такая. При загрузке TTreeView где-нить в узлах (Node.Data, например) сохраняем соотв. ID'ы. Далее 2 варианта. 1. При клике на узле просто переоткрываем параметризованный запрос. Значение параметра берем из сохраненного ID'а. 2. На источнике данных делаем фильтрацию в событии OnFilterRecord, в котором собственно по сохраненному ID'у и отбираем записи. Второй вариант оптимален, если список, в данном случае оборудования, не очень большой. |
|
#6
|
|||
|
|||
|
Не очень то поняла, в какой процедуре и как писать?
Я Treeview заполняю из БД : Код:
Query7.Open;
for i:=0 to Query7.RecordCount-1 do begin
str:=Query7.FieldByName('Num').AsString+'-'+Query7.FieldByName('Spec').AsString;
TreeView1.Items.Add(nil, str);
if i<Query7.RecordCount-1 then Query7.Next;
end;
Query7.Close;
Query6.Open;
for i:=0 to Query6.RecordCount-1 do begin
str:=Query6.FieldByName('Num').AsString+'-'+Query6.FieldByName('Spec').AsString;
//-----
For j:=0 to TreeView1.Items.Count-1 do begin
if (TreeView1.Items.Item[j].Text = str) then begin
item:=j;
break;
end;
end;
TreeView1.Items.AddChild(TreeView1.Items.Item[item],Query6.FieldByName('Name').AsString);
//-------
if i<Query6.RecordCount-1 then Query6.Next;
end;
Query6.Close;Код:
procedure TForm1.ComboBox1Change(Sender: TObject); begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Text:='SELECT Stud_fam FROM stud WHERE GodPostup='+QuotedStr(ComboBox1.Text); Query1.Open; end; и в итоге в DbGrid должен выйти список соответсвующий этим двум параметрам Id_group и GodPostup. Сортировка по году у меня выходит а вот чтобы и выбор и группы из дерева не получается т.к. я не знаю как это сделать. Помогите пожалуйста! Последний раз редактировалось Admin, 10.04.2011 в 16:05. |