Показать сообщение отдельно
  #2  
Старый 13.05.2022, 17:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Можно проще. Просто проверяй на изменене значения в поле Dep и только в этом случае создавай новый узел.

Как-то так:
Код:
  DepName := '';
  DepNode := Nil;
  addroot := XmlDoc.AddChild('City');
  while Not ADOQ.Eof do
    begin
	  if DepName <> ADOQ.FieldByName('Dep').AsString Then
	    begin
          DepNode := root.AddChild('Dep');
          DepNode.SetAttribute(WideString('NameDep'), ADOQ.FieldByName('Dep').AsString);
          DepName := ADOQ.FieldByName('Dep').AsString;
		end;  
      addnewchild := DepNode.AddChild('User');
      addnewchild.SetAttribute(WideString('Name'),ADOQ.FieldByName('Name_user').AsString);
      addnewchild.SetAttribute(WideString('Mail'),ADOQ.FieldByName('Mail_user').AsString);
	  ADOQ.Next
    end;
Ответить с цитированием