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

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

  1. evgen

    evgen Гость

    Репутация:
    0
    Здравствуйте! Пишу программу, по крайней мере, пытаюсь ее писать, но очень много трудностей возникает, надеюсь на вашу помощь.
    На форме есть TreeView и ListView, также ADOConnection и ADOQuery. и таблица Access: (см. рисунок)
    Связывание Treeview и Listview совместно с Access
    TreeView заполнен таким образом: (см. рисунок)
    Связывание Treeview и Listview совместно с Access
    С помощью 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 Гость

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

    evgen Гость

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

    etc Гость

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

    BurcevD Гость

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

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