Питання по базам даних в звітових формах

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

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

terrakod
Повідомлень: 7
З нами з: 07 червня 2011, 21:29
Контактна інформація:

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

Повідомлення terrakod » 11 червня 2011, 11:20

Спасибо огромное за помощь начинающим!!! :oops:

korpol
Повідомлень: 18
З нами з: 02 квітня 2011, 21:28

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

Повідомлення korpol » 14 червня 2011, 13:41

Здравствуйте

1.Подскажите, пожалуйста, почему, когда я ввожу, например. такой код [LandUses], то мне выводит значение не моего участка, а какое-то другое, но не то, что мне нужно….

2. Как определить поле базы данных для отображения в отчётных формах если я его не нашёл не в одном примере и в файлах «База данных GIS6.xls» и «Базы данных.xls»?

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

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

Повідомлення TiJester » 14 червня 2011, 15:29

korpol писав:Здравствуйте

1.Подскажите, пожалуйста, почему, когда я ввожу, например. такой код [LandUses], то мне выводит значение не моего участка, а какое-то другое, но не то, что мне нужно….

2. Как определить поле базы данных для отображения в отчётных формах если я его не нашёл не в одном примере и в файлах «База данных GIS6.xls» и «Базы данных.xls»?


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

[DM1.QbObject."Address"]


вот в Фаст что выводит адрес участка

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

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

Повідомлення NickS » 15 червня 2011, 17:04

slava писав:Скажите пожалуйста можно ли сформировать в программе информацию сразу по всех участках которые находятсь в базе данных для печати??????

Конечно можно! В окне Земельные участки, меню Отбор, пункт Отбор записей. По любому критерию отбираете участки, а потом нажимаете кнопочку Печать списка (только это для формата А3). Вы также можете скинуть этот список в Exel (кнопка Экспорт списка в MS Exel) и там уже его соответсвенно подготовить для печати на А4

korpol
Повідомлень: 18
З нами з: 02 квітня 2011, 21:28

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

Повідомлення korpol » 18 червня 2011, 15:09

Сразу извиняюсь, если мой вопрос покажется глупым, но никак не могу разобраться…

Подскажите, пожалуйста, никак не могу понять принцип написания шаблонов для отчётных форм. Например, если вводить данные типа [DM2.TbTypeUse."Name"], то ФастРепорт, в итоге, выводит значения не соответствующие действительности, пока не войдёшь в окно изменения данных и не пересохранишь участок. В большинстве шаблонов, под каждое значение объявляется переменная и прописывается условие. Можно конечно оттуда тупо копировать код и вставлять в свой шаблон, но хочется разобраться. Есть ли какое-то простое описание принципа написания форм?

В программе, которую мы использовали до GIS 6, каждое поле семантической информации имело свой код. Любое условие можно было составить, просто определив код семантики и номер столбца данных (все эти данные хранились в семантическом реестре программы).

Вот пример:
[SEMANTIC(FindCode(1), '018', 3)] (FindCode(1) – номер по порядку выбранного участка, '018' – Код поля семантики, 3 – номер столбца данных)

Простейшее условие:

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

var
dog, dog_num, dog_data: string;

begin

dog_num := SEMANTIC(FINDCODE(1), '219', 0);                 
dog_data := SEMANTIC(FINDCODE(1), '220', 0);           
dog := '№________ від _______________________ р.';
if (SEMANTIC(FINDCODE(1), '220', 0) <> '') and (SEMANTIC(FINDCODE(1), '220', 0) <> '-') then dog := '№' + dog_num + ' від ' + dog_data + 'р.';

end.


Я знаю что, в GIS, есть поля базы данных, в которых хранится та или иная информация, но просто прописав имя поля базы данных, информация выводится не корректно в большинстве случаев. Как все-таки правильно вытягивать необходимые данные и создавать условия?

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

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

Повідомлення NickS » 18 червня 2011, 16:13

korpol писав:В программе, которую мы использовали до GIS 6, каждое поле семантической информации имело свой код. Любое условие можно было составить, просто определив код семантики и номер столбца данных (все эти данные хранились в семантическом реестре программы).

Мы отказались от такого подхода. Потому что:
1. Таблиц и полей очень много.
2. У них сложная структура и из-за этого трудно предусмотреть все возможные варианты.
3. Очень неудобно определять что это за поле имея только номер, а особенно когда этих номеров очень много.

korpol писав:Например, если вводить данные типа [DM2.TbTypeUse."Name"], то ФастРепорт, в итоге, выводит значения не соответствующие действительности, пока не войдёшь в окно изменения данных и не пересохранишь участок.

Совершенно верно! Это типичное поведение кода, когда вставляют только название поля. Чтобы понять почему это неправильно работает, нужно углубится в понимание что такое база данных и её связи.

Вся информация об участках хранится в базе данных. База данных состоит из таблиц. Каждая таблица хранит свою конкретную информацию, например: есть таблици, которые хранят все физ лица, таблица, что хранит класcификатор целевого, таблица участков и т.д. Каждая таблица похожа на таблицу в Exel. Она имеет:
Поля - это столбци таблици, которые означают какой-то конкретный тип информации (например в таблице УКЦИЗ есть поле означающее номер целевого, а есть поле для имени целевого).
Записи - это строки в таблице (например, в таблице физических лиц, это разные физические лица).

Для наглядности, посмотрим на пример таблици физических лиц (DM1.QbPeople)
People.jpg
Таблица физических лиц


Как видим, столбци - это поля, например поле Family имеет ФИО, а поле Num_House - номер дома проживания физ.лица; строки - это различные физ.лица.

Таким образом хранится вся информация, будь то участок или документ подтверждающий право. В результате имеем большой набор данных. А теперь вопрос: у меня есть участок по адресу "ул. Ленина 34", как определить какое физ-лицо владеет им в этой таблице? :lol: Не знаете? То-тоже! Так само и программа не знает, когда Вы её заставляете вывести какое-то поле. Она просто выводит то поле, на котором она стояла (когда Вы выбираете что-то из списка, программа становится на это поле), вот почему, чтобы правильно отобразилось то поле, приходится сначала зайти, выбрать и сохранить участок. Теперь понятно, почему программа так поступает, когда Вы просто вставили поле?

Продолжение следует. :)

korpol
Повідомлень: 18
З нами з: 02 квітня 2011, 21:28

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

Повідомлення korpol » 18 червня 2011, 16:19

Да, спасибо за ответ, это понятно. А для наглядности, можете ли написать пример кода, того условия что я написал выше в сообщении?

И чём можно открыть таблицу. Что бы посмотреть поля базы данных (как у вас на картинке)?

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

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

Повідомлення NickS » 18 червня 2011, 17:37

Теперь расскажу как же правильно делать и как программа разбирается с этим всем.

В каждой таблице есть хотя бы одно поле, которое называется ключевым, в большинстве случаев это уникальный номер каждой записи. В примере выше, таблица физических лиц, это поле ID_People. Если нам нужно взять какое-то физическое лицо, достаточно просто знать его номер. (кстати, в документе База данных GIS6.xls такие поля отмечены салатовым цветом со звёздочкой в столбце "Ключ", а таблици выделяются жёлтым цветом). Используя ключевые поля можно организовывать связь с таблицами. Например, есть участок, в котором сказано, что им владеет физическое лицо с номером 63. Мы стаём на этот участок, а программа читает код и ищет его в таблице физ.лиц. Вот для того, чтобы правильно всё вытягивалось, нужно прописывать специальный код для связи этих таблиц.

Некоторые таблици не нужно связывать, их значения можно брать сразу, например это касается таблици участков (так как при выборе участка программа уже стаёт на необходимые данные).

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

Связь в коде осуществляется посредством функции LocateData, как именно, уже писалось в других форумах с примерами.

korpol писав:Да, спасибо за ответ, это понятно. А для наглядности, можете ли написать пример кода, того условия что я написал выше в сообщении?

Я ж уже писал.
http://www.gis.org.ua/forum/viewtopic.php?p=699#p699
Будьте внимательны! :) Или Вы хотите, чтобы я объяснил каждую строку?

korpol писав:И чём можно открыть таблицу. Что бы посмотреть поля базы данных (как у вас на картинке)?

SQL Server Management Studio Express.
Это бесплатная программа, она также есть на нашем диске
\Microsoft SQL Server 2005 Express\Microsoft SQL Server Management Studio Express\SQLServer2005_SSMSEE.msi

Но будте осторожны! Неправильное использование этой программы может серёзно повредить Вашу базу данных.

terrakod
Повідомлень: 7
З нами з: 07 червня 2011, 21:29
Контактна інформація:

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

Повідомлення terrakod » 18 червня 2011, 18:12

Подскажите пожалуста откуда берётся значения sVal с: [IF([sVal02] > 0, FORMATFLOAT([fdLandAreaG], [sVal02] /10000), '')]. Эта строка с шаблона експликации для вставления угодий под садами. Если я хочу изменить под любое другое угодие, захожу в тупик!!! Буду очень блогодарен! :oops:

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

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

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

terrakod писав:Подскажите пожалуста откуда берётся значения sVal с: [IF([sVal02] > 0, FORMATFLOAT([fdLandAreaG], [sVal02] /10000), '')]. Эта строка с шаблона експликации для вставления угодий под садами. Если я хочу изменить под любое другое угодие, захожу в тупик!!! Буду очень блогодарен! :oops:

Это переменная, сделанная в шаблоне. Где-то есть код, который формирует её. А что это за шаблон?