Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обновление TreeView, обновление TreeView 
:(
    Опции темы
alf138
Дата 21.10.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Возникла необходимость добавления данных в бд, но при этом TreeView не обновляется, пытался как
TreeView.Refresh
TreeView.Update
Заполнял TreeView
Код


TreeView1.Items.BeginUpdate;
TreeView1.SortType:=stNone;
TreeView1.Items.Clear;
DataModule1.SQL_QUERY.Close;
DataModule1.SQL_QUERY.SQL.Clear;
DataModule1.SQL_QUERY.SQL.Text:='SELECT DISTINCT date  from tel';  
DataModule1.SQL_QUERY.Open;
while not DataModule1.SQL_QUERY.Eof do
begin
n1:=TreeView1.Items.Add(nil, DataModule1.SQL_QUERY.FieldByName('date').AsString);
f1:=DataModule1.SQL_QUERY.FieldByName('date').AsString;   
DataModule1.SQL_QUERY.Next;
//****************************************************************************//
  DataModule1.plan.Close;
DataModule1.plan.SQL.Clear;                      
DataModule1.plan.SQL.Add('select DISTINCT Postav.name, postav from tel  '
                        +' inner join postav on tel.postav=postav.Id'
                        +' where Дата=:date');
DataModule1.plan.Parameters.ParamByName('date').Value:=f1;
DataModule1.plan.Open;
if DataModule1.plan.RecordCount>0 then 
 begin
   DataModule1.plan.First;
   while not DataModule1.plan.Eof do
   begin                                   
     n2:=TreeView1.Items.AddChild(n1,DataModule1.plan.Fields[0].AsString);
     f2:=DataModule1.plan.FieldByName('postav').AsString;  
     DataModule1.plan.Next;
//****************************************************************************//
   DataModule1.plan_ot4et_Query.Close;           
   DataModule1.plan_ot4et_Query.SQL.Clear;
   DataModule1.plan_ot4et_Query.SQL.Text:='select*'
                                          +' from tel'
                                          +' inner join name_tel'
                                          +' on tel.name=name_tel.id'
                                          +' where postav=:pos and date=:date';
   DataModule1.plan_ot4et_Query.Parameters.ParamByName('pos').Value:=f2;
   DataModule1.plan_ot4et_Query.Parameters.ParamByName('date').Value:=f1;
   DataModule1.plan_ot4et_Query.Open;
    if DataModule1.plan_ot4et_Query.RecordCount>0 then
    begin
      DataModule1.plan_ot4et_Query.First;
      while not DataModule1.plan_ot4et_Query.Eof do
      begin
      n3:=TreeView1.Items.AddChild(n2,DataModule1.plan_ot4et_Query.Fields[8].AsString);
      f3:=DataModule1.plan_ot4et_Query.FieldByName('tel.Id').AsString;
      DataModule1.plan_ot4et_Query.Next;
//****************************************************************************//
    DataModule1.zayavka.Close;           
    DataModule1.zayavka.SQL.Clear;
    DataModule1.zayavka.SQL.Text:='select* from naem_tel'
                                  +' where id_блока=:id';
    DataModule1.zayavka.Parameters.ParamByName('id').Value:=f3;
    DataModule1.zayavka.Open;
    if DataModule1.zayavka.RecordCount>0 then
    begin
      DataModule1.zayavka.First;
      while not DataModule1.zayavka.Eof do
      begin
        n4:=TreeView1.Items.AddChild(n3, DataModule1.zayavka.Fields[3].AsString);
        f4:=DataModule1.zayavka.FieldByName('id').AsString;
        DataModule1.zayavka.Next;
//****************************************************************************//
     DataModule1.SQL_QUERY2.Close;
      DataModule1.SQL_QUERY2.SQL.Clear;
      DataModule1.SQL_QUERY2.SQL.Text:='select*'
                                      +' from name_tel'
                                      +' inner join sostoya on name_tel.sostoya=sostoya.id'
                                      +' where name_tel.id=:ids';
      DataModule1.SQL_QUERY2.Parameters.ParamByName('ids').Value:=f4;
      DataModule1.SQL_QUERY2.Open;
      if DataModule1.SQL_QUERY2.RecordCount>0 then
      begin
        DataModule1.SQL_QUERY2.First;
        while not DataModule1.SQL_QUERY2.Eof do
        begin
          n5:=TreeView1.Items.AddChild(n4,DataModule1.SQL_QUERY2.Fields[5].AsString);
          DataModule1.SQL_QUERY2.Next;
        end;
      end;
      end;
       end;
      end;
    end;
   end;
 end;
 end;
TreeView1.Items.EndUpdate;
end;


Это сообщение отредактировал(а) alf138 - 21.10.2011, 15:13
PM MAIL   Вверх
AndreyIQ
Дата 21.10.2011, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Первое что бросается в глаза, есть BeginUpdate, но нет EndUpdate
PM MAIL   Вверх
alf138
Дата 21.10.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Цитата(AndreyIQ @  21.10.2011,  14:57 Найти цитируемый пост)
Первое что бросается в глаза, есть BeginUpdate, но нет EndUpdate 

извините, не до конца скопировал ...
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



alf138
Когда добавляется новая запись, то сразу идет перестройка дерева? и новая запись в это дерево не попадает?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
alf138
Дата 21.10.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Сразу должна идти в дерево, изменятся "Неисправно" на "исправно"
PM MAIL   Вверх
AndreyIQ
Дата 21.10.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Цитата

Возникла необходимость добавления данных в бд, но при этом TreeView не обновляется

Проблем с транзакциями нет? Данные во всех квери появляются?
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(alf138 @  21.10.2011,  15:21 Найти цитируемый пост)
Сразу должна идти в дерево, изменятся "Неисправно" на "исправно"

Тут уже идет противоречивость. Должно добавится в дерево или измениться в дереве?

Можете еще кинуть кусок который добавляет запись в базу?



--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
alf138
Дата 21.10.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Изменяться в бд
Код

DataModule1.SQL_QUERY.Close;
DataModule1.SQL_QUERY.SQL.Clear;
DataModule1.SQL_QUERY.SQL.Text:='UPDATE name_tel SET sosoyan =1 WHERE name_tel=:nam';
DataModule1.SQL_QUERY.Parameters.ParamByName('nam').Value:=ComboBox2.Text;

PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



alf138
А когда закрываете приложение и заново заходите, то запись в дереве изменена?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
alf138
Дата 21.10.2011, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  21.10.2011,  15:37 Найти цитируемый пост)
А когда закрываете приложение и заново заходите, то запись в дереве изменена? 

да, но не вариант заново пересобирать дерево и так ощущается загрузка...

Это сообщение отредактировал(а) alf138 - 21.10.2011, 15:41
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Если смотреть на ваш код, то там идет пересборка дерева. Хотя я не вижу перед сборкой очистки дерева

Добавлено через 3 минуты и 41 секунду
Как у вас работает программа? Вы грузите дерево, потом юзер выбирает какой-то элемент в дереве, после чего что-то заполняет и жмет сохранить/обновить и вам нужно обновить запись в базе и в дереве?

Если да, то когда мы жмем сохранить, нужный элемент в дереве должен быть выделен и чтобы его обновить достаточно выполнить TreeView1.Selected.Text:='fbf';


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
alf138
Дата 21.10.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



дерево имеет информативный характер, т.е юзер смотрит что в дереве видит что что то не так, открывает другую форму в ней меняет все что нужно, из закрывает ее, после закрытия второй формы и изменения данные должны изменится. Но они не меняются...
чистка дерева TreeView1.Items.Clear;, нет ?
PM MAIL   Вверх
chip_and_dayl
Дата 21.10.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата

чистка дерева TreeView1.Items.Clear;, нет ?

Да. Очистка дерева

Добавлено через 57 секунд
можно хотябы скриншот вашего приложения с деревом!?!


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
AndreyIQ
Дата 21.10.2011, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Цитата(AndreyIQ @ 21.10.2011,  15:21)
Цитата

Возникла необходимость добавления данных в бд, но при этом TreeView не обновляется

Проблем с транзакциями нет? Данные во всех квери появляются?


PM MAIL   Вверх
alf138
Дата 21.10.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



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

DataModule1.SQL_QUERY.Close;
DataModule1.SQL_QUERY.SQL.Clear;
DataModule1.SQL_QUERY.SQL.Text:='UPDATE name_tel SET sosoyan =1 WHERE name_tel=:nam';
DataModule1.SQL_QUERY.Parameters.ParamByName('nam').Value:=ComboBox2.Text;
DataModule1.SQL_QUERY.ExecSQL;
glavnaya.Form1.TreeView1.Update;

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1047 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.