Заповнення таблиці даними
Пiсля створення структури таблиця залишається вiдкритою (активною), тобто доступною для вводу, редагування та перегляду.
Якщо таблиця була створена ранiше то для роботи з нею її потрiбно вiдкрити:
USE [<iм'я файлу>]
[ ] – вказують на необв’язковий параметр команди. Команда USE без iменi файлу закриває активну таблицю.
Закрити усі таблиці БД та пов'язані з ними файли : iндекси, формати можна за допомогою команди:
CLOSE DATABASE
Закрити взагалi усі відкриті файли формати можна за допомогою команди:
CLOSE ALL
Доповнення записiв у таблицю
До активної таблиці можна доповнити нові записи:
за допомогою команд FoxPro:
APPEND [BLANK]
- активізує режим доповнення даних до таблиці у вікні редагування даних. Пiсля вводу поточного запису автоматично з'являється доступ до наступного запису
BLANK – додає новий запис до таблиці, але не відкриває вікно для заповнення запису.
APPEND FROM <iм'я файлу> [FOR <умова>] [TYPE <тип файлу>] ...
- додає до вiдкритого файлу дані з iншого файлу.
Приклад:
USE Student
APPEND FROM Abiturient FOR pr_zarah=.t.
за допомогою команд SQL у FoxPro (більш детально ці команди буде розглянуто пізніше):
INSERT INTO <dbf-файл> [ (<iм'я поля> [, <iм'я поля2>, ...]) ]
VALUES (<вир.> [, <вир.>, ...] )
– доповнює вказаний dbf –файл новим записом із можливим заповненням даних у вказані поля. VALUES вказує значення стовпчиків нового запису. Якщо не потрібно заповнювати всі поля нового запису, то у фразі INSERT після імені таблиці вказується список полів, які заповнюються значеннями, заданими у VALUES. Якщо імена полів опущені, то вказані вирази будуть записуватися послідовно в поля таблиці відповідно до її структури.
Наприклад:
INSERT INTO Student (Fam, Name, Grupa, Kurs) VALUES (‘Сидоров’, ‘Ілля’, ‘AM-11’, 1)
У FoxPro є ще одна форма використання цієї команди:
INSERT INTO < ім`я таблиці > FROM ARRAY <масив> | FROM MEMVAR
- у таблицю переносяться змінні з указаного масиву, або дані з MEMO-змінних.
за допомогою меню FoxPro:
Table | Append New Record
Table | Append Records
Редагування даних у таблиці
Існують команди, яккі дозволяють редагувати дані, які були записані до таблиці раніше. Це команди FoxPro BROWSE, EDIT, CHANGE - редагування активної таблиці у окремому вікні редагування даних та команди REPLACE і UPDATE (команда SQL FoxPro), які дозволяють змінити дані у конкретних записах без перегляду даних у окремому вікні редагування даних.
команда BROWSE надає всі, або тільки вказані, дані активної таблиці для редагування у окремому вікні. Дані подаються у вигляді таблиці.
BROWSE [FIELDS <поля>]
[FOR <умова>]
[TITLE <вираз>]
[FREEZE <поле>]
[NOAPPEND]
[NODELETE]
[NOEDIT]
[WINDOW <вiкно>]
[COLOR SHEME <вираз> / COLOR <список параметрiв пар кольорів>]
...
де
FIELDS <поля> - вказує список полів, які виводяться для редагування. За змовчанням розглядаються усi поля таблиці;
FOR <умова> - для редагування виводяться записи, які задовольняють умову;
TITLE <вираз> - задає назву вікна редагування даних;
FREEZE <поле> - дозволяє редагувати тільки вказане поле, інші поля можна тільки читати;
NOAPPEND - не дозволяє доповнювати дані до таблиці під час даного режиму редагування;
NODELETE - не дозволяє видаляти дані з таблиці під час даного режиму редагування;
NOEDIT - не дозволяє редагувати дані таблиці під час даного режиму редагування;
WINDOW <вiкно> - дані для редагування виводяться у вказаному вікні;
COLOR SHEME <вираз> - задається одна із існуючих схем кольорів для вікна редагування даних.
Ця команда має ще багато параметрів, які ми розглядати не будемо.
Приклад:
USE Student
BROWSE FIELDS Fam, Name FOR Kurs = 1 TITLE 'Список студентів 1 курсу'
Розглянемо більш детально опцію FIELDS <список полiв>. Iм'я кожного поля може супроводжуватись ключами:
[:R]
[:<вир.N>]
[:V=<вир.L1> [:F] [:E = <вир.C1>]]
[:P=<вир.C2>]
[:H=<вир.C3>]
[:B=<вир.1> <вир.2> [:F]]
[:W=<вир.L2>]
Символ ':' може бути замiнений на '/', якщо '/' не буде визначатися як арифметична дiя у <вир.N>. Значення ключiв:
:R - Read – Only, поле доступне тільки для перегляду даних.
:<вир.N> - видимий розмiр поля. Дозволяється скролiнг.
:V - контроль виходу з поля.
Якщо <вир.L1>=.T. , то ввод правильний,
якщо <вир.L1>=.F. , => "Invalid input" (неправильний ввод)
можна замiнити на iнше в :E
:F - перевiрка не тiльки даних, що вводяться, а й вже iснуючих даних.
:P - задання формату вiдображення даних за допомогою шаблону Picture.
:H - вказiвка власного заголовка поля.
:B - вказiвка границь чисел та дат. Дозволяється вказати тiльки одну межу, але ',' - обов'язкова. :F - пiдсилює команду.
:W - контроль входу в поле. Вхiд в поле дозволено, якщо <вир.L2> = .T. i заборонено, якщо = .F.
У <список полiв> дозволено включати поля, якi є функцiями iнших полiв, змiнних, i т.д.
Приклад: pom = 0.7*det*star
Під час роботи можна вiдкрити до 25 BROWSE-вiкон. З допомогою команди BROWSE можна переглядати поля з рiзних таблиць.
ще двi команди редагування: EDIT / CHANGE працюють аналогічно BROWSE, але дані подаються не у вигляді таблиці, а у режимі перегляду, аналогічному APPEND.
EDIT [<дiапазон>] [FIELDS <спис. полiв>] [WHILE <умова>] [FOR <умова>] ...
Приклад:
EDIT ALL FOR kod>100
При роботi в режимi доповнення (APPEND) або редагування (BROWSE / EDIT / CHANGE) у системному меню FOXPRO з'являєься додаткова опцiя Table, яка має такі режими:
Append New Record (Ctrl+N) - додати запис
Append Records – доповнити записи до активної таблиці, дані брати з іншого файлу
Toggle Deletion Mark (Ctrl+T) - відмітити запис для видалення
Delete Records – видалити записи за вказаною умовою
Go To Record – перейти до вказаного запису
та ін.
команда REPLACE заміняє дані поточного (активного) запису активної таблиці у вказаних полях на нові значення
REPLACE <поле> WITH <значення> [ADDITIVE]
[,<поле2> WITH <значення2> [ADDITIVE]] ...
[<діапазон>] [FOR <умова>] [WHILE <умова2>]
[IN <робоча область> | <псевдонім таблиці>]
[NOOPTIMIZE]
де:
ADDITIVE – використовується для memo-полів. Дані у memo-поле будуть дописані у кінець тексту, а не замінені.
<діапазон> - дозволяє замінити дані не тільки у поточному записі, а у записах вказаного діапазону. Для визначення діапазону використовуються такі параметри:
ALL – всі записи, NEXT <n записів>, RECORD <номер запису>, REST. За змовчанням у якості діапазону використовується NEXT 1.
FOR <умова> - корегуються дані тільки у записах для яких виконується <умова>
WHILE <умова> - корегуються дані тільки у послідовних записах доки виконується <умова>
IN <робоча область> | <псевдонім таблиці> - дані корегуються у таблиці, яка знаходиться у вказаній робочій області або має вказаний псевдонім (детально ці поняття будуть розглянуті пузніше у розділі «Робота з декількома таблицями», лаб. роб. №3 та №5)
NOOPTIMIZE – не проводити перевірку коректності БД при зміні даних (детально ці поняття будуть розглянуті пізніше у розділі «Робота з БД», лаб. роб. №3 або дивись команду SET OPTIMIZE у Developer’s Guide)
Приклад використання команди:
USE Student
APPEND BLANK
REPLACE Fam WITH ‘Сидоров’, Name ‘Ілля’, Grupa WITH ‘AM-11’, Kurs WITH 1
або
REPLACE ALL Kurs WITH Kurs+1
за допомогою команди UPDATE (комонда SQL у FoxPro) можна змінювати деякі або всі значення в існуючій таблиці. Синтаксис команди такий:
UPDATE <ім`я таблиці> SET <поле> = <значення> [, <поле> = <значення>...] [WHERE <умова>]
SET вказує, які заміни потрібно виконати для вказаного стовпчика (стовпчиків).
На відміну від попередньої команди ця команда за змовчанням змінює всі записи у таблиці, а параметр WHERE <умова> дозволяє змінити дані тільки у записах, які задовольняють вказану умову.
Наприклад:
UPDATE Student SET Kurs=3 WHERE Grupa=’АВ-11’