|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Выборка в DBGrid по выбору узла в TreeView
Добрый день!
Опишу свою задачку. Есть две таблицы в 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. |