Звіти в ГІС 6

Геодезична інформаційна система 6 та Геодезична інформаційна система 6 Агро

Модератори: NickS, feNICKs

zigura_a
Повідомлень: 37
З нами з: 19 березня 2014, 08:26

Re: Отчеты в GIS6

Повідомлення zigura_a » 16 травня 2014, 08:47

feNICKs писав:
zigura_a писав:Підскажіть якщо в мене є два участка в гіс6 то чи можу я роздруквати технічну документацію щоб програма сама сплюсувала площі обох участків і вивела загальну площу і щоб в адресі розміщення ділянки також вказувались адреси обох участків. Дякую за відповідь

Ну тут не все так просто... Это нужно делать отчетную форму (техничку) для помеченных участков зеленной меткой т.е. применить фильтр + в цикле перебирать все участки с зеленной меткой и суммировать площадь( например, ObjectArea := ObjectArea + <DM1.QbObject."Area">). А с адресом, либо так (ObjectAdress := ObjectAdress + <DM1.QbObject."Address">), либо делать анализ по кадастровому номеру и собирать адрес по кусочкам (область, район, совет, нас.пункт, улица, дом).

Цикл по отмеченным:

Код: Виділити все

VAR
   ObjectArea : Double;
   City, Street, StreetTo, Address, Numb_House : String;

BEGIN //основное тело (начало)
   OneObject := True;
   //-----> Для помес.зелен.меткой

    ID_Object := <DM1.QbObject."ID_Object">;  // Присваиваем текущий указатель
    FilterData('DM1.QbObject', 'OK = ''ю'''); // Фильтруем по отмеченным

    //Проверяем сколько отмечено участков и есть ли такие

    If RecordCount( 'DM1.QbObject') > 0 Then
    Begin
       If RecordCount('DM1.QbObject') > 1 Then
          OneObject := False;
        DataFirst( 'DM1.QbObject');
    End
    Else
    Begin
        FilterData( 'DM1.QbObject', '');  //Снимаем фильтр
        LocateData( 'DM1.QbObject', 'ID_Object', VarToStr(ID_Object)); //Возвращаем указатель на место
    End;

     //-----> Цикл по відміченим (початок)
    Repeat
       
        ObjectArea := ObjectArea + <DM1.QbObject."Area">; // Площа

        SeekIKN( <DM1.QbObject."IKN">);
         
         City := '';
         Street := '';
         StreetTo := '';
         Numb_House := '';

        // Адреса
        If <DM1.QbObject."ID_TypeLocation"> = 0 Then
        Begin
           //Населений пункт
           If (Length( Name_Place) > 0) And ((Pos( 'м.', Name_Place) > 0) Or (Pos( 'с.', Name_Place) > 0) Or (Pos( 'смт',Name_Place) > 0) Or (Pos( 'c-', Name_Place) > 0)) Then
              City := ( Name_Place)
              Else
              If (Length( Name_Advice) > 0) And ((Pos( 'м.', Name_Advice) > 0) Or (Pos( 'с.', Name_Advice) > 0) Or (Pos( 'смт',Name_Advice) > 0) Or (Pos( 'c-', Name_Advice) > 0)) Then
                 City := ( Name_Advice)
              Else
                 If (Length( Name_Region) > 0) And ((Pos( 'м.', Name_Region) > 0) Or (Pos( 'с.', Name_Region) > 0) Or (Pos( 'смт',Name_Region) > 0) Or (Pos( 'c-', Name_Region) > 0)) Then
                    City := ( Name_Region)
                 Else
                    If (Length( Name_Area) > 0) And ((Pos( 'м.', Name_Area) > 0) Or (Pos( 'с.', Name_Area) > 0) Or (Pos( 'смт',Name_Area) > 0) Or (Pos( 'c-', Name_Area) > 0)) Then
                       City := ( Name_Area);


           // Назва вулиці
           Query('Select S.* From Street S Where S.ID_Street='+IntToStr(<DM1.QbObject."ID_Street">));

           If RecordCount( 'DM1.Query') > 0 Then
           Begin
              If LocateData( 'DM2.TbTypeStreet','ID_TypeStreet', GetValue( 'DM1.Query','ID_TypeStreet')) Then
                 Street := GetValue('DM2.TbTypeStreet','NameSmall');

              If (GetValue( 'DM1.Query','NameWhom')<> Null) And (Length( GetValue( 'DM1.Query','NameWhom')) > 0) Then
                 Street := Street +  GetValue( 'DM1.Query','NameWhom')
              Else
                 Street := Street +  GetValue( 'DM1.Query','NameStreet');
              End;

           // Номер вулиці/будинку
           Numb_House              := <DM1.QbObject."Num_House">;

           // Адреса зем.ділянки
           If Length( Address) = 0 Then
           Begin
              Address := Address + ' в ' +City;
              Address := Address + ' по ' +Street;
              Address := Address + IIF( Length (Numb_House)>0,', '+ Numb_House, '');
           End
           Else
           Begin
              If Pos( City, Address) = 0 Then
              Begin
                 Address := Address + ' та в ' +City;

                 If Pos( Street, Address) = 0 Then
                    Address := Address + ' по ' +Street;
              End;

              If Pos( Street, Address)=0 Then
                 Address := Address + ' та по ' +Street;

              If Pos( Numb_House, Address)=0 Then
                 Address := Address + IIF( Length( Numb_House)>0,', '+ Numb_House, '');
           End;
        End;
        //-------------------------------------------->

        If Not OneObject Then
           DataNext( 'DM1.QbObject');

    Until DataEOF( 'DM1.QbObject') or OneObject;
     // кінець цикла
    //------------------------------------------------>
END. // основное тело(конец)


п.с. не обращайте внимание на рус. и укр. комменты - набросал быстренько с разных форм.


зробив тая як Ви написали, видає помилку - Невизначений ідентифікатор:'OneObject'
Підскажіть чому так? І що потрібно зробити щоб усунути цю помилку.

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Отчеты в GIS6

Повідомлення NickS » 16 травня 2014, 09:32

zigura_a писав:зробив тая як Ви написали, видає помилку - Невизначений ідентифікатор:'OneObject'
Підскажіть чому так? І що потрібно зробити щоб усунути цю помилку.

Тому що в коді була невеличка помилка - не описано змінну OneObject

Ось тут:

Код: Виділити все

VAR
   ObjectArea : Double;
   City, Street, StreetTo, Address, Numb_House : String;

BEGIN //основное тело (начало)


Виправте так:

Код: Виділити все

VAR
   ObjectArea, ID_Object : Double;
   City, Street, StreetTo, Address, Numb_House : String;
   OneObject : boolean;

BEGIN //основное тело (начало)

Плюс не забудьте підключити таблиці DM1.QbObject та DM1.Query в меню "Звіт" - "Дані"

zigura_a
Повідомлень: 37
З нами з: 19 березня 2014, 08:26

Re: Отчеты в GIS6

Повідомлення zigura_a » 16 травня 2014, 11:48

в закладці "код" я виправив так як Ви сказали помилку не видає, далі мені не зовсім зробуміло як зробити те що Ви написали (Ну тут не все так просто... Это нужно делать отчетную форму (техничку) для помеченных участков зеленной меткой т.е. применить фильтр + в цикле перебирать все участки с зеленной меткой и суммировать площадь( например, ObjectArea := ObjectArea + <DM1.QbObject."Area">). А с адресом, либо так (ObjectAdress := ObjectAdress + <DM1.QbObject."Address">), либо делать анализ по кадастровому номеру и собирать адрес по кусочкам (область, район, совет, нас.пункт, улица, дом)). Я створив бенд "дані 1 рівня" підключив до нього таблицю "DM1.QbObject" так як Ви порадили, далі на цей бенд кладу об"єк текст і яку формулу я повинен сюди вставити? Якщо я ставлю ObjectArea := ObjectArea + <DM1.QbObject."Area"> то відображається просто як набір тексту.

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Отчеты в GIS6

Повідомлення NickS » 19 травня 2014, 16:33

zigura_a Складні шаблони рекомендую замовляти. Ця послуга платна. Робите приклад своїх документів в ворді (графіку скануєте, якщо треба), показуєте нашій техпідтримці, Вам говорять вартість такого замовлення. Якщо ж хочете самі розбиратись, то телефонуйте в техпідтримку, або пишіть на скайп чи аську.
http://shels.com.ua/contact.htm
Бо, я бачу, що Ви дуже погано орієнтуєтесь в редагуванні та створенні шаблонів, щоб можна було Вам пояснити тут в цій темі відповідь на Ваші питання. Цей топік вимагає середнього рівня знань FastReport.

dhhdh
Повідомлень: 14
З нами з: 13 лютого 2014, 14:14

Re: Отчеты в GIS6

Повідомлення dhhdh » 28 травня 2014, 10:11

Добрий день.
Виникла проблема.
Неможу знайти функцію, щоб витягнути дані по обмеженням по формі XML ("Назва обмеження" [мені видає лише якийсь циферний код], "Основні законодавчі нормативно-правові акти, які встановлюють обмеження...." [також видає незрозумілий номер, пятизначни, який нічого неозначає!], "Код обмеження...."). Код типу і код виду обмежень ще якось витягнути вдається, а все інше...(
Передивився файл з описом усіх функцій (з папки Book). Там іде мова про різні коди, а не про текстові позначення.

Ще питання: якщо є кілька обмежень різного типу по одній ділянці, як їх вивести в окремі рядки таблиці (якщо можна приклад коду...або процедури)?

І останнє: де можна підглянути значеня функцій "DM2...."

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Отчеты в GIS6

Повідомлення NickS » 28 травня 2014, 13:15

dhhdh писав:Добрий день.
Виникла проблема.
Неможу знайти функцію, щоб витягнути дані по обмеженням по формі XML ("Назва обмеження" [мені видає лише якийсь циферний код], "Основні законодавчі нормативно-правові акти, які встановлюють обмеження...." [також видає незрозумілий номер, пятизначни, який нічого неозначає!], "Код обмеження...."). Код типу і код виду обмежень ще якось витягнути вдається, а все інше...(
Передивився файл з описом усіх функцій (з папки Book). Там іде мова про різні коди, а не про текстові позначення.

Почитайте тут viewtopic.php?p=546#p546

dhhdh писав:Ще питання: якщо є кілька обмежень різного типу по одній ділянці, як їх вивести в окремі рядки таблиці (якщо можна приклад коду...або процедури)?

Використовувати бенди. (читайте в C:\Program Files\GIS6\Book\Руководство пользователя FastReport 3.pdf)

dhhdh писав:І останнє: де можна підглянути значеня функцій "DM2...."

Скачайте останню версію опису баз даних.
http://www.shels.com.ua/support/downloa ... tagis6.zip

А взагалі, якщо Ви погано розумієтесь на цих моментах, то Вам краще взяти за приклад якийсь уже готовий шаблон і в ньому правити, бо те, що Ви хочете, робити не дуже просто. Краще переберіть звітові форми (по-любому ж десь є форма подібна тій, що Вам треба) http://gis.org.ua/gis6_reports.htm
Знайдіть подібну і просто виправте оформлення або текст. А якщо вже щось треба буде в коді виправляти, тоді звертайтесь в тех підтримку, або будемо тут розбиратись. Ця тема створена для тих, хто має середній і вищий рівень знань в звітах FastReport.

Alexolei
Повідомлень: 7
З нами з: 19 вересня 2014, 14:21

Re: Отчеты в GIS6

Повідомлення Alexolei » 19 вересня 2014, 15:03

Добрый день, после обновления ГИС 6 до версии 6.1.6.9 в отчетной форме появились ошибки в смежниках подскажите пожалуйста что нужно исправить
Зображення.
Код для смежников

Код: Виділити все

//Описание смежеств

   i := 0; //Номер символов

   MemoOpisMej2.Lines.Clear;

   sMej  := OpisMej;
   sStr  := '';
   iMej  := 0;

   While Length( sMej) > 0 Do
   Begin
      If Pos( ';', sMej) > 0 Then
         Begin
            sStr := Trim( Copy( sMej, 1, Pos( ';', sMej)));
            sMej := Trim( Copy( sMej, Pos( ';', sMej) +1, Length( sMej) -Pos( ';', sMej)));
         End
      Else
         Begin
            sStr := Trim( sMej);
            sMej := '';
         End;

      iMej := iMej +1;

      i := Pos(' до ', sStr) + 6;

      MemoOpisMej2.Lines.Add(IntToStr(iMej) + '. ' + Copy(sStr, i, Length(sStr)-i+1));
   End;

   MasterData2.RowCount := iMej;
   sMej  := OpisMej;
   sStr  := '';
end;

// Описание границ в списке согласований
procedure MasterData2OnBeforePrint(Sender: TfrxComponent);
begin
      If Pos( ';', sMej) > 0 Then
         Begin
            sStr := Trim( Copy( sMej, 1, Pos( ';', sMej)));
            sMej := Trim( Copy( sMej, Pos( ';', sMej) +1, Length( sMej) -Pos( ';', sMej)));
         End
      Else
         Begin
            sStr := Trim( sMej);
            sMej := '';
         End;
end;

feNICKs
Повідомлень: 412
З нами з: 13 січня 2012, 16:03
Контактна інформація:

Re: Отчеты в GIS6

Повідомлення feNICKs » 19 вересня 2014, 15:31

Что за отчетная форма? В стандартном наборе отчетных форм я не нашел такого кода (с комментариями).
Если анализировать данный код, то у Вас выводиться всё, что стоит до точки с запятой (это разделитель) и скорей всего, что результат вывода будет такой как Вы продемонстрировали. В служебной переменной OpisMej вся информация о смежниках разделена точкой с запятой, но в этой информации не только наименование смежника, но и литеры границ, описания смежества, наименование смежника и адрес смежества. Так что все логично... Это скорей всего код с кадастрового плана, где нужно вывести описание границ, но это совсем не для Вашего случая.

Откройте стандартную отч.форму C:\Program Files\GIS6\Reports\Акт приёмо-передачи межевых знаков 2013.fr3 или в других.

Alexolei
Повідомлень: 7
З нами з: 19 вересня 2014, 14:21

Re: Отчеты в GIS6

Повідомлення Alexolei » 19 вересня 2014, 15:36

Отчетная форма работала 2 года до обновления ГИС 6 до версии 6.1.6.9 и в кадастровом плане смежники выводит также с ошибкой.
Востаннє редагувалось 19 вересня 2014, 15:43 користувачем Alexolei, всього редагувалось 1 раз.

feNICKs
Повідомлень: 412
З нами з: 13 січня 2012, 16:03
Контактна інформація:

Re: Отчеты в GIS6

Повідомлення feNICKs » 19 вересня 2014, 15:40

Alexolei писав:Отчетная форма работала 2 года до обновления ГИС 6 до версии 6.1.6.9.

По куску коду этого не скажешь. Откатитесь до той версии что у Вас была и проверьте. Или скиньте нам Ваш архив участка и саму отч.форму для теста на support@gis.org.ua.
проверил стандартные Акты передачи на версии ГИС 6.1.6.9 - все нормально. На счет Вашего кода я написал. Если там нету других операций - то все правильно выводиться - полная информация о смежестве.