Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 024

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Подскажите, как мне решить такую проблему: У меня есть таблица в Access в которой содержатся записи, подлежащие редактированию. Причем эти записи являются взаимосвязанными (id, parent_id) и представлены в виде дерева TTreeWiev. Я выбирая какой-нибудь узел в TreeWiev, а влевой части окна находятся DBEditы и DBLookupComboBoxы, для позиционирования которых на определенных строках таблицы я пользуюсь процедурой (см. вложение) Changing (вот тут мне кажется я и допускаю ошибку).
Проблема: Редактируется только первая запись таблицы (то есть только если я выбираю первый узел TTreeWiev), а остальные, почему-то только для чтения ( отображаться то отображаются, но не редактируются). Подскажите, как правильно позиционировать DataSet? И в чем у меня ошибка?

Приложение:
  1. procedure TRefConsultants.TwConsultantsChanging(Sender: TObject;
  2. Node: TTreeNode; var AllowChange: Boolean);
  3. var Ind: Integer;
  4. begin
  5.  
  6.  
  7.  
  8. {QuValues.Recordset.MoveFirst;
  9. while ( Ind > 0 ) and ( QuValues.Recordset.Fields.Item['id'].Value <> Ind ) do begin
  10. QuValues.Recordset.MoveNext;
  11. if (QuValues.Recordset.EOF) then Ind := 0;
  12.  
  13.  
  14.  
  15. while ( Ind > 0 ) and ( DataSource1.DataSet.FieldByName('id').Value <> Ind ) do begin
  16. DataSource1.DataSet.MoveBy(1);
  17. if ( DataSource1.DataSet.Eof ) then Ind := 0;
  18.  
  19.  
  20. end;


Меньшенин Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Меньшенин (статус: Посетитель)
Вопрос отправлен: 12 апреля 2010, 17:09
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 12 апреля 2010, 20:04; участников в обсуждении: 2.

12 апреля 2010, 19:07: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Программирование баз данных (БД) модератором Ерёмин А.А.

Тов. Женька

Тов. Женька (статус: 3-ий класс), 12 апреля 2010, 19:13 [#1]:

Что такое ConsultCodes?
Тов. Женька

Тов. Женька (статус: 3-ий класс), 12 апреля 2010, 19:21 [#2]:

В общем случае я бы поступил так.
1. Взял бы какой-нибудь DBTreeView и прицепил бы его к таблице.
2. Написал бы обработчик нажатия для него.
if Table.FieldByName('ParentID').AsInteger = 0 then
EditParent // какая-то процедура редактирования родителя
else EditChild; //какая-то процедура для редактирования

преимущество DBTreeView в том, что встав на какую-то запись в нем можно легко получить ID записи (Table.FieldByName('ID').AsInteger).
C простым TreeView все несколько сложнее, потому что надо в нем как-то хранить ID записей, а не обращаться к ним по абсолютному индексу из того же TreeView.
Меньшенин

Меньшенин (статус: Посетитель), 12 апреля 2010, 20:04 [#3]:

Спасибо за внимание.

ConsultCodes - массив, содержащий id из таблицы
то есть ConsultCodes[Node.AbsoluteIndex] - таким образом я получаю ID, к сожалению у меня нет компонента DBTreeView
_________________

а позиционировать Query надо с помошью метода Locate

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.03 сек.