Аналитика
http://www.geosystema.net/forum/

Формирорвание отчета в Reports
http://www.geosystema.net/forum/viewtopic.php?f=1&t=295
Страница 12 из 49

Автор:  Anton Shchavinsky [ 24 мар 2009 11:04 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Всем привет!

И еще пару вопросов:

1. У меня в Дилянке есть несколько Угидь. Мне нужно в репортс передать коды этих Угидь через запятую, как такое реализовать?
2. У Угидь есть Обмеження, иногда Обмеження ставиться на всю Дилянку, иногда на одне Угиддя, иногда на несколько Угидь. Как мне вытащить в Репортс эти Обмеження. В случае, если оно принадлежит Дилянке, то понятно. Как это сделать, если Обмеження есть в Угидях?

Надеюсь, что понятно описал :-)

Автор:  Jekos1 [ 24 мар 2009 11:14 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Почти такой же вопрос я задавал. Вот ответ viewtopic.php?p=4336#4336
Все работает!

Автор:  Anton Shchavinsky [ 24 мар 2009 15:21 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Да, вопрос правда похож и с Сумижниками у меня так и работает, а вот ответ 2) PARAM('LS',N,I) , где N - номер участка /от 1 до OBJCOUNT/, I - номер угодья /от 1 до CHILDCOUNT(N) / мне немного не понятен. PARAM('LS',N,I) где вводить? Что ставить на место N и I? Можно живой пример?

Автор:  Dmitry_Zolotar [ 24 мар 2009 18:03 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Виктор Каракай писал(а):
Как-то было озвучено обещание создать шаблончик приватизации для пофамильного режима на четыре участка. Так вот, можно скромно спросить:Что- нибудь делается в этом направлении или...? Спасибо за ответ.

Вариант требует небольшой доработки, выкладываю чтоб Вы попробовали.
Переменная TXAD формируется в зависимости от того совпадают ли адреса участков, ее значение присутствует практически на каждой странице документации. Попробуйте разные варианты (с одинаковыми адресами, с разными) и киньте на zolotar@vingeo.com как должно(может) выглядеть решение местного совета в случае множества участков

Вложения:
TD_priv_2d.zip [16.52 Кб]
Скачиваний: 583

Автор:  Dmitry_Zolotar [ 24 мар 2009 18:31 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Anton Shchavinsky писал(а):
Да, вопрос правда похож и с Сумижниками у меня так и работает, а вот ответ 2) PARAM('LS',N,I) , где N - номер участка /от 1 до OBJCOUNT/, I - номер угодья /от 1 до CHILDCOUNT(N) / мне немного не понятен. PARAM('LS',N,I) где вводить? Что ставить на место N и I? Можно живой пример?

Работающие примеры в папке Digitals\Templates найдёте, посмотрите шаблоны для разных режимов (одиночный, пофамильный и групповой). Особенно актуальными для понимания окажутся функции GetParcelByCV и GetAreaByCN в скрипте экспликации пофамильного режима.
На вопрос "где вводить?" нет короткого ответа. PARAM( , , ) - одна из многих функций, которые можно использовать в скрипте или в тексте мемо, например.

Автор:  Anton Shchavinsky [ 24 мар 2009 22:01 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Спасибо за подсказку. И правда, в файле примера отчета Vityag.fr3 есть ответ на вопрос, как вытащить обмеження и сервитуты с угидь. Они даже коментами такими помечены:
--
Проверка есть ли обмеження в участке. Если да, то выводим строку с данными обмеження по участку. Если нет, то проверяем, есть ли хотя бы в одном угодии обмеження. Если есть хоть в одном, выводим строку с данными по этому угодию
--
--
Проверка есть ли сервитут в участке. Если да, то выводим строку с данными сервитут по участку. Если нет, то проверяем, есть ли хотя бы в одном угодии сервитут. Если есть хоть в одном, выводим строку с данными по этому угодию.
--
Привожу их здесь, может понадобится кому, да и при поиске найти можно будет! :wink:

Автор:  misha_OD [ 25 мар 2009 17:31 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Хочу в Репортсі прописати видалення послідовності символів ,-

Var adresa:string;
i:integer;
begin
for i:=1 to Length(adresa) do
if adresa[i]='-' then adresa:=Delete(adresa,i-1,2)
end

Зявляється повідомлення про несумісність типів в функції Delete.

Автор:  Olg@ [ 25 мар 2009 17:43 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Var adresa:string;
i:integer;
begin
for i:=1 to Length(adresa) do
if adresa[i]='-' then Delete(adresa,i-1,2)
end

Автор:  Dmitriy Fedorov [ 25 мар 2009 18:41 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Погодите, господа..
С таким кодом вы рискуете получить "out of bounds"?! Длина строки задается в цикле, а в процессе явно будет уменьшаться..
Честно, не проверял.:)

Автор:  Dmitry_Zolotar [ 25 мар 2009 19:13 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

misha_OD писал(а):
Хочу в Репортсі прописати видалення послідовності символів ,-

Var adresa:string;
i:integer;
begin
for i:=1 to Length(adresa) do
if adresa[i]='-' then adresa:=Delete(adresa,i-1,2)
end

Зявляється повідомлення про несумісність типів в функції Delete.


Удаляя символы из строки, Вы уменьшаете ее длину, при этом кол-во итераций в цикле задано в начале и остается неизменным
На какой-то итерации получите ситуацию когда i уже больше Length(adresa), цикл при этом не завершится. Да и значения вроде "Белгород-Днестровский" станут "БелгороДнестровский"
Попробуйте что-то вроде:
var adresa:String;
ip:Integer;
begin
....
adresa:=Param('..');
ip:=Pos(',-',adresa);
while ip>0 do
begin
adresa:=Copy(adresa,1,ip-1)+Copy(adresa,ip+2,Length(adresa)-2);
ip:=Pos(',-',adresa);
end;
....
end.

Этот код не удалит первый минус :D

Автор:  Anton Gorpynich [ 25 мар 2009 19:38 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Dmitriy Fedorov писал(а):
Погодите, господа..
С таким кодом вы рискуете получить "out of bounds"?! Длина строки задается в цикле, а в процессе явно будет уменьшаться..
Честно, не проверял.:)

Тем не менее и без проверки замечание справедливое. При вызове Delete длина строки уменьшается и символы смещаются влево.

Кроме того, а что если строка будет начинаться с "-"?

Учитывая вышесказанное предлагаю корректный и более производительный вариант:

function DeleteMinus(s:string):string;
var n: integer;
begin
if s[1]='-' then Delete(s,1,1);
repeat
n:=Pos(',-',s);
if n>0 then Delete(s,n,2);
until (n=0) or (Length(s)=0);
Result:=s;
end;

Автор:  misha_OD [ 25 мар 2009 20:56 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Дякую всім, особливо Антону Горпиничу :!: . Я думав він в основному по Геодезії, а виявляється і Репортс теж його коньок.

Автор:  Dmitry_Zolotar [ 26 мар 2009 08:43 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

И все же первый минус надо удалять после остальных и вместе с запятой после него
function DeleteMinus(s:string):string;
var n: integer;
begin
repeat
n:=Pos(',-',s);
if n>0 then Delete(s,n,2);
until (n=0) or (Length(s)=0);
if s[1]='-' then if Length(s)>1 then Delete(s,1,2) else s:='';
Result:=s;
end;

Автор:  Dmitry_Zolotar [ 26 мар 2009 08:44 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

misha_OD писал(а):
Дякую всім, особливо Антону Горпиничу :!: . Я думав він в основному по Геодезії, а виявляється і Репортс теж його коньок.

Не конёк, а детище

Автор:  Jekos1 [ 30 мар 2009 13:30 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Ув. разработчики, подскажите пожалуйста, возможно такое что бы Репорт сам выставлял длины, номера точек и площадь когда загружает растр? СПС.

Страница 12 из 49 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/