Модул
Съдържание
Индекс 🔎︎

# Данни

Разделът Данни определя свойствата на формуляра, отнасящи се до свързаната с него база от данни.

Дефинира източника на данни, върху който е базиран формулярът, или задава дали данните могат да бъдат редактирани от потребителя. Освен функциите за сортиране и филтриране, тук ще намерите и всички необходими свойства за създаване на подформуляр.

За достъп до тази команда...

Отворете контекстното меню на избран елемент от формуляр - изберете раздела Формуляр - Данни

Отворете лентата с инструменти Елементи за управление или Проектиране на формуляр, щракнете върху иконата Формуляр - раздел Данни

## Анализиране на команда на SQL

Указва дали операторът на SQL да бъде анализиран от LibreOffice. Ако зададете „Да“, можете да щракнете върху бутона ... до списъчното поле Съдържание. Това ще отвори прозорец, в който можете да създадете графично заявка към базата от данни. Когато затворите този прозорец, операторът на SQL за създадената заявка ще бъде вмъкнат в полето Съдържание.

## Източник на данни

Дефинира източника на данни, за който се отнася формулярът. Ако натиснете бутона ..., ще извикате диалоговия прозорец Отваряне, в който можете да изберете източник на данни.

## Лента за навигация

Указва дали могат да се използват функциите за навигация в долната лента на формуляра.

Настройката „По-външен формуляр“ се използва за подформуляри. Ако я изберете за подформуляр, можете да извършвате навигация чрез записите в главния формуляр, докато курсорът е в подформуляра. Подформулярът е свързан с родителския формуляр чрез релация от вида 1:1, така че навигацията винаги се извършва в родителския формуляр.

## Разрешени промени

Определя дали могат да бъдат променяни данни.

## Разрешено добавяне

Определя дали могат да бъдат добавяни данни.

## Разрешено изтриване

Определя дали могат да бъдат изтривани данни.

## Само добавяне на данни

Определя дали формулярът позволява само добавяне на нови данни (Да) или и други операции (Не).

Ако Само добавяне на данни има стойност „Да“, не е възможно да се променят или изтриват данни.

## Свързване на главни полета

Ако създавате подформуляр, въведете полето от по-външния формуляр, осигуряващо синхронизацията между него и подформуляра. За да въведете няколко стойности, натискайте Shift + Enter след всеки въведен ред.

Подформулярът е базиран на заявка на SQL, и по-точно – на параметрична заявка. Ако срещу Свързване на главни полета бъде въведено име на поле, данните, съдържащи се в това поле в главния формуляр, ще бъдат прочетени в променлива, която трябва да въведете в Свързване на подчинени полета. В подходящ оператор на SQL тази променлива се сравнява с данните от таблицата, за която се отнася подформулярът. Вместо това можете също да въведете името на колоната в полето Свързване на главни полета.

Разгледайте следния пример:

Нека таблицата, върху която е базиран формулярът, да представлява например списък с клиенти („Customer“), като на всеки клиент е приписан уникален номер в поле с името „Customer_ID“. Поръчките на клиента се съхраняват в друга таблица в базата от данни. Вие искате да видите поръчките на всеки клиент, след като го въведете във формуляра. За тази цел трябва да създадете подформуляр. Срещу Свързване на главни полета въведете полето от таблицата с клиенти, което идентифицира еднозначно клиента, в случая – Customer_ID. Срещу Свързване на подчинени полета въведете името на променливата, която трябва да приеме данните от полето Customer_ID, например x.

Подформулярът трябва да показва съответните данни от таблицата с поръчки („Orders“) за всеки идентификатор на клиент (Customer_ID -> x). Това е възможно само ако всяка поръчка в таблицата с поръчки е приписана точно на един клиент. Може да използвате и друго поле с име Customer_ID, но за да се уверим, че то няма да бъде сгрешено с едноименното поле от главния формуляр, ще го наречем Customer_Number.

Сега сравнете Customer_Number от таблицата „Orders“ с Customer_ID от таблицата „Customers“, което може да бъде направено например чрез променливата x в следния оператор на SQL:

SELECT * FROM Orders WHERE Customer_Number =: x (ако желаете подформулярът да показва всички данни от таблицата с поръчки)

или:

SELECT Item FROM Orders WHERE Customer_Number =: x (ако желаете подформулярът за таблицата с поръчки да показва само данните от полето „Item“)

Операторът на SQL може да бъде въведен в полето Източник на данни, а можете и да създадете подходяща параметризирана заявка, върху която да базирате подформуляра.

## Свързване на подчинени полета

Ако създавате подформуляр, въведете променливата, в която да се съхраняват възможните стойности от полето в по-външния формуляр. Ако подформулярът е базиран върху заявка, въведете променливата, която сте дефинирали в заявката. Ако създавате формуляр чрез оператор на SQL, въведен в полето Източник на данни, въведете променливата, използвана в оператора. Можете да изберете произволно име за променливата. Ако желаете да въведете няколко стойности, натискайте Shift + Enter между тях.

Ако например срещу Свързване на главни полета сте задали полето Customer_ID, в Свързване на подчинени полета можете да дефинирате името на променливата, в която да се запазват стойностите на това поле. Ако след това зададете оператор на SQL, използващ тази променлива, в свойството Източник на данни, в подформуляра ще се показват съответните стойности.

## Сортиране

Указва условията за сортиране на данните във формуляра. Спецификацията на условията за сортиране следва правилата на SQL, като клаузата ORDER BY се пропуска. Например, ако желаете всички записи в базата от данни да бъдат сортирани по едно поле във възходящ ред и по друго – в низходящ, въведете: Forename ASC, Name DESC (приемаме, че Forename и Name са имената на двете полета).

Съответните икони от лентата Навигация за формуляр могат да се използват за сортиране в потребителски режим: Възходящо сортиране, Sort Descending, Sort.

## Съдържание

Определя вида на съдържанието на формуляра. Това може да бъде съществуваща таблица или заявка (създадена предварително в базата от данни) или оператор на SQL. Преди да въведете съдържание, трябва да зададете точния тип срещу Тип съдържание.

Ако сте избрали „Таблица“ или „Заявка“ в Тип съдържание, полето изброява всички таблици или заявки в избраната база от данни.

## Тип съдържание

Определя дали източникът на данни да бъде съществуваща таблица или заявка или формулярът да бъде генериран въз основа на оператор на SQL.

Ако изберете „Таблица“ или „Заявка“, формулярът ще се отнася за таблица или заявка, зададена срещу Съдържание. Ако желаете да създадете нова заявка или подформуляр, трябва да изберете възможността „SQL“. След това можете да въведете оператора за заявката на SQL или подформуляра направо в полето Съдържание на списъка в раздела Данни от свойствата на елемента за управление.

## Филтър

Въведете необходимите условия за филтриране на данните във формуляра. Спецификацията на филтъра следва правилата на SQL, като клаузата WHERE се пропуска. Например, ако желаете да виждате всички записи, съдържащи собствено име (forename) „Михаил“, въведете в полето: Forename = 'Михаил'. Можете също така да комбинирате условия: Forename = 'Михаил' OR Forename = 'Петър'. Ще бъдат показани всички записи, отговарящи на някое от тези две условия.

Функцията за филтриране е достъпна в потребителски режим чрез иконите Автофилтър и Подразбиран филтър от лентата Навигация за формуляр.

## Цикъл

Определя как се извършва навигация чрез клавиша Tab. Чрез клавиша Tab можете да се придвижвате напред във формуляра. Ако натиснете едновременно и клавиша Shift, навигацията ще следва противоположната посока. Ако достигнете последното (или първото) поле и натиснете Tab отново, резултатът може да бъде различен. Имате следните възможности за избор:

Настройка | Значение
По подразбиране | Тази настройка автоматично дефинира цикъл, който следва съществуваща връзка в базата от данни: ако формулярът съдържа връзка с база от данни, по подразбиране при излизане от последното поле клавишът Tab ще започне преминаване към следващия или предишния запис (вижте „Всички записи“). Ако няма връзка с база от данни, се показва следващият или предходният формуляр (вижте „Текуща страница“).
Всички записи | Тази настройка важи само за формуляри към бази от данни и служи за навигация през всички записи. Ако напуснете последното поле от формуляр с клавиша Tab, текущият запис се сменя.
Активен запис | Тази настройка важи само за формуляри към бази от данни и служи за навигация в текущия запис. Ако напуснете последното поле от формуляр с клавиша Tab, текущият запис остава същият.
Текуща страница | При напускане на последното поле от формуляр курсорът прескача към първото поле в слеващия формуляр. Това е стандартно за формулярите на HTML, затова тази настройка е особено подходяща за формуляри на HTML.

## Какво е подформуляр?

Формулярите се създават въз основа на таблица или заявка в база от данни. Те показват данните по удобен за разглеждане начин и могат да се използват за въвеждане или редактиране на данни.

Ако ви е необходим формуляр, който може да цитира данните от таблица или заявка и в допълнение да показва данни от друга таблица, трябва да създадете подформуляр. Този подформуляр може например да представлява текстово поле, показващо данните от друга таблица в базата от данни.

Подформулярът представлява допълнителен компонент на главния формуляр. Главният формуляр понякога се нарича „родителски“ или „по-външен“ формуляр. Подформулярите са необходими, когато желаете достъп до повече от една таблица в даден формуляр. Всяка допълнителна таблица изисква свой собствен подформуляр.

След като създадете формуляр, можете да до превърнете в подформуляр. За тази цел преминете в режим на проектиране и отворете навигатора за формуляри. В него плъзнете формуляра (който ще стане подформуляр) върху друг формуляр (който ще стане главен формуляр).

Потребителите на документа няма да виждат, че формулярът съдържа подформуляри. Те виждат само документ, в който се въвеждат данни или се показват съществуващи данни.

Укажете свързаното главно поле измежду полетата с данни в главния формуляр (свойство Свързване на главни полета). В подформуляра можете да зададете свързаното подчинено поле, което ще съответства на съдържанието на свързаното главно поле (свойство Свързване на подчинени полета).

Коато потребителят обхожда данните, формулярът винаги показва текущия запис с данни. Ако са дефинирани подформуляри, съдържанието им ще се показва след кратко забавяне от около 200 мс. Това изчакване ви позволява да преглеждате бързо записите с данни от главния формуляр. Ако преминете към следващия главен запис по време на изчакването, не е необходимо да се извличат и показват данните от подформуляра.