| 
| 
 | Вопрос # 4 024/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Подскажите, как мне решить такую проблему: У меня есть таблица в Access в которой содержатся записи, подлежащие редактированию. Причем эти записи являются взаимосвязанными (id, parent_id) и представлены в виде дерева TTreeWiev. Я выбирая какой-нибудь узел в TreeWiev, а влевой части окна находятся DBEditы и DBLookupComboBoxы, для позиционирования которых на определенных строках таблицы я пользуюсь процедурой (см. вложение) Changing (вот тут мне кажется я и допускаю ошибку).
 Проблема: Редактируется только первая запись таблицы (то есть только если я выбираю первый узел TTreeWiev), а остальные, почему-то только для чтения ( отображаться то отображаются, но не редактируются). Подскажите, как правильно позиционировать DataSet? И в чем у меня ошибка?
 Приложение:Переключить в обычный режим procedure TRefConsultants.TwConsultantsChanging(Sender: TObject;  Node: TTreeNode; var AllowChange: Boolean);var Ind: Integer;begin   {QuValues.Recordset.MoveFirst; while ( Ind > 0 ) and ( QuValues.Recordset.Fields.Item['id'].Value <> Ind ) do begin  QuValues.Recordset.MoveNext;  if (QuValues.Recordset.EOF) then Ind := 0;   while ( Ind > 0 ) and ( DataSource1.DataSet.FieldByName('id').Value <> Ind ) do begin  DataSource1.DataSet.MoveBy(1);  if ( DataSource1.DataSet.Eof ) then Ind := 0;  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
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |