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

Тема в разделе "Delphi - Базы данных", создана пользователем evgen, 18 мар 2009.

  1. evgen

    evgen Гость

    Здравствуйте! Пишу программу, по крайней мере, пытаюсь ее писать, но очень много трудностей возникает, надеюсь на вашу помощь.
    На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)
    [​IMG]
    TreeView заполнен таким образом: (см. рисунок)
    [​IMG]
    С помощью ADOQuery я вывожу строки из таблицы в ListView: (см. код)
    Код (Text):
    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:
    Код (Text):
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
    LoadTasks;
    end;
    Но при компиляции программы, и на событие OnChange - TreeView, показ итемов в ListView происходит неправильно, как задумано. Помогите найти правильный ход решения моей задумки, и исправить ее.
    Также выкладываю исходник своей программы.
    Посмотреть вложение ListView.rar
    Заранее благодарю!
     
  2. etc

    etc Гость

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

    evgen Гость

    А почему выкинув ADOQuery1?? А как без него???
    А что это за параметризированные запросы?? Можно поподробнее...
     
  4. etc

    etc Гость

    ADODataSet, ADOCommand
    F1 уже проштудировали?
     
  5. BurcevD

    BurcevD Гость

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

Поделиться этой страницей