Сторінка 1 з 42

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

Додано: 10 лютого 2011, 16:24
TiJester
Скачал gis6_doc3 в ПДФе начал искать во вторичных базах (Базы общего назначения) ту базу которая отвечает за КСП
А там в описании на стр. 126 указаны

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

DM2.TbKsp и  DM.TsKSP
но в базе программы имеется

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

DM2.TbKsp и DM2.QaKsp

В отчетных формах имеется вот такой пример:

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

...
      If LOCATEDATA('DM1.QbFirm', 'ID_Firm', <DM2.TbKsp."ID_Firm">)= true then
   begin
       NameKSP := <DM1.QbFirm."Name_Who">;
...


Но он не выдает выбранный КСП для текущего участка. Хотя данные о КСП забиты в Юр. лица.

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

Додано: 11 лютого 2011, 10:00
NickS
TiJester писав:В отчетных формах имеется вот такой пример:

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

...
      If LOCATEDATA('DM1.QbFirm', 'ID_Firm', <DM2.TbKsp."ID_Firm">)= true then
   begin
       NameKSP := <DM1.QbFirm."Name_Who">;
...


Но он не выдает выбранный КСП для текущего участка. Хотя данные о КСП забиты в Юр. лица.

Код правильный. Только что проверил - выдаёт КСП верно. Может в Вашей отчётной форме что-то не так? Пришлите нам её, для проверки.

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

Додано: 16 березня 2011, 13:49
TiJester
NickS писав:
TiJester писав:В отчетных формах имеется вот такой пример:

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

...
      If LOCATEDATA('DM1.QbFirm', 'ID_Firm', <DM2.TbKsp."ID_Firm">)= true then
   begin
       NameKSP := <DM1.QbFirm."Name_Who">;
...


Но он не выдает выбранный КСП для текущего участка. Хотя данные о КСП забиты в Юр. лица.

Код правильный. Только что проверил - выдаёт КСП верно. Может в Вашей отчётной форме что-то не так? Пришлите нам её, для проверки.


вот ссылка на шаблон http://dr-pc.ucoz.ua/load/0-0-0-79-20 в котором пример использования запроса на КСП плюс архив из базы

При использовании Lowercase а именно перевода числа 600 пишет: шістьсот, а верно будет без мягкого знака.


BITEK писав:Картина не поменялась. Не отображается площадь "під будинками та спорудами"
может попробовать пересчет blod поля

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

Додано: 17 березня 2011, 13:53
NickS
TiJester писав:
NickS писав:
TiJester писав:В отчетных формах имеется вот такой пример:

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

...
      If LOCATEDATA('DM1.QbFirm', 'ID_Firm', <DM2.TbKsp."ID_Firm">)= true then
   begin
       NameKSP := <DM1.QbFirm."Name_Who">;
...


Но он не выдает выбранный КСП для текущего участка. Хотя данные о КСП забиты в Юр. лица.

Код правильный. Только что проверил - выдаёт КСП верно. Может в Вашей отчётной форме что-то не так? Пришлите нам её, для проверки.


вот ссылка на шаблон http://dr-pc.ucoz.ua/load/0-0-0-79-20 в котором пример использования запроса на КСП плюс архив из базы

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

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

...
   SeekKSP(<DM1.QbObject."ID_KSP">);

   If LOCATEDATA('DM1.QbFirm', 'ID_Firm', <DM2.QaKSP."ID_Firm">)= true then
   begin
       NameKSP := <DM1.QbFirm."Name_Who">;
...


Теперь розтолкую. Снача используется функция для поиска нужного КСП - SeekKSP().
<DM1.QbObject."ID_KSP"> - это код КСП в участке
После выполнения этой функции, таблица DM2.QaKSP имеет информацию о нужном КСП. Дальше просто находим это КСП в таблице юр.лиц.

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

Додано: 18 березня 2011, 09:21
NickS
TiJester писав:При использовании Lowercase а именно перевода числа 600 пишет: шістьсот, а верно будет без мягкого знака.

Мы это выправим.

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

Додано: 26 квітня 2011, 17:13
Vetaley
Добройе время суток! Есть претензия))) и вопросек по формам:
1. В новом кад плане не подтягивает исполнителя - ента тута?
//---------------------------------------------------------------------------------------------------
// Исполнитель

Isponit := '';
If RECORDCOUNT( 'DM1.QiTechDoc') > 0 Then
If LOCATEDATA( 'DM1.QsPeople', 'ID_People', <DM1.QiTechDoc."ID_People">) = true Then
Isponit := <DM1.QsPeople."Family">;

2. Некрасиво получается: директор, проверил - отчество, имя, фам., исполнитель фам., имя, отч. Попробовал вместо FamilyShort поставить ShortFamily - исполнителя поменяло на от,им,фам., а директора и проверил - нет. Почему? Я хочу, чтоб у всех было Фам., Имя, Отч.!

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

Додано: 26 квітня 2011, 17:34
NickS
Vetaley писав:1. В новом кад плане не подтягивает исполнителя - ента тута?
//---------------------------------------------------------------------------------------------------
// Исполнитель

Isponit := '';
If RECORDCOUNT( 'DM1.QiTechDoc') > 0 Then
If LOCATEDATA( 'DM1.QsPeople', 'ID_People', <DM1.QiTechDoc."ID_People">) = true Then
Isponit := <DM1.QsPeople."Family">;


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

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

   //---------------------------------------------------------------------------------------------------
   //Данные исполнителя

   IspName       := ''; //Название исполнителя
   IspNameKogo   := ''; //Название исполнителя (кого)
   IspNameKomy   := ''; //Название исполнителя (кому)
   IspNameKem    := ''; //Название исполнителя (кем)
   IspAdress     := ''; //Адрес исполнителя
   IspPreds      := ''; //Представитель исполнителя
   IspPredsDolj  := ''; //Должность представителя исполнителя

   If RECORDCOUNT('DM1.QiTechDoc') > 0 Then
   begin
     If LOCATEDATA('DM1.QbFirm', 'ID_Firm', <DM1.QiTechDoc."ID_Firm">) Then
     begin
       IspName     := <DM1.QbFirm."Name_Who">;
       IspNameKogo := <DM1.QbFirm."Name_Whom">;
       IspNameKomy := <DM1.QbFirm."Name_Towhom">;
       IspNameKem  := <DM1.QbFirm."Name_ByWhom">;
       IspAdress   := <DM1.QbFirm."Address">;

       if RECORDCOUNT('DM1.TbWorking') > 0 then
       begin

         If LOCATEDATA('DM1.TbWorking', 'ID_People', <DM1.QiTechDoc."ID_People">) then
         begin
           If LOCATEDATA('DM2.TbTypeWorking', 'ID_TypeWorking', <DM1.TbWorking."ID_TypeWorking">)= true then
              IspPredsDolj := <DM2.TbTypeWorking."Name">;

           If LOCATEDATA('DM1.QbPeople', 'ID_People', <DM1.TbWorking."ID_People">) then
              IspPreds    := <DM1.QbPeople."Family">;
         end;
       end;

     end;

   end;

   If LENGTH(IspName) = 0 then
       IspName := Firm_Who;
   If LENGTH(IspNameKogo) = 0 then
       IspNameKogo := Firm_Whom;
   If LENGTH(IspNameKomy) = 0 then
       IspNameKomy := Firm_ToWhom;
   If LENGTH(IspNameKem) = 0 then
       IspNameKem := Firm_Whom;
   If LENGTH(IspAdress) = 0 then
       IspAdress := FirmAddres;
   If LENGTH(IspPreds) = 0 then
       IspPreds := BossFio;
   If LENGTH(IspPredsDolj) = 0 then
       IspPredsDolj := BossName;


Vetaley писав:2. Некрасиво получается: директор, проверил - отчество, имя, фам., исполнитель фам., имя, отч. Попробовал вместо FamilyShort поставить ShortFamily - исполнителя поменяло на от,им,фам., а директора и проверил - нет. Почему? Я хочу, чтоб у всех было Фам., Имя, Отч.!

Для этого нужно изначально в данных забивать - Фамилия Имя Отчество. А уже FamilyShort даёт Фамилия И. О., а ShortFamily - И. О. Фамилия. Программа сама не может определить где отчётсво, а где фамилия, потому не забывайте изначально забивать правильно!

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

Додано: 26 квітня 2011, 17:39
Vetaley
Хм. Дык я ведь для фирмы всех позабивал одинаково, и директора и себя))), а за код спасибочьки! Щас попробуим!

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

Додано: 12 травня 2011, 13:06
Vetaley
Доренький день джентльмены)))
Хочу задать вам задачку:
есть кусок кода

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

 //---------------------------------------------------------------------------------------------------
   //Де знаходиться ділянка

   Teritor := ' ';

   //Рада
   if LENGTH(Name_Advice) > 0 then
   begin
     if Pos('ька ', Name_Advice) > 0 then
       if Pos('сільська', Name_Advice) > 0 then
         Teritor := 'на території ' + Copy(Name_Advice, 1, Pos('ька ', Name_Advice)) + 'кої сільської ради '
       else
         if Pos('міська', Name_Advice) > 0 then
           Teritor := 'на території ' + Copy(Name_Advice, 1, Pos('ька ', Name_Advice)) + 'кої міської ради '
         else
           Teritor := 'на території ' + Name_Advice + ' '
     else
       Teritor := 'на території ' + Name_Advice + ' ';
   end;

   //Район
   if LENGTH(Name_Region) > 0 then
   begin
     if Pos('ький ', Name_Region) > 0 then
       Teritor := Teritor + Copy(Name_Region, 1, Pos('ький ', Name_Region)) + 'кого району '
     else
       if Pos('ний ', Name_Region) > 0 then
         Teritor := Teritor + Copy(Name_Region, 1, Pos('ний ', Name_Region)) + 'ного району '
       else
         Teritor := Teritor + Name_Region + ' ';
   end;

   //Область
   if LENGTH(Name_Area) > 0 then
   begin
     if Pos('ька ', Name_Area) > 0 then
       Teritor := Teritor + Copy(Name_Area, 1, Pos('ька ', Name_Area)) + 'кої області '
     else
       Teritor := Teritor + Name_Area + ' ';
   end;

можно ли его как-нить подправить, чтобы блок рада был активен только в случае, если участок находится вне нас. пункта?

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

Додано: 13 травня 2011, 17:01
shels_chorny
можно ли его как-нить подправить, чтобы блок рада был активен только в случае, если участок находится вне нас. пункта?


Можно, но для этого нужно проверять значение поля в участке ID_TypeLocation = 0 (в нас.пункте), ID_TypeLocation = 1 (за пределом нас.пункте)