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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 13:57   #1
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию Использование компонента TreeView

Имеется бд технология ADO нужно по нажатию на каждую категорию в трее открывать таблицу в DBGrid.
girz вне форума Ответить с цитированием
Старый 16.05.2009, 09:18   #2
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

как связать компонент TreeView c DBgrid
То есть в TreeView есть дерево и при открытие категорий должно открываться соответствующая база в DBgrid. Технология ADO+Access+Delphi
Компоненты ADOconection, ADOtable,datasource

Или подскажите другой способ, как организовать дерево, с последущем выводом в dbgrid.

+Электроника
-Оргтехника
___+Сканеры
___+Монитор
___-Принтер
_____+Лазерные
______-Струиные - вывод списка книг по струиным принтерам в dbgrid
+Математика

Последний раз редактировалось girz; 16.05.2009 в 09:23.
girz вне форума Ответить с цитированием
Старый 16.05.2009, 11:32   #3
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

В бд есть таблицы "Электроника, Оргтехника, Принтер, Лазерные"
Или все данные хранятся в одной таблице?
Используйте ADOQuery, в строке запроса делайте выборку в зависимости от выделенного элемента в TreeView
S@fer вне форума Ответить с цитированием
Старый 16.05.2009, 13:06   #4
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

Цитата:
Сообщение от S@fer Посмотреть сообщение
В бд есть таблицы "Электроника, Оргтехника, Принтер, Лазерные"
Да в бд access есть такие таблицы.

Цитата:
Сообщение от S@fer Посмотреть сообщение
Или все данные хранятся в одной таблице?
И такое есть, такой вариант более предпочителен, чем первый.

Цитата:
Сообщение от S@fer Посмотреть сообщение
Используйте ADOQuery, в строке запроса делайте выборку в зависимости от выделенного элемента в TreeView
Можно поподробнее.
girz вне форума Ответить с цитированием
Старый 16.05.2009, 13:15   #5
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Тогда код запроса будет примерно следующим
Код:
procedure TForm1.TreeView1Click(Sender: TObject);
begin
AdoQuery.Active:=False;
AdoQuery.SQL.Clear;
AdoQuery.SQL.Add('SELECT * FROM Tablica WHERE Категория="'+TreeView1.Selected.Text;+'"');
AdoQuery.Active:=True;
end;
Если все находится в одной таблице
и
Код:
procedure TForm1.TreeView1Click(Sender: TObject);
begin
AdoQuery.Active:=False;
AdoQuery.SQL.Clear;
AdoQuery.SQL.Add('SELECT * FROM "'+TreeView1.Selected.Text;+'"');
AdoQuery.Active:=True;
end;
если в разных, с учетом что таблицы называются также как написаны в TreeView
S@fer вне форума Ответить с цитированием
Старый 16.05.2009, 19:33   #6
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

А как заставить выводить то что выбрали в View1Click в dbgrid

Последний раз редактировалось mihali4; 14.03.2010 в 13:31.
girz вне форума Ответить с цитированием
Старый 17.05.2009, 09:43   #7
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Кидаете на форму ADOQuery, DataSource, DBGrid.
Затем ADOQuery в свойстве Connection выбираете свое соединение,
В DataSource в свойстве DataSet выбираете ADOQuery,
В DBGrid в свойстве DataSource выбираете свой DataSource,
затем при выполнении запроса (который выше). данные будут отображаться в DBGrid'e

Последний раз редактировалось mihali4; 14.03.2010 в 13:31.
S@fer вне форума Ответить с цитированием
Старый 31.05.2009, 09:28   #8
girz
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 43
По умолчанию

А как заполнить treeview из таблицы access, с помощью технологии ado. Причем предыдущие взаимодействие с dbgrid должно работать.
girz вне форума Ответить с цитированием
Старый 01.06.2009, 10:28   #9
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

для варианта когда всё в разных таблицах.
на onShow формы киньте такой обработчик:
Код:
var 
....
table_names:TStrings;
index:integer;
....
 begin 
.....
  adoconnection1.GetTableNames(table_names,false);
  for index:=0 to table_names.count-1 do
   treeview1.items.add(treeview1.items[0],table_names[i]) ;
.......
для варианта когда всё в одной таблице
Код:
 adoquery.active:=false;
 adoquery.sql.clear;
 adoquery.sql.text:='select distinct <field_with_categories> from <table_name>' ;
 adoquery.open;
 while not adoquery.eof do
  begin
   treeview1.items.add(treeview1.items[0], adoquery.fields[0].value);
   adoquery.next; 
  end;
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
treeview cheef Компоненты Delphi 3 15.04.2009 15:18
TreeView ddr111 Общие вопросы Delphi 7 31.03.2009 00:35
использование компонента TreeWiev другой формы White Общие вопросы Delphi 2 29.08.2008 10:25
Использование внешнего компонента Gray[cLmT] Общие вопросы Delphi 1 16.04.2008 10:18