Связывание Treeview и Listview совместно с Access

  • Автор темы evgen
  • Дата начала
E

evgen

#1
Здравствуйте! Пишу программу, по крайней мере, пытаюсь ее писать, но очень много трудностей возникает, надеюсь на вашу помощь.
На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)

TreeView заполнен таким образом: (см. рисунок)

С помощью ADOQuery я вывожу строки из таблицы в ListView: (см. код)
Код:
procedure TForm1.LoadTasks;
var
res, id_par, id_bab: string;
begin
TasksLV.Items.BeginUpdate;
TasksLV.Items.Clear;
case TreeView1.Selected.Parent.Index of
-1: id_par := 'where ID_parent = 0';
0: id_par := 'where ID_parent = 0';
1: id_par := 'where ID_parent = 1';
2: id_par := 'where ID_parent = 2';
end;
case TreeView1.Selected.Index of
0: id_bab := 'ID_baby = 0';
1: id_bab := 'ID_baby = 1';
2: id_bab := 'ID_baby = 2';
end;
ADOQuery1.SQL.Text := 'select * from task ' + id_par + ' and ' + id_bab;
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
with TasksLV.Items.Add do
begin
Data := Pointer(ADOQuery1.FieldByName('ID').AsInteger);
Caption := ADOQuery1.FieldByName('title').AsString;
SubItems.Add(ADOQuery1.FieldByName('description').AsString);
SubItems.Add(ADOQuery1.FieldByName('ID_parent').AsString);
SubItems.Add(ADOQuery1.FieldByName('ID_baby').AsString);
//SubItems.Add(ADOQuery1.FieldByName('run').AsString);
if ADOQuery1.FieldByName('run').AsInteger = 0 then res := 'Нет'
else res := 'Да';
SubItems.Add(res);
end;
ADOQuery1.Next;
end;
TasksLV.Items.EndUpdate;
end;
на событие изменения TreeView я поставил загрузку этой процедуры LoadTasks:
Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
LoadTasks;
end;
Но при компиляции программы, и на событие OnChange - TreeView, показ итемов в ListView происходит неправильно, как задумано. Помогите найти правильный ход решения моей задумки, и исправить ее.
Также выкладываю исходник своей программы.
Посмотреть вложение ListView.rar
Заранее благодарю!
 

Вложения

E
#2
1) Переписать, викинув ADOQuery1
2) Переписать с использованием параметризированных запросов
потом опять сюда ...
 
E

evgen

#3
B

BurcevD

#5
Вы не могли бы написать что именно вам нужно сделать, и зачем вам два поля, родитель и ребенок, если можно обойтись одним, как я понял Вам необходимо при выборе из дерева, показать задания, принадлежавшие выбранному. Или как!