ОБСУЖДЕНИЕ

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

4 ответов 6,9 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Здравствуйте! Пишу программу, по крайней мере, пытаюсь ее писать, но очень много трудностей возникает, надеюсь на вашу помощь.
На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)
link removed
TreeView заполнен таким образом: (см. рисунок)
link removed
С помощью 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
Заранее благодарю!
 
1) Переписать, викинув ADOQuery1
2) Переписать с использованием параметризированных запросов
потом опять сюда ...
 
Вы не могли бы написать что именно вам нужно сделать, и зачем вам два поля, родитель и ребенок, если можно обойтись одним, как я понял Вам необходимо при выборе из дерева, показать задания, принадлежавшие выбранному. Или как!