Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 10 дек 2018 16:55

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 293 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20
Автор Сообщение
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 мар 2018 12:53 
Гуру
Гуру

Зарегистрирован:
27 июл 2011 08:37
Сообщения: 165
Откуда: м.Рівне
Доброго дня. Підкажіть, що не так в коді.
//Місце розташування земельної ділянки
ParcelLocation:='';
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelLocation/Urban')
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress')
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement')
then ParcelLocation:=ParcelLocation+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement');
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType')
and IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName')
then begin
ParcelLocation:=ParcelLocation+', '+sef(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType'),'XMLToIn4StreetTypes.txt')+
XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName');
if ParcelLocation<>''
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building')
then ParcelLocation:=ParcelLocation+', '+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building');
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block')
then ParcelLocation:=ParcelLocation+', корп.'+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block');
end;
end;
end;
AdresaZD:=ParcelLocation+' '+RayonROP+' '+RegionROP;
AdresaZD1:='в '+AdresaZD;
AdresaZD2:=Region+', '+Rayon+', '+ParcelLocation;
AdresaZDTIT:='в '+ParcelLocation+#13#10+RayonROP+#13#10+RegionROP;
end
else begin
ParcelLocation:='на території '+radarop+'ради (за межами населених пунктів) '+RayonROP+' '+RegionROP;
AdresaZD:=ParcelLocation;
AdresaZD1:=ParcelLocation;
AdresaZD2:=Region+', '+Rayon+', '+Rada+' рада (за межами населених пунктів)';
AdresaZDTIT:='на території '+radarop+'ради '+#13#10+'(за межами населених пунктів)'+#13#10+RayonROP+#13#10+RegionROP;
end;


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 мар 2018 13:35 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 261
Откуда: м.Львiв
shyrko писал(а):
Доброго дня. Підкажіть, що не так в коді.

яка помилка, який результат очiкуєте? що пiд вiдладчиком?
Пiсля перевiрки /ParcelAddress Ви виходите, хоча параметер /Settlement є в iншому тезi, вищому. Ну i т.д.

Код:
//Місце розташування земельної ділянки
XML573Root:=IIF(IsNodeExists('InfoPart'),'','EmbeddedXML/UkrainianCadastralExchangeFile/');
S:='Setup.ini';
cadnum:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralZoneNumber');   
RegionID   := Copy(cadnum,1,2);
RayonID    := Copy(cadnum,1,5);
//Область
Region     := Trim(File(S,'RepНазва(Область)'));
RegionROP  := Trim(File(S,'RepНазваР(Область)'));                           
//Район                     
Rayon      := Trim(File(S,'RepНазва(Район)'));
RayonROP   := Trim(File(S,'RepНазваР(Район)'));                           
// Рада
Rada       := Trim(File(S,'RepНазва(Сільрада)'));
   
ParcelLocation:='';
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelLocation/Urban') then begin
   if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement') then
      ParcelLocation:=ParcelLocation+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement');
   if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress') then begin
      if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType')
         and IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName') then begin
            ParcelLocation:=ParcelLocation+', '+sef(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType'),'XMLToIn4StreetTypes.txt')+
               XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName');
            if ParcelLocation<>'' then begin
               if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building') then
                  ParcelLocation:=ParcelLocation+', '+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building');
                  if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block') then
                     ParcelLocation:=ParcelLocation+', корп.'+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block');
            end;
      end;
   end;
   AdresaZD:=ParcelLocation+' '+RayonROP+' '+RegionROP;
   AdresaZD1:='в '+AdresaZD;
   AdresaZD2:=Region+', '+Rayon+', '+ParcelLocation;
   AdresaZDTIT:='в '+ParcelLocation+#13#10+RayonROP+#13#10+RegionROP;
end else begin
   ParcelLocation:='на території '+radarop+'ради (за межами населених пунктів) '+RayonROP+' '+RegionROP;
   AdresaZD:=ParcelLocation;
   AdresaZD1:=ParcelLocation;
   AdresaZD2:=Region+', '+Rayon+', '+Rada+' рада (за межами населених пунктів)';
   AdresaZDTIT:='на території '+radarop+'ради '+#13#10+'(за межами населених пунктів)'+#13#10+RayonROP+#13#10+RegionROP;
end;

_________________
Простіше написати неправильну програму, ніж зрозуміти правильну


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 26 июл 2018 17:07 
Эксперт
Эксперт

Зарегистрирован:
13 дек 2007 18:43
Сообщения: 50
Откуда: м.Полонне
Bondarets Alexander писал(а):
Цитата:
Цель сделать смежников так:
1. Вася Пупкин
2. Петя Пупкин
3. Сільська рада
но иногда смежники дублируются, например рада может быть в двух и больше и получается вот так
1. Вася Пупкин
2. Петя Пупкин
3. Сільська рада
4. Сільська рада
а надо чтоб если смежник дублируется он не записывался

Переписал вашу функцию, с учетом возможного дублирования. Убрал переменную Delimiter - она там не нужна.
Код:
function PrepareXMLSmejList: string;
var
  I, N, FoundI: Integer;
  PPath, NbrPath, Nbr: string;
  List: TStringList;       
begin
  Result:='';

  // путь к блоку смежных участков                                                                                                     
  PPath:='EmbeddedXML/UkrainianCadastralExchangeFile/InfoPart/CadastralZoneInfo/' +
    'CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/AdjacentUnits';

  // кол-во смежников                                           
  N:=NodesCount(PPath,'AdjacentUnitInfo');
  if N<1 then Exit;
   
  List := TStringList.Create;
  try
   
    // сначала получаем названия смежников и заносим их в список
    for I:=1 to N do
    begin
     
      // путь к текущему смежнику                                                                 
      NbrPath := PPath + '/AdjacentUnitInfo['+IntToStr(I)+']/Proprietor'; 
         
      if IsNodeExists(NbrPath + '/NaturalPerson') then
        // физлицо                                         
        Nbr := XPath(NbrPath + '/NaturalPerson/FullName/LastName') + ' ' +
               XPath(NbrPath + '/NaturalPerson/FullName/FirstName') + ' ' +
               XPath(NbrPath + '/NaturalPerson/FullName/MiddleName') else
        // юрлицо
        Nbr := XPath(NbrPath + '/LegalEntity/Name');

      // проверяем или такой смежник уже есть в списке
      // и добавляем только новых
      // сравнение строк с учетом регистра!
      if not List.Find(Nbr, FoundI) then
        List.Add(Nbr);
         
    end;

    // формируем строку смежников
    for I := 0 to List.Count -1 do
    begin
      // если это не первая строка, добавляем перенос строки
      if Result <> '' then Result := Result + #13#10;
      Result := Result + IntToStr(I + 1) + '. ' + List[I];                                                                       
    end;             
     
  finally
    List.Free;                                   
  end;             
   
end;

Разбил формирование списка смежников на 2 этапа. На первом в список строк заносятся смежники по одному. При добавлении в список выполняется проверка на наличие данного смежника в списке. На втором этапе из строкового списка формируется результирующая строка.

Если что-то непонятно, спрашивайте.


Все таки в цьому коді дублює Natural person. Підкажіть де підправити.
Дякую.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 26 июл 2018 17:52 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1983
Откуда: Vinnitsa
Суміжники мабуть відрізняються, код нормальний

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 26 июл 2018 18:21 
Эксперт
Эксперт

Зарегистрирован:
13 дек 2007 18:43
Сообщения: 50
Откуда: м.Полонне
Dmitry_Zolotar писал(а):
Суміжники мабуть відрізняються, код нормальний


Найшов причину, юридична особа повинна бути з великої букви.

Дякую.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 12 авг 2018 12:00 
Специалист
Специалист

Зарегистрирован:
18 июл 2011 09:16
Сообщения: 35
Здравствуйте. Помогите пожалуйста с кодом. Есть у меня шаблон в репортсе. Делал я им техническую документацию на физ лиц и горя не знал, но тут пришло время делать на юр. лиц, а шаблон тупо зависает намертво, в отладке показывает ошибку на (картинка вложенная). Помогите пожалуйста, уже волосы дыбом стают, а понять так и не могу,чего хочет этот код?


Вложения:
.jpg [139.14 Кб]
Скачиваний: 0
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 13 авг 2018 09:22 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1983
Откуда: Vinnitsa
Vaho писал(а):
Здравствуйте. Помогите пожалуйста с кодом. Есть у меня шаблон в репортсе. Делал я им техническую документацию на физ лиц и горя не знал, но тут пришло время делать на юр. лиц, а шаблон тупо зависает намертво, в отладке показывает ошибку на (картинка вложенная). Помогите пожалуйста, уже волосы дыбом стают, а понять так и не могу,чего хочет этот код?

Без шаблона это сделать проблематично. Все что увидел - отсутствие слеша в выражении
XML573Root := 'EmbeddedXML/UkrainianCadastralExchangeFile/';
Все XPath-запросы с использованием этой переменной могут быть некорректны. Но и к зависанию не должны приводить.
Первое условие можно заменить такой строкой.
XML573Root:=IIF(IsNodeExists('InfoPart'),'','EmbeddedXML/UkrainianCadastralExchangeFile/');

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 02 окт 2018 11:09 
Гуру
Гуру

Зарегистрирован:
27 июл 2011 08:37
Сообщения: 165
Откуда: м.Рівне
Доброго дня! Необхідно отримати список співвласників у родовому, давальному і т.д. відмінках. Чи можна це реалізувати використовуючи одну функцію, чи для кожного відмінка треба використовувати окрему функцію?


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 293 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB