Система управління базами даних FoxPro

Система управління базами даних FoxPro.

Під базою даних розуміють певним способом організовану сукупність даних, які відображають стан об’єктів певної предметної області і зв’язки між ними. В основі такої організації лежить певна структура.

	Для того щоб декілька користувачів могли працювати з базами даних використовують СУБД. 

	СУБД – це набір програм які забезпечують роботу з базами даних. В основі кожної СУБД лежить певна мова.

	Кожна СУБД повинна розв’язувати такі задачі:

Створення баз даних – для цього необхідно визначити які дані будуть зберігатися і якого вони типу, потрібно описати структуру бази даних, тобто зв’язки між її елементами. Все це заноситься в пам’ять і СУБД звертається до цієї інформації по мірі необхідності.

Ввід даних в пам’ять – здійснюється контроль за вводом СУБД, вона керує розміщенням даних у пам’яті.

Експлуатація бази даних – користувач може обновити базу даних, добавити чи вилучити, вибрати з бази даних необхідну інформацію.

Захист даних – він необхідний у випадку раптового виключення живлення і якщо декілька користувачів одночасно здійснюють доступ до даних.

Обробка даних – найчасті це сортування діних, математична обробка даних, об’єднання даних.

Вивід даних на екран або тверді копії.

Розрізняють логічну і фізичну організацію даних.

     	Фізична рганізація даних – це реальний спосіб збереження даних.

	Логічна організація даних – вказує на те як дані представляються програмісту чи користувачеві.

	Перетворення організацій даних здійснюється програмним забезпеченням.

	Фізичні організації даних можуть відповідати декільком логічним.

	База даних складається з даних і зв’язків між ними, тобто структури.

	Існують 3 типи структур даних:

		Деревовидна(ієрархічна) – її зручно використовувати при опису даних про родовід від одного предка.





Сітьова – використовується для задання даних про родовід від двох предків.

                                           









 Реляційні структури – дані організовуються в двовимірних таблицях.

			В сучасних СУБД використовується реляційна структура. Ця конструкція була запропонована в 1970 році Коддом. Він показав що представлення даних з допомогою ієрархічної чи сітєвої структури може бути зведена до реляційної структури.

			Реляційні структури повинні задовільняти такі вимоги:

	Кожен елемент таблиці це один елемент даних.

	Всі стовпці в таблиці однорідні.

	Всім стовпцям одночасно присвоюється ім’я.

	В таблиці нема двох однакових рядків.

	В операціях з таблиці рядки і стовпці можуть переглядатися в довільному порядку.

			Перші СУБД почали виникати в 70-х роках. На даний час існують різні СУБД: dBase, FoxBase, FoxPro і т.д.

			На даний час найчастіше використовуються СУБД FoxPro і Access.

	СУБД FoxPro.

			СУБД FoxPro – це реляційна СУБД. При роботі в СУБД FoxPro користувач може працювати в інтеративному і програмному режимах. В памяті зберігаються бази даних і змінні які можуть бути записані у файлах.

	Дані і файли FoxPro

	 Типи даних. У FoxPro є шість типів даних

	символьний character

	числовий numeric

	логічний logical

	тип дата date

	тип приміток memo

	з плавючою крапкою float

			Символьний тип містить букви, цифри, службові знаки. Максимальна довжина 264 знаки.

			Числові – цифри, крапку, знак.

			Дані логічного типу складаються з однієї букви T або F(y/n).

			Тип дата містить стандартну довжину вісім знаків.

			Дані типу memo можуть містити довільні букви, цифри, знаки, спеціальні символи. Довжина залежить від обєму дискової памяті.

	   Змінні памяті. Імена імінних повинні включати до десяти букв, цифр або символів. Причому перший символ повинен бути буквою. Змінні в пам’яті можуть бути всіх типів крім типу memo. Тип змінної визначається значенням, яке туди заноситься, і описувати не потрібно. Якщо змінні не організовані у .mem файлу, то при виході з FoxPro знищуються.

	     Типи файлів. Кожен файл має своє розширення в залежності від типу. Команда по якій створюється файл присвоює йому розширення по замовчуванню, тоді розширення вказувати не обов’язково, але програміст може задавати своє розширення, тоді його потрібно вказувати кожен раз при використанні файла.

	Файли баз даних мають розширення .dbf

	Поля типу memo - .fpt

	При роботі з базою даних система створює файли підтримки з розширенням .bak

	При сортуванні бази даних зі створенням індексних файлів їх розширення .idx або .cdx

	Програмні файли - .prg

	Відкомпільовані файли - .txt 

	Для форматованого виводу файлів використовують форматні файли з розширенням .fmt

	При створенні звітів створюються файли .frx

	Змінні пам’яті зберігаються в пам’яті з розширенням .mem

	     Для того щоб завантажити FoxPro потрібно щоб на диску були всі необхідні програми для роботи СУБД, тоді запуск програми здійснити з допомогою файла FoxProl.exe

	Робота СУБД FoxPro в програмному режимі

	  		Мова FoxPro. Робочі області. Програмні файли.

			Структура команд FoxPro: <Ключове слово> [<діапазон дії>] [<список виразів>] [<умова виконання >] [<обмеження>]

	[...] – на обовязкові параметри

	<...> - вони не записуються, а замість них вставляються конкретні слова, або знаки.

	.../... – одне зслів до чи після риски повинно входити в команду обов’язково.

	? – якщо він наявний то система видає діалог для здійснення необхідні вибори.

	ключове слово – це дієслово англійською мовою яке визначає ім’я команди. Ключові слова система розпізнає по першим чотирьох літерам.

	діапазон дії – вказує на записи на які повинна діяти команда: All, Next n, Rest, Record n. 

	список виразів – це ті поля на які діє команда. Розрізняють такі позначення: < вираз C> - вираз символьного типу; <вираз N > -  вираз числового типу; <вираз L> - вираз логічного типу; <вираз D> - вираз типу дата.

	Умова виконання – For<вираз L>.

	Обмеження – While <вираз L>.

			Вирази можуть складатися з констант, змінних, полів і відповідних знаків операцій. Константи типу дата мають вигляд {12/01/99}. Логічні константи .T. .F. символьна константа береться в лапки. 

	Арифметичні операції +, -, *, /, **.

	Логічні операції .Not., .And. .Or.

	Знаки порівняння <, >, <=, >=, =, #.

	СУБД містить великий набір арифметичних та символьних функцій. 

	 		Бази даних можна відкривати в декількох робочих областях. Робочі області цифрами, або буквими, або псевдонімом відкритої в роьочій області бази даних. В будьякий момент часу активною є лише одна робоча область. Щоб перейти в іншу роьочу область задається команда Select з номером, або відповідною буквою чи псевдонімом робочої області. 

	Наприклад: Select 1;

				Select A;

				Select igor.

			Якщо псевдонім не задано то псевдонімом вважається ім’я бази даних. Певдоніми використовуються при роботі з декількома базами даних. Якщо потрібно звернутися до поля не активної бази даних то це  здійснюється таким чином <псевдонім> . (    ) <ім’я поля>

			Зауваження: в даному випадку перед іменем поля задається або . або

			Виконання команд файлу здійснюється по команді

	DO <імяPRG-файла> [WITH<списак параметрів>] [IN<файл>]

	With – в цій операції перераховується список фактичних параметрів.

	IN<файл>- дозволяє виконати процедуру в заданому програмному файлі.

			Командний файл буде працювати до тих пір поки не зустрінеться команда: 	RETURN, CANCSEL, QUIT, 	або не досягне кінця файла.

	RETURN – управління передається у викликаючу програму.

	CANSEL – управління передається в командне вікно.

	QUIT – управління передаєтьося в операційну систему.

			Створення команд здійснюється командою: modify command <ім’я файлу> [noedit] [window<вікно 1>] [in window<вікно 2>: in screen] [save] – відкриває вікно текстового редактора для створення програмного файлу. В цьому вікні записується командний файл, а для закриття файлу зі збереженням достатньо натиснути ctrl+w. 

			Якщо потрібно командний файл відредагувати то знову задають команду modify command і відкрив вікно знаявною інформацією.

	Noedit – не допускає модефікації тексту у вікні редагування.

	Window  <вікно 1> - командне вікно приймає параметри вікна 1.

	In window <вікно 2> - командне вікно відкривається у вікні 2.

	In screen – на екрані.

	Save – командне вікно зберігається на екрані після виходу з допомогою ctrl+w.

			У FoxPro є можливість задавати коментарі. Рядок коментаря починається з * , якщо комнтар слідує після команди то перед ним ставиться &&. 

		Наприклад : * перехід в іншу робочу область:

		                      Select 6 && 6 робоча область.

	Створення, відкриття і копіювання баз даних.

			Команда створення баз даних.

	Create [<ім’я бази даних >:?] – якщо задано ім’я бази даних то буде створена база даних з заданим ім’ям, якщо ж задано ? то система виведе діалогове вікно в, якому потрібно задати ім’я створювальної бази даних.

	Зауваження: процес створення бази даних по команді create аналогічний створенню бази даних з допомогою команди меню file/new.

			Щоб працювати з вікнами бази даних її потрібно відкрити, це здійснюється командою use[<ім’я бази даних>:?][in <робоча область>][index<список індексних файлів>][alias<псевдонім>] [noupdate]

			Use без параметрів закриває відкриту базу даних в активній робочій області.

	Ім’я бази даних – відкривається баз баних ззаданим ім’ям , якщо ж задано ? то система виведе діалогове вікно для вибору бази даних яку потрібно відкрити.

	In <рообоча область> - задає  номмер робочої області в якій відкриється база даних.

	index<список індексних файлів> - будуть підключатися до даної БД створені раніше індексні файли.

	Alias<псевдонім> - задає псевдонім.

	Noupdate – БД не доступна для змін.

	Приклад: use a.dbf in 2 index a1.idx alias gr26 –в другій робочій області буде відкрита БД a.dbf до неї індексний файл a1.idx, БД надається псевдонім gr26.

			Use a.dbf In2 INDEX a1.idx ALIAS gr26 – в другій робочій області буде відкрита   база даних a.dbf, до неї підключиться індексний файл a1.idx, базі даних надається псевдонім gr26.

			USE c.dbf – відкриття бази даних с.dbf. 

			USE x.dbf IN 5 ALIAS  y – у 5 робочій області біде відкрита база даних x.dbf, їй надається псевдонім у

			Для того щоб одержати повідомлення про відкриту базу даних в заданій робочій області використовують функцію DBF([<	робоча область>]) 

	Наприклад: dbf (4) – функція поверне ім’я бази даних яка відкрита в 4 робочій області.

			?dbf() – на екран виведеться ім’я бази даних, яка знаходиться в активній робочій область.

	Щоб вивести результат на екран потрібно задати знак питання.

			Зміна і модифікація структури бази даних здійснюється командою modifi structure. Копіювання структури бази даних задається команвдою copy structure to <ім’я файла>[fields<список полів>] – по заданій команді створюється порожня база даних з вказаним іменем. Структура копіюється з відкритої бази даних в активній робочій області. Якщо задано fields то в структуру будуть копіюватися лише поля зі списку. 

	Приклад: use a.dbf

			Copy structure to g .dbf fields pr,im

		в цьому фрагменті структура бази даних f.dbf копіюється в g .dbf при чому копіюються лише поля pr та im. 

						 USE k.dbf 

		     	COPY STRUCTURE  TO c.dbf -  структура бази даних k.dbf копіюється в c.dbf	

						 USE peta.dbf 

			     	COPY STRUCTURE TO lubchik.dbf  FIELDS  pr, im, rn – структура бази даних peta.dbf  копіюється в базу даних ludchik.dbf , при чому копіюються лише поля pr, im  та rn

						USE u.dbf 

		     COPY STRUCTURE TO r.dbf  FIELDS  st, bl – структура бази даних u.dbf  копіюється в базу даних r.dbf , при чому копіюються лише поля st та bl

	Зауваження: після виконання, команда copy... активною залишається стара база даних.

	Редагування та перегляд баз даних

			При роботі з базами даних часто виникає завдвння встановити  вказівника на певний запис у базі даних, для цього використовують команду:

	GO:GOTO [RECORD] N:TOP:BOTTOM[IN<робоча область>] – дана команда встановлює прихований вказівник на заданий запис взаданій робочій області, якщо робоча область не задана то береться до уваги активна робоча область.

	Приклад: go record n встановлює вказівник на запис зномером 

			 go n             n                 

			 go top – вставляє прихований вказівник на початок бази даних

			go bottom -  вставляє прихований вказівник в кінець. 

			Для переміщення вказівника по базі даних використовують команду:

	SKIP [<вираз n>] [IN<робоча область>]

	Skip – переміщує вказівник на оидн запис в перед, якщо задано вираз n, та переміщує вказівник на n записів в сторону початку бази даних, якщо – n, а якщо +n то в сторону кінця бази даних. Для тог, щоб додати запис в базу даних використовують команди: 

	 Append [blank] 

	Append – відображає вікно редагування для додавання записів в кінець активної бази даних 

	Append blank – добавляє в кінець активної бази даних  

	Insert [before ][blank] 

	Insert – вставляє запис після активного

	Insert before - вставка запису перед активним

	Blank - ставиться порожній запис

	Приклад:  GOTO 5

			      INSERT – вставка запису після 5 запису

			 GOTO 3 

			INSERT BEFOR BLANK – перед 3 записом вставиться порожній запис 

			 GOTO 12

			INSERT – вставка запису після 12

			Вилучення записів з бази даних здійснюється командою:

	Delete [<діапазон>] [For<умова>] - помічає на вилучення записи з заданого діапазону , що задовільняють умову, якщо задана команда Delete без  параметрів, то помічаються на вилучення активні записи бази даних.

	Приклад: GOTO 6

			DELETE NEXT 6 FOR sb=10 - по даних командах встановлюється вказівник на 6 запис активної бази даних і помічаються на вилучення наступні 6 записів у яких середній бал рівний 10.

				GOTO 3 

			DELETE NEXT 8 – по даних командах встановлюється вказівник на 3 запис активної бази даних і помічається на вилучення наступні 8 записів.

			Go 9

			DELETE REST – помічє на вилучення записи з 9 до кінця бази даних. 

	Pack - вилучення помічених на вилучення записів

	Zap - вилучення всіх записів активної бази даних

	Recal [<діапазон>] [For<умова>] [While<умова>] - розмарковує помічені на вилучення записи в активній базі даних заданого діапазону, що задовільняють умову, якщо параметрів не задано, то розмарковується активний запис.

	Set Deleted On/Off -  визначає  можливість 	 використовувати

	помарковані записи в інших командах.

	Replase [<діапазон>] <поле 1> with <вираз 1>[additive][<поле 2>]... [for<умова>] [while<умова1>] - по цій команді дані з поля 1 замінняються на вираз1 і т. д., при чому беруться записи з заданого діапазону, що задовільняють умові.

	Additive - задається для полів типу memo, якщо дана опція задана інформація додається в кінць існуючої в полі memo, інакше попередня інформація витирається.

			При редагуванні бази даних часто використовуються такі функції:

	Recno([<робоча область>]) - повертає номер активного запису в заданій робочій області;

	Deleted([<робоча область>]) - повертає значення true, якщо авктивний запис в базі даних в заданій робочій області помічений на вилучення;

			Для перегляду бази даних використовується команда List та  Display.

	List[Off] [<діапазон>] [[Fields]<список полів>] [For <умова>] [While<умова>] [To print:to file<ім’я файла>] – по даній команді здійснюється перегляд записів активної бази даних. Якщо задано діапазон, то переглядаються лише записи з вказаного діапазону. З допомогою опції Fields можна відібрати поля для перегляду. For і  While задають умови які записи потрібно переглядати. По замовчуванню інформація виводиться на екран, якщо задано To print,то вивід буде на принтер, якщо To file<...> - у файл з заданим іменем. Якщо задано Off, то будуть відключатися номера записів встановлені системою.

			Команда List має багато різних видів для перегляду різної інформації. Розглянемо деякі з них:

		List structure [To print:To file<Ім’я файла>] – перегляд структури бази даних.

		List files [on<диск>:<директорія>] [Like<шаблон>] – по даній команді здійснюється перегляд файлів в вказаному місці диску, які задовільняють шаблону.

	  List memory[to print : to file<файл>] [Like<шаблон>] – перегляд змінних пам’яті згідно шаблону.

	Приклад:  LIST – перегляд записів активної бази даних .

				List for st=’жіноча’ – на екран виводить всі записи у яких поле st дорівнює жіноча.

		У всіх варіантах команди List слово List можна замінити на Display.

	Змінні. Масиви. Фільтри.

			Якщо в багатьох командах використовується одна і таж умова. То щоб уникнути повторень в командах використовується фільтри на записи всієї бази даних:

	  	Set filter to <умова>.

			Якщо потрібно виключити фільтр задається команда:

		Set filter to

			В ряді випадків виникає потреба встановлювати фільтр на поля бази даних, тобто щоб в активній базі даних оброблялися лише вказані поля:

		Set fields to <список полів>.

			Якщо задано Set fields to – фільтр виключається.

			При виникненні потреби роботи з масивами використовуються такі команди:

		Dimension : Declare <ім’я масиву 1>(<вираз N1>[,<вираз N2 >]) [, <ім’я масиву 2>...] – визначення масивів, N1 та N2 це вирази числового типу, які вказують на розмірність одно чи двовимірних масивів. По замовчуванню елементи масиву ініціюються значенням Falshe. Елементи масивів можуть бути різних типів, тип елемента визначаєьбся значенням яке туди пересилається. До елементів масиву звернення здійснюється іменем масиву з індексами в круглих дужках.

		Append from array<ім’я масиву> [For<вираз L>] – дана команда додає в кінець активної бази даних дані з заданого масиву що задовільняють умову. 

		Copy to array <ім’я масиву> [<діапазон>] [For<вираз L>] [While<вираз L1>] – по даній команді дані з активної бази даних пересилаються в масив.

			У FoxPro наявні широкі можливості для роботи зі змінними. Присвоєння значення змінним задається по такій команді:

		Store <вираз> to <список змінних>:<масив>.

			Є можливість записувати змінні у файли змінних, командою:

		Save to <ім’я файла> [All like : Except<маска>] – всі змінні які були створені на даний момент часу записуються у файл з розширенням .mem. Якщо потрібно записати у файл всі змінні які задовільняють умові, масці, то використовується команда All like<маска>. Якщо потрібно записати всі змінні крім вказаних у масці то задається All except<маска>.

			Якщо потрібно відновити змінні з файла у пам’ять то використовується команда:

		Restore from<файл>[Addive]. Якщо не вказано Addive, то змінні які існували до цього в пам’яті вилучаються.

	Сортування та індексування баз даних.

			Sort to <ім’я файла>On <ім’я поля 1> [/A] [/C] [/D] [, <ім’я поля 2>] [/A] [/C] [/D] [, ... ] [Ascending : Diskending] [<діапазон>] [For<умова>] [While <умова 1>] [Fields <список полів>] [Nooptimize] – сортує в активному файлі даних, і записує йього в файл даних під вказаним іменем по полях 1,2,3...

		/A – по зростанню;  

		/D – по спаданню;

		/C – ігноруються малі і великі літери.

			Може бути вказано /AC – у відсортований файл відбираються записи які задовільняють умові і поля із вказаног списку. Якщо є слова Ascending : Discending, то типи сортування (по зростанню чи спаданню) відноситься до всіх полів для яких не були вказані типи /A, /D.

	Приклад:  SORT TO a ON pr/a – сортування поля pr активної бази даних по зростанню, і запис відсортованої бази даних в базу даних з іменем а.dbf.

			 SORT TO b ON im/D – сортування іm активної бази даних по спаданню.

			 SORT TO с ON sb/a – сортування sb активної бази даних по зростанню.

		Index On <вираз> To <IDX-файл>/Tag<ім’я тега> [Of<CDX-файл>] [For<умова>] [Compact] [Discending] [Unique] [Additive] – використовується для створення індексного файлу для текучої бази даних.

			Індексний файл складається з списку номерів записів у тому порядку в якому база даних була б відсортована. Фізичний порядок записів в базі даних не змінюється.

			У FoxPro можна створити два типи індексних файлів:

	1  Звичайний – з розширенням .IDX і мають один індексний ключ.

	  Мультиіндексний – файли з розширенням .CDX. 

			Мультиіндексні файли є двох типів : структурний з іменем яке співпадає зіменем бази даних, і файлу з довільним іменем.

			Струтурний завжди відкривається з файлом даних і його не можна закрити, але можна зробити не основним. 

		Discending – якщо не вказано, то індексування відбувається по зростанню;

		Unique – якщо в полі по якому відбувається індексування є однакові значення то буде лише один запис;

		Additive – створений індексний файл не закриває відкритих до цього індексних файлів. По замовчуванню всі індексні файли відкриті раніше закриваються.

			Індексний вираз включає в себе поле текучої бази даних, значення його може бути числовим, символьним або логічним.

			Поле memo не може включатися в індексний вираз. Довжина індексного виразу для IDX-файлу має 100 символів, а CDX-файл – 254 символи.

	Перебудова активних індексів.

			Перебудову можна здійснити двома способами : відкриття всіх індексних файлів перед внесенням зміни в базу даних, або командою Reindex, яка дає можливість модифікувати індекси після внесення всіх змін в базу даних. 

	Відкриття індексних файлів.

			Відкриття індексних файлів можна здійснити двома способами: по команді Use і по команді Set index to [<список індексних файлів> : ?]

			Зміна порядку доступу до індекса:

		Set order to <вир. N>.

	<вир. N> - вказує номер індекса з списку відкритих індексних файлів

	Відкриття індексних файлів і зміна порядку доступу до індекса у FoxPro 2.0

	Відкриття індексних файлів здійснюється по команді:

		Use[<ім’я dbf-файла>] : ? [In<робоча область>][again] [Index<список індексних файлів>]: ? [Order [<вир. N> : <IDX-файл>:[Tag<ім’я тега>] [Of<CDX-файл>][Ascending : Discending]]] [Alias <псевдонім>] [Noopdate].

		Order <вир. N> - вказує номер головного інндекса серед перерахованих в списку IDX- файлів або серед тегів, якщо нас не влаштовує відкриття індекса по замовчуванню.

		Order : Order 0 – означає що хоч індексні файли відкриваються але не назначається головного індекса.

		Order<ім’я файла> - назначає головним той індексний файл ім’я якого вказано. Якщо Order відсутнє,  то головним буде перший із списку індексних файлів, а всі інші файли  зі списку будуть відкриті.

			Якщо відкриваються теги структурних чи мультиіндексних файлів, то слово Of пишуть тоді ім’я CDX- файла не співпадає з іменем бази даних.

		Askending: diskending – вказується тоді коли нас не влаштовує порядок сортування в індексному файлі.  

		Again – дозволяє відкрити відкритій уже файл даних в іншій робочій області. В тій робочій області де він був відкритий раніше.

	 Якщо база даних вже відкрита то відкрити індексні файли можна по команді: set index to [<список індексних файлів>[ order[<вираз N>: <idx-файл>:[ tag <ім’я тега>] [ of <cdx-файл> ] [ askending : dskending ] ] ] ]. По цій команді відкривається індексний файл із списку, якщо відсутний order то дія цієї опції така ж як в команді USE.

	 Якщо боаза даних і індексні файли відкриті то змінити прядок доступу до індекса можна по команді: set order to [ < вираз n > : < idx-файл>:[ tag <ім’я тега>] [ of <cdx-файл> ] [ askending : dskending ] ] ] ][additive].

	Копіювання індексних файлів

			Індексні файли можна скопіювати в тиги по команді : copy індекс-es < idx-файл> : all to < cdx-файл>. По цій команді копіюються всі файли які є відкриті в структурних або мультиіндексних файлах. Якщо cdx-файла не має то він створюється,  іменем IDX-файлів стають іменами тегів.

			Copy Tag<ім’я тега>[Of<cdx-файл>]To<idx-файл> - команда копіює тег структурного або мультиіндексного cdx-файла, якщо файл структурний, то of не вказується.

			Delete Tag <тег 1>[of<cdx-файл 1>][,<тег 2>[of<cdx-файл 2>]] – знищує теги відповідних cdx-файлів.

			Тут можуть бути перераховані теги: формула або різні теги різних файлів, інакший варіант команди – Delete All[of <cdx-файл>] – всі теги знищити.

	Формування звітів.

	Створення звітних форм.

			Create Report [<ім’я файлу>: ?] [Window <ім’я вікна 1>] [In<ім’я вікна 2>: in screen] – ця команда відкриває вікно побудови звіту. Ім’я файлу можна задати. Система присвоїть розширення .frx. Опція Window<імя вікна> означає, що побудова звіту візьме всі характеристики із раніше створеного вікна, яке не відкрите. Вікно 1 повинне бути визначеною командою define window.

			In Window означає що вікно побудови звіту буде відкрите в вікні 2. При переміщенні порядку вікна вікно побудови звіту переміщається разом з ним. 

			In Screen – вікно побудови звіту відкривається на екрані. По замовчуванню вікно побудови звіту відкривається на екрані.

	Швидкий звіт.

			Create Report <ім’я файла>: ? From<база даних>[From : Column] [Fields<поле бази даних>] [Alias] [Nooverwrite] [With<виразN>] – створення швидкого звіту з заданим іменем і розширенням .frx, або якщо задано ?, ім’я задається у вікні запиту.

	Form : Column – визначає розміщення полів зверху вниз або зліва направо.

	Fields<поля бази даних> - поля, що будуть включатись в звіт.

	Nooverwrite – забороняє запис звіту якщо така форма створена раніше.

	With <вираз N> - задає число стовпців у звіті

			Модифікація звіту здійснюється командою:

		Modify Report [<ім’я>: ?][window<ім’я вікна1>] [in window<ім’я вікна2>:in screen] [nowait] [save]

	Nowait – програма продовжує виконувати команди відкритого вікна модифікації звітів.

	Save – задає зберігання вікна форматування звіту, після того  як користувач запустив його. 

			Генерація звіту задається командою:

	   Report From <ім’я звіту>: ? [<діапазон>] [For<умова 1>] [While<умова 2>] [Heading<вираз C>] [Ndeject] [Noconsole] [To print : To file<ім’я файла>] [Summary].

	Heading <виразC> - використовується для задання додаткового рядка заголовку на початку кожного рядка звіту.

	Ndeject – забороняє протяжку паперу при переході на нову сторінку.

	Noconsole – звіт не виводиться на екран коли здійснюється вивід на друк.

	Summary – забороняє вивід у звіт записів крім підсумків по групах звіту.

	Редагування даних.

			Browse [Fields <поля>] [For <вираз L1>] [Format] [Fresse <поле>] [Ledit/Redit] [Lak<вираз N>] [Nodelete] [Noedit/Nomodify] [Nolgriod/Norgriod] [Nolinl] [Nowait] [Partition<вираз N2>] [Rest] [Title<вираз C2>] [When<вираз L2>] [Color sheme<вираз N4>/ Color<список кольорових пар>]

	A – управління доступом до полів здійснюється опцією Fields<поля>. Полями можуть бути, як поля даних так і обчислювальні поля. Ключі можуть вказуватись через такі знаки : ‘:’, або ‘/’. 

	[:R] [: <вираз N >] [:V =<виразL1> [:F] [:E =<виразC1>]] [:D=<вираз C2>] [: B=<вираз1><вираз2>[If]] [ : W=<вираз L2>] 

	R – означає що поле дозволяється для читання.

	Ключ :<виразN1> - вираз числового типу який вказує на ширину виводимого поля.

	:V=<вираз L1> - перед редагуванням перевіряється умова, якщо вона істинна, то редагування доступне, інакше недоступне.

	: F – в ключі V означає якщо запис не був відредагованим, то він також перевіряється на правельність.

	: E – в ключі V використовується для виводу власного повідомлення.

	Ключ D задає формат відображення даних таких як Picture.

	Ключ : B=<вираз 1><вираз 2> - дозволяє визначити набір граничних значень в межах яких повинні знаходитись дані в заданому полі 

	Ключ : W= <вираз L> - задає контроль вводу даних в поле, якщо вираз істинний, то редагування доступне, інакше забороняється.

		Опція Rest використовується в Browse для того, щоб при повторному виклику команди вказівник залишався на тому записі, що і при останньому виклику команди Browse, інакше на перший запис.

		Опції ledit/redit діють в роздільному вікні Browse, вони вказують чи будуть прокручуватсь дані в лівій чи правій частині, як у change-вікні.

		Опції nolgriod/norgriod – задають вилучення вертикальних ліній в лівій чи правій частинах вікна, якщо вікно не розділене то задається onecriod

		Опція Nolinl – задає несенхронне переміщення видимих записів в розділеному вікні

		Опція Noedit – забороняє редагування, дозволяє лише помітки на вилучення і додавання записів

		Опція Nodelete – забороняє помітку на вилучення записів

		Опція Fresse <поле> - вказує на доступне поле для редагування

		Опція Format – дозволяє використовувати форматні файли для виводу інформацї командою Borwse

		Опція Title<вираз C> - задає заголовок вікна Borwse

	Опція Nowait – використовується в програмних файлах, якщо  в програмі зустрічається команда Borwse, то відкривається вікно Borwse, але система не чикає його закриття, тобто робота програми продоовжується

		Опція Color sheme<вираз N4>/ Color<список кольорових пар> -визначає розфарбування вікна Borwse

		Опція When<вираз L2> - визначає можливість доступу до запису, якщо умова хибна то запис доступний для читання інакше і для редагування

	Пошук записів

			Пошук здійснюється командою:

		Locate for <умова 1> [<діапазон>] [While <умова 2>] – здійснює послідовний пошук першого запису в базі даних, що задовільняє умову 1 з заданого діапазону поки умова 2 істенна. Для продовження пошуку використовується команда Continue. Для прискорення пошуку у проіндексованій базі даних по полю по якому здійснюється індексування використовується команда Seek<вираз>.

			Функції які вікористовуються при пошуку:

		Found([< область>]) – повертає значення true, якщо пошук здійснено однією з команд : Locate, Continue, Seek

		Seek(<вираз> [<область>]) – повертає значення true, якщо запис в якому поле=виразу знайдено

		Eof([<область>]) - повертає значення true, якщо досягнуто кінця бази даних

		Recn (0) – у випадку невдалого пошуку задає повернення номеру запису, який має найближче значення до ключа пошуку в команді Seek

		Set near on/off – якщо задано on, то у випадку невдалого пошуку вказівник буде встановлено на найближче за значенням запис, а не в кінці бази даних, по замовчуванню off

		Зауваження : при редагуванні бази даних, зокрема редагування даних, використовується ще команди : Change і Edit, вони містять такі ж опції як у Browse крім Nolgriod/Norgriod.

2