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

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

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

Аватар користувача
TiJester
Повідомлень: 39
З нами з: 28 жовтня 2010, 12:20
Контактна інформація:

Re: Вопросы по базам данных в отчётных формах.

Повідомлення TiJester » 27 липня 2011, 12:48

при использовании данного кода:

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

NumObjects := '';// Номер земельного участка (пая)
     begin
       If <DM1.QbObject."Num_Zaris"> > 0 Then      //
       begin
       NumObjects :='ділянка № ' +  <DM1.QbObject."Num_Zaris"> ;
       end
       else
       begin
       NumObjects := <DM1.QbObject."Num_Zaris">;
       end;
     end;


и отсутствия данных в ячейке номера зарисовки/массива выдает ошибку: что не может Строковую в дубле преобразовать
а при таком коде:

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

NumObjects := '';// Íîìåð çåìåëüíîãî ó÷àñòêà (ïàÿ)
     begin
       If Length( Trim(<DM1.QbObject."Num_Zaris">)) > 0 Then      //
       begin
       NumObjects :='ä³ëÿíêà ¹ ' +  <DM1.QbObject."Num_Zaris"> ;
       end
       else
       begin
       NumObjects := <DM1.QbObject."Num_Zaris">;
       end;
     end;


все работает :-)

Аватар користувача
shelsadmin
Администратор
Повідомлень: 130
З нами з: 29 лютого 2008, 12:46
Звідки: Компания ШЕЛС
Контактна інформація:

Re: Вопросы по базам данных в отчётных формах.

Повідомлення shelsadmin » 27 липня 2011, 13:42

Поле Num_Zaris тексовое, а Num_Object числовое, соответственно:

If Length( Trim(<DM1.QbObject."Num_Zaris">)) > 0 Then

If <DM1.QbObject."Num_Object"> > 0 Then

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

Re: Вопросы по базам данных в отчётных формах.

Повідомлення NickS » 27 липня 2011, 14:57

TiJester писав:Надо вытянуть данные о гос акте для каждого владельца. На счет первого варианта я в курсе!

Ну во-первых, надо создать sql-запрос, который образует таблицу с госактами для всех владельцев участка:

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

QuerySQL('Select G.*, GL.ID_User From Gosakt G, GosaktLnk GL, Object O Where O.ID_Object = ' + IntToStr(<DM1.QbObject."ID_Object">) + 'And GL.ID_Object = O.ID_Object And G.ID_Gosakt = GL.ID_Gosakt');


Во-вторых, надо воспользоваться таблицей DM1.TbUser - это таблица всех владельцев для текущего участка, и перебирать её в цикле (или через бэнды).

И в третьих, чтобы вытянуть информацию о госакте, для выбранного владельца, (в бэнде или цикле) пишем условие:

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

  If LocateData('DM1.QuerySQL', 'ID_User', <DM1.TbUser."ID_User">) then
  begin
     ....
     // Берём информацию о госакте
     ....
  end;

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

Re: Вопросы по базам данных в отчётных формах.

Повідомлення NickS » 27 липня 2011, 15:30

Vetaley писав:Доброе время суток!
Очень нуждаюсь в Вашей помощи в решении следующей задачки: в актах передачимежевых знаков по новой форме нужно прописать населенный пункт, в котором располагается орган местного самоуправления. В регистрационном окне вкладке "Право собственности" я указываю код КУАТУ органа местного самоуправления, принявшего решение. Нельзя ли сообразить такую переменную, чтобы она выписывала мне в отчет вместо этого кода название нас. пункта?

Можно, конечно!
Вот этот код

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

   NasPunktD := ''; //Населённый пункт органа принявшего решения

   If RecordCount('DM1.QbDecision') > 0 then
   begin
      SeekIKN(<DM1.QbDecision."ID_Kuatu">);

      NasPunktD := Name_Place;

      If (Pos( 'м.', Name_Advice) > 0) or (Pos( 'с.', Name_Advice) > 0) or (Pos( 'смт', Name_Advice) > 0) or (Pos( 'с-', Name_Advice) > 0) or (Pos( 'в.м.', Name_Region) > 0) Then
         NasPunktD := Name_Advice;

      If (Pos( 'м.', Name_Region) > 0) or (Pos( 'с.', Name_Region) > 0) or (Pos( 'смт', Name_Region) > 0) or (Pos( 'с-', Name_Region) > 0) or (Pos( 'в.м.', Name_Region) > 0) Then
         NasPunktD := Name_Region;
   end;


Объясню для любознательных. :)) Есть специальные внутренние переменные (которые формируются из программы и объявлять их не нужно):
Name_Area - наименование области
Name_Region - наименование района
Name_Advice - наименование совета
Name_Place - наименование населённого пункта

Они предназначены для "раскладывания" кадастрового номера на адрес кадастровой единици. По-умолчанию они формируются из кадастрового номера участка, но если нужно, можно использовать функцию SeekIKN, чтобы этим переменным присвоились другие значения. Вот таким образом, этой функции мы указываем нужный кадастровый номер и получаем переменные, в которых название района, области, совета и населённого пункта. Так как, населённый пункт может быть прописан ещё и в совете или районе, то и их нужно контролировать.

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

Re: Вопросы по базам данных в отчётных формах.

Повідомлення NickS » 27 липня 2011, 16:27

По поводу NumObjects. Вот пример кода, которые учитывает и поле <DM1.QbObject."Num_Zaris"> и <DM1.QbObject."Num_Object">, ведь эти поля означают одно и тоже, фактически, только разными описаниями. В данном случае проверяется сначала заполнено ли поле со строковым значением (<DM1.QbObject."Num_Zaris">) и берётся его значение, если незаполнено, тогда берётся номер (<DM1.QbObject."Num_Object">)

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

  NumObjects := '';

  If (Length( Trim(<DM1.QbObject."Num_Zaris">)) > 0) And (<DM1.QbObject."Num_Object"> > 0) Then
  begin
     If Length( Trim(<DM1.QbObject."Num_Zaris">)) > 0 then
        NumObjects :='ділянка № ' +  <DM1.QbObject."Num_Zaris">
     else
        NumObjects :='ділянка № ' +  IntToStr(<DM1.QbObject."Num_Object">);
  end
  else
     NumObjects :=' ';

Аватар користувача
TiJester
Повідомлень: 39
З нами з: 28 жовтня 2010, 12:20
Контактна інформація:

Re: Вопросы по базам данных в отчётных формах.

Повідомлення TiJester » 04 серпня 2011, 14:51

А можно ли както проверять Что право прекращено и данные по этой записи не использовать. Ну к примеру при печате гос акта есть выборка по основаниям. Первое основание аннулируем. т.е используем только последнее, два последних.

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

Re: Вопросы по базам данных в отчётных формах.

Повідомлення NickS » 05 серпня 2011, 10:57

TiJester писав:А можно ли както проверять Что право прекращено и данные по этой записи не использовать. Ну к примеру при печате гос акта есть выборка по основаниям. Первое основание аннулируем. т.е используем только последнее, два последних.

Нет, основаниями не проверить! Что прекращено право, нужно смотреть поле "Прекращения права" в параметрах субъекта права (<DM1.TbUser."DateLast">) и сравнивать её с текущей датой. Тоесть, если это условие выполняется

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

If (<DM1.TbUser."DateLast"> > 0) and (<DM1.TbUser."DateLast"> < Date) then

значит этому субъекту право прекращено.

Geolife_Vitaliy
Повідомлень: 12
З нами з: 29 липня 2011, 15:05
Звідки: Днепропетровская область

Re: Вопросы по базам данных в отчётных формах.

Повідомлення Geolife_Vitaliy » 10 серпня 2011, 09:53

народ, подскажите, пожалуйста, как можно вытянуть ФИО смежников или их представителей (если смежники - юр. лица), кроме сельского совета... нужно это для новго акта приемки-передачи межевых знаков

пытался из описания границ вытянуть, при этом если участок принадлежит человеку использовал в описании "земельна ділянка", остальные - "землі" и код:

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

procedure SmegnikiOnBeforePrint(Sender: TfrxComponent);
var sMej: string;
    mej: string;
    i : byte;
begin
  mej:='';
  with Smegniki, Engine do
  begin
    Smegniki.Lines.Clear;
    sMej := OpisMej;
    i:=1;

    While Pos('Земельна ділянка', sMej) > 0 Do
    begin
      mej:= copy(sMej, Pos('Земельна ділянка', sMej) +17, Pos(';', sMej) - (Pos('Земельна ділянка', sMej)+17));
      sMej:= copy(sMej, Pos(';', sMej)+1,Length( sMej));
      Smegniki.Lines.Add(IntToStr(i)+'. '+mej);
      i:=i+1;
    end;
  end;
end;


но мне кажется что это несовсем правильно, должна быть какая-то более нормальная возможность с точки зрения програмистов.
Заранее спасибо за помощь

вот для этого акта:
Зображення

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

Re: Вопросы по базам данных в отчётных формах.

Повідомлення Vetaley » 10 серпня 2011, 11:46

Пошел таким путем: http://www.ex.ua/view_storage/353880126704

Geolife_Vitaliy
Повідомлень: 12
З нами з: 29 липня 2011, 15:05
Звідки: Днепропетровская область

Re: Вопросы по базам данных в отчётных формах.

Повідомлення Geolife_Vitaliy » 10 серпня 2011, 12:41

Vetaley писав:Пошел таким путем: http://www.ex.ua/view_storage/353880126704

Выход интересный, но:
1) что делать с землями сельского совета и землями общего пользования, кто будет расписываться за них?
2) зем. ресурсы ссылаясь на Инструкцию по установлению... желают видеть ФИО смежников :(