Звіти в ГІС 6
Re: Отчеты в GIS6
Доброго дня. Підскажіть: якщо виготовляється технічна документація по встановленню меж (наприклад держакт на пай власник якого помер) то районне Держземагентство вимагає щоб в технічці вказували П.І.Б і померлої людини (тієї що вказана в акті) і спадкоємця а також приписку спадкоємця. Підкажіть щоб Ви могли порадити в даній ситуації, П.І.Б. померлої людини я заповнюю в закладці "Субєкт права" а от куди внести данні на спадкоємця (з данних спадкоємця потрібно П.І.Б. щоб відмінялось та приписку більше нічого). І щоб ці данні можна було роздрукувати за допомогою отчота .frf. Можливо ці данні якось можна вписати в коментарі і потім якось вивести на дркук? Дякую.
- Dorochenko_iv
- Повідомлень: 162
- З нами з: 12 березня 2010, 21:55
- Звідки: м.Чернігів
- Контактна інформація:
Re: Отчеты в GIS6
Якщо дані власника і спадкоємця на різних документах, то ,як варіант, робимо наступне: Створюємо одного суб'єкта права та заповнюємо на нього дані, потім на іншого суб'єкта (http://www.shels.ru/blog.htm?b=58). У вікні "Земельні ділянки" вибираємо першого (наприклад власника) та видруковуємо всі документи де він зустрічається. Теж саме робимо зі спадкоємцем.
Якщо на одномому то потрібно створювати новий шаблон.
Якщо на одномому то потрібно створювати новий шаблон.
Re: Отчеты в GIS6
zigura_a писав:І щоб ці данні можна було роздрукувати за допомогою отчота .frf.
Не рекомендую використовувати frf. Зараз ми всі шаблони робимо для fr3 - в ньому більше функцій і простіше працювати. Розбирайтесь з новим редактором, бо в frf далеко не все можна зробити, а коли доведеться, то перетворювати із frf в fr3 дуже складно.
zigura_a писав:Підкажіть щоб Ви могли порадити в даній ситуації, П.І.Б. померлої людини я заповнюю в закладці "Субєкт права" а от куди внести данні на спадкоємця (з данних спадкоємця потрібно П.І.Б. щоб відмінялось та приписку більше нічого).
Правильно робити так: померлій людині ставите дату припинення права (наприклад, дату смерті), дублюєте суб'єкта права і йому вже назначаєте іншу фіз.особу (набувача) і дату виникнення права теж поставте нову. В полі "Вид записи" виберіть "Переход права". З'явиться поле "Связь с прочими субъектами права..." от там треба вказати померлого. Таким чином це буде максимально правильно для структури бази GIS6. А вже щоб в шаблон вивести, то треба спеціальний код прописувати.
zigura_a писав:Можливо ці данні якось можна вписати в коментарі і потім якось вивести на дркук? Дякую.
Можна і так. Тоді достатньо буде просто витягувати значення коментарів із суб'єкту права:
[DM1.TbUser."Note"]
Re: Отчеты в GIS6
"Правильно робити так: померлій людині ставите дату припинення права (наприклад, дату смерті), дублюєте суб'єкта права і йому вже назначаєте іншу фіз.особу (набувача) і дату виникнення права теж поставте нову. В полі "Вид записи" виберіть "Переход права". З'явиться поле "Связь с прочими субъектами права..." от там треба вказати померлого. Таким чином це буде максимально правильно для структури бази GIS6. А вже щоб в шаблон вивести, то треба спеціальний код прописувати." - я розумію що як все це зробити по цій переписці Ви мені не розповісте, але все ж таки підкажіть будьласка в двух словах (приведіть пару прикладів):
1. які формули треба прописувати в шаблоні.
2. до кого можна звернутися щоб розпробив шаблони в яких би данні відображалиь так як потрібно мені (підскажіть контактні телефони або елетронні адреси).
3. якщо все зробити так як радите Ви, то чи буде програма вірно робити хмл? (в хмл у полі власник та в полі державний акт повинно стояти прізвище власника державного акту тобто померлої людини)
1. які формули треба прописувати в шаблоні.
2. до кого можна звернутися щоб розпробив шаблони в яких би данні відображалиь так як потрібно мені (підскажіть контактні телефони або елетронні адреси).
3. якщо все зробити так як радите Ви, то чи буде програма вірно робити хмл? (в хмл у полі власник та в полі державний акт повинно стояти прізвище власника державного акту тобто померлої людини)
Re: Отчеты в GIS6
Підскажіть: у шаблоні вказана формувла [DM1.QsPeople."Family3"] а відображає не прізвище що стоїт в закладці "Субєкт права"-"Владельца (кого?)" а зовсім іншої людини, чому так?
Re: Отчеты в GIS6
zigura_a писав:Підскажіть: у шаблоні вказана формувла [DM1.QsPeople."Family3"] а відображає не прізвище що стоїт в закладці "Субєкт права"-"Владельца (кого?)" а зовсім іншої людини, чому так?
1. в параметрах "Субъекта права" физ. лицо заполняется с таблицы DM1.QbPeople, а Вы выводите с DM1.QsPeople.
2. потому что нужно сперва найти в таблице физических лиц запись, которая используется в Субъекте права, а потом уже выводить значение [DM1.QsPeople."Family3"].
Пример
Код: Виділити все
If LocateData( 'DM1.QsPeople','ID_People', <DM1.TbUser."ID_People">) Then
CustomerWho3 := <DM1.QsPeople."Family">;
// где CustomerWho3 - переменная, котрую нужно огласить в разделе Var - CustomerWho3: String; // смотрите в коде по аналогии
п.с. Все типичные примеры описаны здесь :\Books\Метод доступа до полей 5 и 6.pdf
п.п.с. Описание всех служебн.переменных и функций: C:\Program Files\GIS6\_Описание переменных.txt
Re: Отчеты в GIS6
В продолжении вопроса zigura_a о адресе участков: никак не получается настроить код так как нужно.
Например когда зелёной меткой помечено 2 участка за пределами населённого пункта пусть вот с такими адресами:
1) Київська область, Васильківський район, Здорівська сільська рада, пай №1
2) Київська область, Васильківський район, Крушинська сільська рада (Здорівська сільська рада), пай №2
то нужно что бы переменная, пусть будет [Adress] результат выдавала так: земельні ділянки знаходяться на територіїі
Київської області, Васильківського району, Здорівської сільської ради, пай №1 та Київської області, Васильківського
району, Крушинської сільської ради (Здорівської сільської ради), пай №2 (в скобках хотел показать что код не должен
зависеть от того в одной раде или в разных находятся земельные участки).Участков может быть больше чем 2.
Такой вот код: (ObjectAdress := ObjectAdress + <DM1.QbObject."Address">) - выдаёт но не склоняет, о который "по
кусочкам" - склоняет, но выдаёт адрес только на 1 участок (ну покрайней мере у меня так...не знаю что я не так делаю).
Если в пределах населённого пункта отметить несколько участков например с такими адресами:
1) Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1
2) Київська область, Васильківський район, с.Здорівка (какой то там огород например)
то нужно что бы переменная [Adress] результат выдавала так: земельні ділянки знаходяться за адресою: Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1 та на території с.Здорівка Васильківського району Київської області. (ориентироватся на заполненые поля "вулиця" и "будинок")Ну либо что то подобное.
И вот такое я хотел впихнуть в 1 шаблон ) не знаю правда возможно ли это.
Кто как у себя это сделал? Поделитесь пожалуйста, а то у меня уже нервный тик начинается от этих кодов . Либо,уважаемый feNICKs напишите пожалуйста как всё это реализовать, я знаю что вы знаете как
Например когда зелёной меткой помечено 2 участка за пределами населённого пункта пусть вот с такими адресами:
1) Київська область, Васильківський район, Здорівська сільська рада, пай №1
2) Київська область, Васильківський район, Крушинська сільська рада (Здорівська сільська рада), пай №2
то нужно что бы переменная, пусть будет [Adress] результат выдавала так: земельні ділянки знаходяться на територіїі
Київської області, Васильківського району, Здорівської сільської ради, пай №1 та Київської області, Васильківського
району, Крушинської сільської ради (Здорівської сільської ради), пай №2 (в скобках хотел показать что код не должен
зависеть от того в одной раде или в разных находятся земельные участки).Участков может быть больше чем 2.
Такой вот код: (ObjectAdress := ObjectAdress + <DM1.QbObject."Address">) - выдаёт но не склоняет, о который "по
кусочкам" - склоняет, но выдаёт адрес только на 1 участок (ну покрайней мере у меня так...не знаю что я не так делаю).
Если в пределах населённого пункта отметить несколько участков например с такими адресами:
1) Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1
2) Київська область, Васильківський район, с.Здорівка (какой то там огород например)
то нужно что бы переменная [Adress] результат выдавала так: земельні ділянки знаходяться за адресою: Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1 та на території с.Здорівка Васильківського району Київської області. (ориентироватся на заполненые поля "вулиця" и "будинок")Ну либо что то подобное.
И вот такое я хотел впихнуть в 1 шаблон ) не знаю правда возможно ли это.
Кто как у себя это сделал? Поделитесь пожалуйста, а то у меня уже нервный тик начинается от этих кодов . Либо,уважаемый feNICKs напишите пожалуйста как всё это реализовать, я знаю что вы знаете как
Re: Отчеты в GIS6
Если хотите, чтоб у Вас склоняло адреса, то тут нужно будет повозиться.
<DM1.QbObject."Address"> - это поле БД, в котором хранится уже готовый адрес и склонять его отдельные элементы можно разве что в конкретных случаях. Если хотите сделать универсальную форму, чтоб в не зависимости от адреса, склоняло любой совет, район, область, тогда Вам нужно в самой отч.форме сформировать адрес по Кадастровому номеру (точнее по коду КУАТУ).
Пример довольно большой, но если разберетесь, он Вам очень сильно пригодиться:
Данный код универсальный и можно использовать под любой адрес. Для адреса используются: Код КУАТУ, улица, номер дома.
Но если в адресе используются дополнительные поля с "Параметров участка", Вы должны его уже добавить сами.
Теперь по параметрам функций:
1. GetFullAddress:
<DM1.QbObject."IKN"> - Кадастровй номер участка
Address - адрес пред.участка (если Вы делаете перебор участков по зеленной метке)
<DM1.QbObject."Num_House"> - номер дома
<DM1.QbObject."ID_Street"> - код улицы
1-5 - формат адреса (см. комментарии под каждым форматом)
2. GetFullTerritory:
<DM1.QbObject."IKN"> - кадастровый номер
3 - формат заполнения местоположения (См. комментарии)
', ' - любой символ в лапках, служит разделителем между словами
<DM1.QbObject."Address"> - это поле БД, в котором хранится уже готовый адрес и склонять его отдельные элементы можно разве что в конкретных случаях. Если хотите сделать универсальную форму, чтоб в не зависимости от адреса, склоняло любой совет, район, область, тогда Вам нужно в самой отч.форме сформировать адрес по Кадастровому номеру (точнее по коду КУАТУ).
Пример довольно большой, но если разберетесь, он Вам очень сильно пригодиться:
Код: Виділити все
Var
Territory, City, Street, StreetTo, Address, Numb_House : String;
//----------------------------------------------------->
// Функция, формирует полное местоположения участка в разных форматах
Function GetFullTerritory( IKN : String; Type_Territory : Byte; Symbol : String) : String;
Var
Ter, Area, Region, Advice, City : String;
Begin
SeekIKN( IKN);
Area := GetArea( Name_Area);
Region := GetRegion( Name_Region, 3);
Advice := GetAdvice( Name_Advice);
City := '';
If (Length( Name_Place) > 0) And ((Pos( 'м.', Name_Place) > 0) Or (Pos( 'с.', Name_Place) > 0) Or (Pos( 'смт',Name_Place) > 0) Or (Pos( 'c-', Name_Place) > 0)) Then
City := ( Name_Place)
Else
If (Length( Name_Advice) > 0) And ((Pos( 'м.', Name_Advice) > 0) Or (Pos( 'с.', Name_Advice) > 0) Or (Pos( 'смт',Name_Advice) > 0) Or (Pos( 'c-', Name_Advice) > 0)) Then
City := ( Name_Advice)
Else
If (Length( Name_Region) > 0) And ((Pos( 'м.', Name_Region) > 0) Or (Pos( 'с.', Name_Region) > 0) Or (Pos( 'смт',Name_Region) > 0) Or (Pos( 'c-', Name_Region) > 0)) Then
City := ( Name_Region)
Else
If (Length( Name_Area) > 0) And ((Pos( 'м.', Name_Area) > 0) Or (Pos( 'с.', Name_Area) > 0) Or (Pos( 'смт',Name_Area) > 0) Or (Pos( 'c-', Name_Area) > 0)) Then
City := ( Name_Area);
Case Type_Territory Of
1 : Begin
Ter := 'на території ';
//Рада
If Length( Advice) > 0 then
Ter := Ter + Advice;
//Район
If Length( Region) > 0 Then
Ter := Ter + Symbol + Region;
//Область
If Length( Area) > 0 then
Ter := Ter + Symbol + Area;
End;
2 : Begin
Ter := '';
//Область
If Length( Area) > 0 then
Ter := Area;
//Район
If Length( Region) > 0 Then
Ter := Ter + Symbol + Region;
//Рада
If Length( Advice) > 0 then
Ter := Ter + Symbol + Advice;
End;
3 : Begin
Ter := '';
If Length( City) > 0 then
Ter := Ter + City;
//Рада
If Length( Advice) > 0 then
Ter := Ter + Symbol + Advice;
//Район
If Length( Region) > 0 Then
Ter := Ter + Symbol + Region;
//Область
If Length( Area) > 0 then
Ter := Ter + Symbol + Area;
End;
End;
Result := Ter;
End;
//----------------------------------------------------->
//функция, формирует полный адрес в разных форматах
Function GetFullAddress( IKN, AdrBefor, Numb_House : String; ID_Street, TypeAdress : Integer) : String;
Var
Adr, City, Street, StreetTo, Area, Region, Advice, NumbHouse, : String;
Begin
Adr := '';
City := '';
Street := '';
NumbHouse := '';
Area := '';
Region := '';
Advice := '';
SeekIKN( IKN);
//Рада
If Length(Name_Advice) > 0 then
Advice := GetAdvice( Name_Advice) + ' ';
//Район
If Length(Name_Region) > 0 Then
Region := GetRegion( Name_Region, 3) + ' ';
//Область
If Length(Name_Area) > 0 then
Area:= GetArea( Name_Area) + ' ';
//Населений пункт
If (Length( Name_Place) > 0) And ((Pos( 'м.', Name_Place) > 0) Or (Pos( 'с.', Name_Place) > 0) Or (Pos( 'смт',Name_Place) > 0) Or (Pos( 'c-', Name_Place) > 0)) Then
City := CityFull( Name_Place)
Else
If (Length( Name_Advice) > 0) And ((Pos( 'м.', Name_Advice) > 0) Or (Pos( 'с.', Name_Advice) > 0) Or (Pos( 'смт',Name_Advice) > 0) Or (Pos( 'c-', Name_Advice) > 0)) Then
City := CityFull( Name_Advice)
Else
If (Length( Name_Region) > 0) And ((Pos( 'м.', Name_Region) > 0) Or (Pos( 'с.', Name_Region) > 0) Or (Pos( 'смт',Name_Region) > 0) Or (Pos( 'c-', Name_Region) > 0)) Then
City := CityFull( Name_Region)
Else
If (Length( Name_Area) > 0) And ((Pos( 'м.', Name_Area) > 0) Or (Pos( 'с.', Name_Area) > 0) Or (Pos( 'смт',Name_Area) > 0) Or (Pos( 'c-', Name_Area) > 0)) Then
City := CityFull( Name_Area);
// Назва вулиці
Query('Select S.* From Street S Where S.ID_Street='+IntToStr( ID_Street));
If RecordCount( 'DM1.Query') > 0 Then
Begin
If LocateData( 'DM2.TbTypeStreet','ID_TypeStreet', GetValue( 'DM1.Query','ID_TypeStreet')) Then
Street := GetValue('DM2.TbTypeStreet','Name');
Street := Street + ' ' + GetValue( 'DM1.Query','NameStreet');
End;
// Номер вулиці/будинку
If Length( Numb_House) > 0 Then
NumbHouse := Numb_House
Else
NumbHouse := 'б/н';
Case TypeAdress Of
// нас.пункт, вулиця, буд.
1 : Begin
If Length( AdrBefor) > 0 Then
Adr := AdrBefor;
If Length( Adr) = 0 Then
Begin
Adr := Adr + City;
Adr := Adr + ', ' + Street;
Adr := Adr + ', ' + NumbHouse;
End
Else
Begin
If Pos( City, Adr) = 0 Then
Begin
Adr := Adr + ' та в ' +City;
If Pos( Street, Adr) = 0 Then
Adr := Adr + ' по ' +Street;
End;
If Pos( Street, Adr)=0 Then
Adr := Adr + ' та по ' +Street;
If Pos( Numb_House, Adr)=0 Then
Adr := Adr + IIF( Length( NumbHouse)>0, ' та ' + NumbHouse, '');
End;
End;
// нас.пункт, вулиця, буд., рада, район, область
2 : Begin
If Length( AdrBefor) > 0 Then
Adr := AdrBefor;
If Length( Adr) = 0 Then
Begin
Adr := Adr + City;
Adr := Adr + ', ' + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Area;
End
Else
Begin
If Pos( City, Adr) = 0 Then
Begin
Adr := Adr + ' та в ' +City;
If Pos( Street, Adr) = 0 Then
Adr := Adr + ' по ' +Street;
End;
If Pos( Street, Adr)=0 Then
Adr := Adr + ' та по ' +Street;
If Pos( Numb_House, Adr)=0 Then
Adr := Adr + IIF( Length( Numb_House)>0, ' та ' + Numb_House, '');
End;
End;
// область, район, рада, нас.пункт, вулиця, буд.,
3 : Begin
If Length( AdrBefor) > 0 Then
Adr := AdrBefor;
If Length( Adr) = 0 Then
Begin
Adr := Adr + Name_Area;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
Begin
If Pos( Name_Area, Adr) = 0 Then
Begin
Adr := Adr + ' та ' + Name_Area;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
If Pos( Name_Region, Adr) = 0 Then
Begin
Adr := Adr + ' та ' + Name_Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
If Pos( Name_Advice, Adr) = 0 Then
Begin
Adr := Advice + ' та ' + Name_Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
Begin
If Pos( City, Adr) = 0 Then
Begin
Adr := Adr + ' та в ' +City;
If Pos( Street, Adr) = 0 Then
Adr := Adr + ' по ' +Street;
End;
If Pos( Street, Adr)=0 Then
Adr := Adr + ' та по ' +Street;
If Pos( Numb_House, Adr)=0 Then
Adr := Adr + IIF( Length( Numb_House)>0, ' та ' + Numb_House, '');
End;
End;
End;
// в области, районе, совете, нас.пункте, по улице
4 : Begin
If Length( AdrBefor) > 0 Then
Adr := AdrBefor;
If Length( Adr) = 0 Then
Begin
Adr := Adr + Area;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
Begin
If Pos( Area, Adr) = 0 Then
Begin
Adr := Adr + ' та в ' + Area;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
If Pos( Region, Adr) = 0 Then
Begin
Adr := Adr + ' та в ' + Region;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
If Pos( Advice, Adr) = 0 Then
Begin
Adr := Advice + ' та в ' + Advice;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
End
Else
Begin
If Pos( City, Adr) = 0 Then
Begin
Adr := Adr + ' та в ' +City;
If Pos( Street, Adr) = 0 Then
Adr := Adr + ' по ' +Street;
End;
If Pos( Street, Adr)=0 Then
Adr := Adr + ' та по ' +Street;
If Pos( Numb_House, Adr)=0 Then
Adr := Adr + IIF( Length( Numb_House)>0, ' та ' + Numb_House, '');
End;
End;
End;
// вулиця, буд., район, нас.пункт,
5 : Begin
If Length( AdrBefor) > 0 Then
Adr := AdrBefor;
If Length( Adr) = 0 Then
Begin
Adr := Street;
Adr := Adr + IIF( Length( NumbHouse)>0, ', ' + NumbHouse, '');
Adr := Adr + GetRegion( Name_Region, 2);
Adr := Adr + IIF( Pos( 'Київ', City) > 0, ' м. Києва', City);
End
Else
// в різних районах
If Pos( GetRegion( Name_Region, 2), Adr) = 0 Then
Begin
Adr := Adr + ' та ' + Street;
Adr := Adr + IIF( Length( Numb_House)>0, ', ' + Numb_House, '');
Adr := Adr + GetRegion( Name_Region, 2);
Adr := Adr + IIF( Pos( 'Київ', City) > 0, ' м. Києва', City);
End
Else
Begin
// на різних вулицях
If Pos( Street, Adr) = 0 Then
Adr := Copy( Adr, 0, Pos( GetRegion( Name_Region, 2), Adr)) +
' та ' + Street + IIF( Length( Numb_House)>0, ', ' + Numb_House, '') +
Copy( Adr, Pos( GetRegion( Name_Region, 2), Adr) , Length( Adr) - Length( GetRegion( Name_Region, 2))+2)
Else
If (Pos( Street, Adr) > 0) And (Pos( Numb_House, Adr)=0) Then
Adr := Copy( Adr, 0, Pos( Street + ', ', Adr)-1 + Length( Street + ', ')) + Numb_House + ' та ' +
Copy( Adr, Pos( Street + ', ', Adr) + Length( Street + ', '), Length( Adr) - Length( Street + ', '));
End;
End;
End;
Result := Adr;
End;
//----------------------------------------------------->
Function GetArea( AreaName : String) : String;
Begin
Result := AreaName;
If Pos('ька ', AreaName) > 0 Then
Result := Copy(AreaName, 1, Pos('ька ', AreaName)) + 'кої області'
Else
Result := CityFull( AreaName) + ' ';
End;
//----------------------------------------------------->
Function GetRegion( RegionName : String; Type : Byte) : String;
Begin
Result := RegionName;
Case Type Of
2 : If Pos( 'ький ', RegionName) > 0 Then
Result:= ' у ' + Copy( RegionName, 1, Pos( 'ький ', RegionName)) + 'кому районі'
Else
If Pos( 'ний ', RegionName) > 0 Then
Result := ' у ' + Copy( RegionName, 1, Pos( 'ний ', RegionName)) + 'ному районі'
Else
Result := CityFull( RegionName) + ' ';
3 : If Pos( 'ький ', RegionName) > 0 Then
Result:= Copy( RegionName, 1, Pos( 'ький ', RegionName)) + 'кого району'
Else
If Pos( 'ний ', RegionName) > 0 Then
Result := Copy( RegionName, 1, Pos( 'ний ', RegionName)) + 'ного району'
Else
Result := CityFull( RegionName) + ' ';
End;
End;
//----------------------------------------------------->
Function GetAdvice( AdviceName : String) : String;
Begin
Result := AdviceName;
If Pos( 'ька ', AdviceName) > 0 then
If Pos( 'сільська', AdviceName) > 0 then
Result := Copy( AdviceName, 1, Pos( 'ька ', AdviceName)) + 'кої сільської ради'
Else
If Pos( 'міська', AdviceName) > 0 then
Result := Copy( AdviceName, 1, Pos( 'ька ', AdviceName)) + 'кої міської ради'
else
If Pos( 'селищна', AdviceName) > 0 then
Result := Copy(AdviceName, 1, Pos('ька ', AdviceName)) + 'кої селищної ради'
else
Result := CityFull( AdviceName)
else
Result := CityFull( AdviceName);
End;
//----------------------------------------------------->
Function CityFull( CityName : String) : String;
Begin
//Населений пункт (повністю)
If (Length( CityName) > 0) And ((Pos( 'м.', CityName) > 0) Or (Pos( 'с.', CityName) > 0) Or (Pos( 'смт', CityName) > 0) Or (Pos( 'c-', CityName) > 0)) Then
Begin
If Pos('м.', CityName)>0 Then
Result := 'місто ' + Trim(Copy(CityName,Pos('м.',CityName)+2, Length(CityName)-2))
Else
If Pos('с.', CityName)>0 Then
Result := 'село ' + Trim(Copy(CityName, Pos('с.', CityName)+3, Length(CityName)-3))
Else
If Pos('смт', CityName)>0 Then
Result := 'селище міського типу ' + Trim(Copy(CityName, Pos('смт', CityName)+4, Length(CityName)-4))
Else
If Pos('c-', CityName)>0 Then
Result := 'селище ' + Trim(Copy(CityName, Pos('с-', CityName)+5, Length(CityName)-4));
End;
End;
//----------------------------------------------------->
begin
SeekIKN( <DM1.QbObject."IKN">);
Address := GetFullAddress( <DM1.QbObject."IKN">, Address, <DM1.QbObject."Num_House">, <DM1.QbObject."ID_Street">, 1);
Territory := GetFullTerritory( <DM1.QbObject."IKN">, 3, ', ');
end.
Данный код универсальный и можно использовать под любой адрес. Для адреса используются: Код КУАТУ, улица, номер дома.
Но если в адресе используются дополнительные поля с "Параметров участка", Вы должны его уже добавить сами.
Теперь по параметрам функций:
1. GetFullAddress:
<DM1.QbObject."IKN"> - Кадастровй номер участка
Address - адрес пред.участка (если Вы делаете перебор участков по зеленной метке)
<DM1.QbObject."Num_House"> - номер дома
<DM1.QbObject."ID_Street"> - код улицы
1-5 - формат адреса (см. комментарии под каждым форматом)
2. GetFullTerritory:
<DM1.QbObject."IKN"> - кадастровый номер
3 - формат заполнения местоположения (См. комментарии)
', ' - любой символ в лапках, служит разделителем между словами
Re: Отчеты в GIS6
Кстати, для заметки, мы недавно добавили новую функцию ReplaceStr( <строка, в которой нужно поменять слова>, <под-строка, которую нужно найти и заменить >, <под-строка, на которую нужно заменить>)
пример
До: Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1
После: Київської області, Васильківського району, с.Здорівка вул.Жовтнева,1
Данная процедура проще, но Вы не сможете комбинировать слова т.к. только заменяете на нужные кусочки.
пример
Код: Виділити все
Str := <DM1.QbObject."Address">; // Ваш "Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1"
Str := ReplaceStr( Str, 'ська область', 'ької області');
Str := ReplaceStr( Str, 'ький район', 'ького району');
Str := ReplaceStr( Str, 'ний район', 'ного району');
Str := ReplaceStr( Str, 'сільська рада', 'сільської ради');
Str := ReplaceStr( Str, 'міська рада', 'міської ради');
Str := ReplaceStr( Str, 'селищна рада', 'селищної ради');
If Pos( Str, Address) = 0 Then
Begin
If Length( Address) > 0 Then
Adress := Address + ' та ';
Address := Address + Str;
If Pos( Str, Address) = 0 Then
Begin
If Length( Address) > 0 Then
Adress := Address + ' та ';
Address := Address + Str;
До: Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1
После: Київської області, Васильківського району, с.Здорівка вул.Жовтнева,1
Данная процедура проще, но Вы не сможете комбинировать слова т.к. только заменяете на нужные кусочки.
Re: Отчеты в GIS6
Доброго дня. Підскажіть яку потрібно підставить формулу щоб відображалить данні із закладки "Земельныей участок" графа "Нас. пункт". Наприлкада: Земельна дылянка розташована [(формула яка відображає данні з графи "Нас. пункт] ....