Приклади робочих скриптів у звітових формах

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

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

Аватар користувача
NoViChoK
Повідомлень: 140
З нами з: 10 вересня 2012, 18:09

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NoViChoK » 22 листопада 2012, 13:17

какой код нужно прописать в шаблоне кадастрового плана (fr3) что бы при наличии нескольких владельцев прописывало всех владельцев а не какого то одного?

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

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення feNICKs » 22 листопада 2012, 13:41

Вариантов реализации такого алгоритма может бить несколько. Один из них:

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

Var
    CustomerWho : String;
BEGIN

   DataFirst( 'DM1.ListUser');

   //----- Перебор списка субъектов
   While DataEof( 'DM1.ListUser') = False Do
   Bbegin

     If LocateData( 'DM2.TbTypeOwner', 'ID_TypeOwner', <DM1.ListUser."ID_TypeOwner">) = True Then
     begin
          //----- Юр.лицо
          IF ( <DM2.TbTypeOwner."ID_TypeUser"> = True) And (LocateData( 'DM1.QsFirm', 'ID_Firm', <DM1.ListUser."ID_Firm">) = True) Then
                CustomerWho := CustomerWho + IIF (Length(CustomerWho ) > 0, ', '+<DM1.QsFirm."Name_Who">, <DM1.QsFirm."Name_Who">);

          //----- Физ лицо
          IF (<DM2.TbTypeOwner."ID_TypeUser"> = False) And (LocateData( 'DM1.QsPeople', 'ID_People', <DM1.ListUser."ID_People">) = True) Then
                CustomerWho  := CustomerWho  + IIF (Length(CustomerWho ) > 0, ', ' + <DM1.QsPeople."Family">,  <DM1.QsPeople."Family">);
     end;

     DataNext( 'DM1.ListUser');
   end;
END.

Аватар користувача
ozkc
Повідомлень: 71
З нами з: 15 червня 2011, 13:49

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення ozkc » 23 листопада 2012, 16:26

подскажите, как правильно добавить в Ваш отчет "Список арендаторов" выборку только по отмеченным часткам.

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

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення feNICKs » 23 листопада 2012, 17:33

ozkc писав:подскажите, как правильно добавить в Ваш отчет "Список арендаторов" выборку только по отмеченным часткам.

В какой именно наш отчет? Вы имеете введу в пред.посте? Там наведен пример кода для выборки всех субъектов права для текущего зем.участка. Чтоб создать список всех Арендаторов для отмеченных, в цикле для отмеченных зем.участков делаете перебор по таблице Аренды.
В своем примере я делаю поиск в списке Арендаторов, если таковых нету - тогда в списке Субъектов права. Если поиск в списке Субъектов права лишний - просто удалите его.

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

Var
    CustomerWho2, NameTest : Streeng;
    OneObject : Boolean;

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;
    //------------------------------------------------>

    CustomerWho2              := ''; // Власник/Орендатор
    NameTest                     := ''; // для перевірки на повтор
 
    //-----> Цикл по відміченим
    Repeat

      //-----> Пошук по орендавцям
      IF (RecordCount('DM1.QiLease')>0) Then
      Begin
         DataFirst('DM1.QiLease');
         While Not DataEOF('DM1.QiLease')Do
         Begin
            IF (Pos(<DM1.QiLease."LeaserName"> + ', ',NameTest) = 0) Then
            Begin
               NameTest         := NameTest + <DM1.QiLease."LeaserName"> + ', ';
               
               IF (Length(Trim(CustomerWho)) > 0) Then
                   CustomerWho := CustomerWho + ' та ';

               IF (<DM1.QiLease."ID_LeaserType"> < 3) And (LocateData( 'DM1.QbPeople', 'ID_People', <DM1.QiLease."ID_LeaserPeople">)) Then
                   CustomerWho := CustomerWho + ' гр. '+ (<DM1.QbPeople."Family">);

               IF (<DM1.QiLease."ID_LeaserType"> > 2) And (LocateData( 'DM1.QbFirm', 'ID_Firm', <DM1.QiLease."ID_LeaserFirm">)) Then
                   CustomerWho := CustomerWho + <DM1.QbFirm."Name_Who">;
           End;
           DataNext('DM1.QiLease');
         End;
         CustomerWho         := Trim(CustomerWho);
      End
      Else
      //----->Якщо дані в табл. Оренда відсутні - тоді вибірка із списка Суб"єктів права
      Begin
         QuerySQL ('Select * From UserRec Where (ID_Object = ' + IntToStr(<DM1.QbObject."ID_Object">) + ') And (DateFirst <= GETDATE()) And (DateLast Is Null Or DateLast > GETDATE()) Order By ID_People, ID_Firm');
         DataFirst('DM1.QuerySQL');

         While (DataEOF('DM1.QuerySQL') = False) Do
         Begin
            IF (LocateData( 'DM2.TbTypeOwner', 'ID_TypeOwner', GetValue('DM1.QuerySQL', 'ID_TypeOwner'))) And (Pos(GetValue('DM1.QuerySQL', 'NameUser') + ', ',NameTest) = 0) Then
            Begin
                 NameTest         := NameTest + GetValue('DM1.QuerySQL', 'NameUser') + ', ';
                 Property         := True;

                 If (Length(Trim(CustomerWho)) > 0) Then
                     CustomerWho := CustomerWho + ' та ';

                 IF (<DM2.TbTypeOwner."ID_TypeUser"> = False) And (LocateData('DM1.QbPeople','ID_People',GetValue('DM1.QuerySQL', 'ID_People'))) Then
                     CustomerWho := CustomerWho + ' гр. '+ {FamilyShort}(<DM1.QbPeople."Family">);

                 IF (<DM2.TbTypeOwner."ID_TypeUser"> = True) AND (LocateData('DM1.QbFirm','ID_Firm',GetValue('DM1.QuerySQL', 'ID_Firm'))) Then
                     CustomerWho := CustomerWho + <DM1.QbFirm."Name_Who">;
            End;
            DataNext('DM1.QuerySQL');
         End;
         CustomerWho             := Trim(CustomerWho);
      End;
      //---------------------------------------------->

    IF (OneObject = False) Then
          DataNext('DM1.QbObject');

    Until (DataEOF('DM1.QbObject') = True) or OneObject;
    //------------------------------------------------>
END.


anchous814
Повідомлень: 11
З нами з: 30 січня 2013, 11:34
Звідки: Харьков

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення anchous814 » 04 лютого 2013, 01:38

а есть где-нибудь типа словарик с расшифровками выражений БД? а то не шурупая в шаблонах да ещё и методом "научного тыка" очень долгое получается редактирование шаблонов :(

Аватар користувача
Dorochenko_iv
Повідомлень: 162
З нами з: 12 березня 2010, 21:55
Звідки: м.Чернігів
Контактна інформація:

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення Dorochenko_iv » 04 лютого 2013, 08:40

anchous814 писав:а есть где-нибудь типа словарик с расшифровками выражений БД? а то не шурупая в шаблонах да ещё и методом "научного тыка" очень долгое получается редактирование шаблонов :(

В папочке Gis6, есть папочка Reports. В ней файлик "База данных GIS6.xls", либо на сайте http://www.gis.org.ua/gis6_reports.htm.

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

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення feNICKs » 04 лютого 2013, 08:46

anchous814 писав:а есть где-нибудь типа словарик с расшифровками выражений БД? а то не шурупая в шаблонах да ещё и методом "научного тыка" очень долгое получается редактирование шаблонов :(

Также на установочном диске :\Book\Метод доступа до полей 5 и 6.pdf - примеры наиболее часто используемых процедур обработки данных в отчетных формах, в "Базы данных GIS6.xls" - описание полей основных таблиц БД ГИС - понадобиться Вам для составления SQL запросов или для работы с теми же отчетными формами.

anchous814
Повідомлень: 11
З нами з: 30 січня 2013, 11:34
Звідки: Харьков

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення anchous814 » 04 лютого 2013, 09:25

feNICKs писав:
anchous814 писав:а есть где-нибудь типа словарик с расшифровками выражений БД? а то не шурупая в шаблонах да ещё и методом "научного тыка" очень долгое получается редактирование шаблонов :(

Также на установочном диске :\Book\Метод доступа до полей 5 и 6.pdf - примеры наиболее часто используемых процедур обработки данных в отчетных формах, в "Базы данных GIS6.xls" - описание полей основных таблиц БД ГИС - понадобиться Вам для составления SQL запросов или для работы с теми же отчетными формами.

действительно. дякую. только не в "reports", а в "book".

Аватар користувача
Dorochenko_iv
Повідомлень: 162
З нами з: 12 березня 2010, 21:55
Звідки: м.Чернігів
Контактна інформація:

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення Dorochenko_iv » 04 лютого 2013, 10:57

anchous814 писав:действительно. дякую. только не в "reports", а в "book".

В Reports также есть, только не на диске, а в Program Files\gis6\Reports

Аватар користувача
Vetaley
Повідомлень: 119
З нами з: 15 лютого 2010, 13:16
Звідки: ХарькОфф
Контактна інформація:

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення Vetaley » 18 лютого 2013, 17:44

Всем привет!
В связи с вступлением в действие постановы 1051 и переходом на КВЗУ земагенство желает видеть вышеуказанный код (формат ххх.уу) в экспликации на кад.плане.
Кто-нибудь уже предпринимал шаги в этом направлении (Универсальная экспликация предлагает только название угодия)? Поделитесь переменной плз, буду весьма благодарен :) .
P.S. Я так понимаю, что будут внесены соответсвующие изменения в GIS6.xls :rtfm: . Где можно будет ознакомится?