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

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

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

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

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

Повідомлення NickS » 25 січня 2012, 16:33

LeViK писав:

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

QuerySQL('Select O.ID_Object, S.Area From Object O, Servitut S Where O.OK = ''ю'' And S.ID_Object = O.ID_Object And S.Area <> 0 Order by O.ID_Object');
Query('Select Sum(S.Area) Area From Object O, Servitut S Where O.OK = ''ю'' And S.ID_Object = O.ID_Object');


ПОМОГИТЕ!!! Как пишутся функции QuerySQL Query и почему они работают? Для меня не ясен момент задания условий для заполнения виртуальной базы данных. Никаких пояснений не нашел, пишется только что значения должно быть текстовое, а язык на котором значение задается? с какой планеты он? где найти пояснения? Тыканье носом в ссылки приветствуется.

Функции QuerySQL и Query - это функции, которые выполняют любой sql-запрос и создают, на его основе, таблицу данных.
Как работает? В данных включаете одну из таблиц DM1.QuerySQL или DM1.Query (или обе, функции идентичные, просто сделаны для создания двух таблиц одновременно), в коде прописываете sql-запрос в функцию:
QuerySQL('xxxxx');
, где ххххх - любой запрос составленный ввиде одной строки
Например, вот такая функция:
QuerySQL('Select O.* From Object O Where O.OK = ''ю'' ');
Создаст точно такуюже таблицу, как DM1.QbObject, только в ней будут только отмеченные записи. Если составить бэнд из этой DM1.QuerySQL то получим перечень отмеченных участков.
С помощью запросов можна создавать практически ЛЮБЫЕ выборки из базы данных и даже записывать в неё значения или фильтровать по любому условию. Таким образом у нас сделаны некоторые сложные шаблоны с печатью таблиц.
А почитать по скл-запросам? http://www.fileshouse.com/phpmysql/144-sql-zaprosi.html
Да материалов в инете море по этому вопросу! :) Только нужно ли Вам это? :)
Вот я создал специальную тему по этому вопросу. Если нужно будет что-то такое замудрённое вставить в шаблон, пишите туда.
http://www.gis.org.ua/forum/viewtopic.php?f=3&t=245

LeViK
Повідомлень: 63
З нами з: 25 січня 2012, 09:52
Звідки: BeerDyansk

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

Повідомлення LeViK » 26 січня 2012, 08:42

Спасибо огромное, пригодится полюбому, инфа 100%. Причем в ближайшем будущем.

LeViK
Повідомлень: 63
З нами з: 25 січня 2012, 09:52
Звідки: BeerDyansk

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

Повідомлення LeViK » 27 лютого 2012, 15:17

Есть такая часть кода для выведения двух параметров в случае совпадения двух параметров в разных таблицах

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

   I:= RecNo('DM1.QuerySQL');
   K:= RecNo('DM1.Query');
   M:= <DM1.QuerySQL."ID_NOTE">;

  datafirst('DM1.QUERYSQL');
  DataFirst('DM1.Query');
   
  While DATAEOF('DM1.QUERY') = False do
     Begin
      datafirst('DM1.QUERYSQL');
      While DATAEOF('DM1.QUERYSQL') = False do
        Begin
       if   <dm1.QuerySQL."ID_Note"> = M Then
        Begin

         if  <dm1.QuerySQL."X"> = J or F Then
         Begin
         SETVARIABLE('Xbb', FloatToStr(<dm1.QuerySQL."X">));
         SETVARIABLE('Ybb', FloatToStr(<dm1.QuerySQL."Y">));
         end;
 
        End;
       DataNext('DM1.QUERYSQL');
       end;
      DataNext('DM1.QUERY');
     end;
 SetSelRecord('DM1.QuerySQL',I);
 SetSelRecord('DM1.Query',K);


Как работает SetSelRecord('DM1.Query',K) к примеру в этом конкретном случае вернётся ли указатель на изначальную запись (эта часть кода находиться в цикле подключённым к DataEOF('DM1.Query') и после запуска основной цикл работает на одну запись)

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

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

Повідомлення NickS » 27 лютого 2012, 16:02

LeViK писав:Как работает SetSelRecord('DM1.Query',K) к примеру в этом конкретном случае вернётся ли указатель на изначальную запись (эта часть кода находиться в цикле подключённым к DataEOF('DM1.Query') и после запуска основной цикл работает на одну запись)

Эта операция только для выбранных записей в отдельных таблиц. Вам надо придумать другой алгоритм работы, например, используя LocateData или дополнительные таблици ADO

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

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

Повідомлення ozkc » 08 червня 2012, 15:01

А если у меня "спільна-часткова", как двух собственников закинуть на отчетную форму :?:

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

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

Повідомлення NickS » 08 червня 2012, 15:26

ozkc писав:А если у меня "спільна-часткова", как двух собственников закинуть на отчетную форму :?:


Используется специальная таблица с перечнем всех действующих владельцев и обрабатывается в цикле.

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

   //-----------------
   //Владельцы

   Vladelec := '';

   DataFirst( 'DM1.ListUser');

   While DataEof( 'DM1.ListUser') = False Do
   begin
      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
          Vladelec := Vladelec + <DM1.QsFirm."Name_Who"> + ', ';

        If (<DM2.TbTypeOwner."ID_TypeUser"> = False) And (LocateData( 'DM1.QsPeople', 'ID_People', <DM1.ListUser."ID_People">) = True) Then
          Vladelec := Vladelec + <DM1.QsPeople."Family"> + ', ';
      end;

      DataNext( 'DM1.ListUser');
   end;

   Vladelec := Copy(Vladelec, 1, LENGTH(Vladelec)-2); //Удаляем последнюю запятую

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

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

Повідомлення ozkc » 11 червня 2012, 10:58

:tnk:

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

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

Повідомлення ozkc » 18 червня 2012, 14:17

Подскажите, можно ли "Стиль заливки" в закладке "Ограничени" ("План",...) продублировать в отчетной форме как условное обозначений :?:

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

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

Повідомлення NickS » 18 червня 2012, 14:38

ozkc писав:Подскажите, можно ли "Стиль заливки" в закладке "Ограничени" ("План",...) продублировать в отчетной форме как условное обозначений :?:

Можно, надо определённый код с бэндами. Пример, кстати есть в "Кадастровом плане" и для ограничений и для сервитутов.
http://www.shels.com.ua/support/download/gis6/reports/gis6_reports0250.zip

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

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

Повідомлення ozkc » 19 червня 2012, 14:01

NickS писав:
ozkc писав:Подскажите, можно ли "Стиль заливки" в закладке "Ограничени" ("План",...) продублировать в отчетной форме как условное обозначений :?:

Можно, надо определённый код с бэндами. Пример, кстати есть в "Кадастровом плане" и для ограничений и для сервитутов.
http://www.shels.com.ua/support/download/gis6/reports/gis6_reports0250.zip

:tnk:
Код перенес в свой шаблон. Все работает кроме штриховки в условных обозначениях, не хочет подхватывать цвет и тип :neuk: