Базы данных и информационные системы
Вид материала | Документы |
- Методическое пособие по курсу «Базы данных и информационные системы» 2011, 489.34kb.
- Информационные системы, использующие базы данных: оборудование, программное обеспечение,, 102.98kb.
- Евдокимова Алексея Анатольевича, 1980 г р. Ключевые слова Программист-разработчик:, 75.55kb.
- Варианты предметных областей для курсовой работы по дисциплине «Базы данных и информационные, 245.82kb.
- 1 научиться создавать таблицу базы данных в режиме таблицы, 54.71kb.
- Ms access Создание базы данных, 34.31kb.
- Программа дисциплины «Базы данных», 380.05kb.
- Программа дисциплины «Базы данных», 395.38kb.
- Лекция 2 10. Полнотекстовые базы данных, 133.46kb.
- Программа курса для направления 230200. 68 «Информационные системы. Программа Базы, 65.82kb.
S FUNCTION P KOD m
POISK = .T.
Poisk = SEEK (STR (kod m),2) – область 2 с таблицей SPRAVT
Return Poisk
FUNCTION Pkodt
POISK = .T.
POISK t = SEEK (STR (kod t),3) – область 3 с таблицей
SPRAVT
Return Poisk
ele a
Use karta
Set order to tag kod MT
Sele b
Use SPRAVM INDEX SPRAVM
Sele c
Use SPRAVT INDEX SPRAVT
Sele a
Set Relation to STR (kod m) into b additive
Set Relation to STR (kod t) into c additive
BROWSE Field kod m: H = "код маг":
V = Pkod m ( ):E = "нет такого магазина"
b. NMAG: H = "наименование магазина"
kod t: H = "код товара": V = Pkod t ( ):E = "нет такого товара";
C. NTOV: H = "наименование товара";
C. CENA: H = "цена";
Set Relation to отмена связей
Close data закрытие БД
Слово ADDITIVE – обеспечивает сохранение связей, установленных ранее.
Связь вида одна запись – со многими.
Команда устанавливает связь такого типа между двумя или несколькими БД.
- SET SKIP TO [<область 1>[, <область 2 >]…]
При этом с каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных <областях>.
Прежде чем использовать команду SET SKIP TO необходимо выпольнить начальное сцепление вида “одна связь с одной” командой Set Relation.
Удаление связи “одна запись со многими” осуществляется командой SET SKIP TO без параметров.
ПРИМЕР:
Select a
Use karta
Set order to tag kod MT
Select b
Use Rasxod
Set order to tag kod MT
Select c
Use PRIXOD
Set order to tag kod MT
Sele a
Set Relation to STR (kod m) + STR (kod t) into c additiv
Set Relation to STR (kod m) + STR (kod t) into b additiv
Set skip TO C, b
BROWSE Field kod m: H = "код магазина";
kod m: H = "код товара";
C. kol: H = "кол. прихода";
C. sum: H = "сумма";
b. kol: H = "кол. расхода";
b. sum: H = "сумма расходов";
Set skip TO
Set Relation to
Close Data
Во многих случаях вообще лучше прибегнуть к поиску нужной записи командой (функцией SEEK) нежели к установлению постоянной связи.
Схема организации связей:
Use <база 1> IN a
Use <база 2> IN b INDEX <индекс 2>
Use <база 3> IN с INDEX <индекс 3>
Sele a
Set Relation to <ключ базы 1> INTO b && сцепление базы 1 с базой 2
Sele b
Set Relation to <ключ базы 2> INTO b && сцепление базы 2 с базой 3
Сцепление базы Kodr.dbf выполняется с одной областью, эта область с другой областью, как бы по мере перемещения из области в область.
Создание командных файлов.
- Modify Command <имя файла> - вызывает встроенный текстовый редактор Fox Pro с помощью которого пишутся программные файлы.
- DО <имя командного файла> - запускает выполнение программы (расширение PRG указывать необязательно).
- Исполнение программы прерывается клавишей Esc.
- SET ESCAPE ON/OFF (по умолчанию ON)
В готовой программе эта возможность должна быть подавлена параметром OFF.
- !/Run <программа> - команда выполнения внешних по отношению к Fox Pro программ.
ПРИМЕР: Для установки текущей системной даты из прикладной программы:
D = 03.11.01
! DATE & d
?DATE ( )
03.11.01
Команды ввода - вывода.
- Clear – команда очистки экрана.
- @
[Clear/ Clear to ]
ПРИМЕР: очищает прямоугольные области экрана
@ 5,0 Clear && очищает с 5 строки весь экран.
@ 15,5 Clear to 20,50 && координаты: 15,5 на 20,50
Команды ввода – вывода @ … SAY … GET.
Команда используется для форматирования ввода – вывода данных на экран (принтер).
- @
[SAY <выр 1>[PICTURE<впр С 1>]
[FUNCTION<ф коды 1>]
[SIZE <выр N 1> <выр N 2>]
[COLOR SCHEME <выр N 3>/COLOR <список цветовых пар>]]
[Get <переменная/ поле>[PICTURE<впр С 2>]
[FUNCTION<ф коды 2>]
[DEFAULT <выр 2>]
[ENABLE/DISABLE]
[MESAGE <выр 3>]
[[OPEN] Window <окно>]
[RANGE [выр 3] [,<выр 4>]]
1{[SIZE<выр 4>,<выр 5>]
[VALID<выр L1>/<выр N6>[ERROR<выр С4>]]
[WHEN <выр L2>]
[COLOR SCHEME <выр N7>/COLOR <список цветовых пар>]]
Здесь Y и X – пара чисел, определяющих номер строки и столбца (для экрана это соответственно 0-24, и 0-79, для принтера определяется размером листа бумаги).
Параметры команды:
ПРИМЕР: @ 4,8 SAY “номер - ” + LTRIM(STR(X,1)), если X=7 выдаст “номер - 7”
- 4 – число строк, выр 5 – число колонок,
ПРИМЕР: f = “Петропавловский А.”
@ 2,4 SAY “Фамилия:” Get f SIZE 3,6
Read – команда READ осуществляет собственно считывание из редактируемого поля.
Фамилия: Петроп
авловс
кий А.
Символы шаблона PICTURE разрешают ввод вместо себя только определенных символов данных.
А - допускает ввод только букв
L - допускает ввод только логических данных вида Т/F
N - допускает ввод только букв и цифр
X - допускает ввод любых символов
Y - допускает ввод только логических данных вида Y/N
9 – в символьных данных допускает ввод только цифр, в числовых – цифр и знаков «+» и
«-»
# - позволяет вводить цифры, пробелы и знаки «+» и «-»
! – преобразует строчные буквы в прописные (Get, SAY)
* - звездочки выводятся перед числами. Может использоваться для защиты от подделки (SAY)
. – точка дает позицию десятичной точки в дробном числе (Get, SAY)
ПРИМЕР:
@ 10, 30 say “Введите серию/номер паспорта”- ;
Get pasp PICTURE “ @R ! Серия ААА-XXномер999999”;
Valid INLIST (SUBSTR (PASP, 4,2), “МЮ”, “MC”, “MT”);
ERROR ‘Это не Москва’ DEFAULT SPACE (11)
READ
Команда вывода TEXT.
- TEXT <сообщение> End Text
- SET SPACE ON (по умолчанию) – вывод данных
- SET PRINTER ON – вызываем направление на принтер
OFF – отмену по умолчанию
Команда ввода – вывода WAIT.
Основная функция команды – приостановка программы, возможно, с вводом – выводом данных.
- WAIT [<сообщение>] [ТО <символьная переменная>]
[TIMEOUT<выр N>] [WINDOW [NOWAIT]]
[CLEAR]
Работа с переменными.
- STORE <выражение> TO <имя переменных>
ПРИМЕР:
a = с*(2+3) и STORE с*(2+3) TO a
STORE o TO f, d, c, r
Команда создает переменные и присваивает им значения.
Команда управления.
- IF <условие>
<команды>
ELSE
<команды>
ENDIF
- DO CASE … ENDCASE Do case
Если встретилось истинное case <условие 1>
<условие>, выполняются <команды>
нижеследующие команды case <условие 2>
до следующей фразы <команды>
CASE и OTHERWISE …
или END CASE [OTHERWISE
и конструкция <команды> ]
завершается. END CASE
ПРИМЕР:
Из практической работы №7 создать кнопки на экранной форме и описать команды по нажатию на ту или иную кнопку, переменная кнопок BUT
Do Case
Case but = 1 && переход на первую запись
Gotor
Case but = 2 && переход на последующую запись
Go bottom
Case but = 3 && предыдущая
Skip -1
If bof ( )
Go top
Lndif
Case but = 4 && следующая
Skip
If eof ( )
Go bottom
Lndif
Case but = 5 && удаление
If delete ( )
Recall
Else
Delete
Lndif
Case but = 6 && добавление записи
Append Blank
Case but = 7 && выход
Clear read
End case
Организация циклов.
Цикл с условием
- Do while <условие>
<команды>
ENDDO
- EXIT передает управления команде, за ENDDO
- LOOP осуществляет передачу управления в начало цикла, на саму команду цикла
ПРИМЕР:
Do WHILE S<1000
INPUT ‘Введите X’ TO X
If x<0
Loop
Endif
If x=0
Exit
Lndif
S=S+X
Lndif
- Цикл с параметром
- FOR <переменная> = <выр N1> TO <выр N2> [<выр N3>]
<команды>
END FOR
- Цикл сканирования базы данных.
- SCAN [<границы>] [FOR <условие>] [WHILE <условие>]
<команды>
ENDSCAN
ПРИМЕРЫ:
Фрагменты программ поиска в базе KADR. DBF всех записей с фамилиями начинающимися с буквы «П», с использованием цикла DO WHILE и SCAN.
- Use kadr
Locate FOR fam = ‘П’
Do WHILE !EOF ( )
<обработка записи>
CONTINUE
Enddo
- Use kadr [INDEX kadr fam]
SCAN FOR fam = ‘П’
<обработка записи>
End Skan
- Use kadr INDEX kadr fam
Seek ‘П’
Do WHILE fam = ‘П’
<обработка записи>
skip
Enddo
4. Use kadr INDEX kadr fam
Seek ‘П’
SCAN WHILE fam = ‘П’
<обработка записи>
End scan
Функции СУБД.
- Математические функции
- Max (<выр>, <выр 1>, [<выр 2>…]) – возвращает максимальное значение из списка аргументов, которые должны быть все одного типа (символьные, числовые или дата)
? MAX (3, 1, -8) &&3
? MAX ({04.06.65}{23.10.70}{15.12.91}) && 15.12.91
- MIN (<выр>, <выр 1>, [<выр 2>…]) – возвращает минимальное значение из списка аргументов.
- ROUND (<выр 1>, <выр 2>) – округление <выр 1> до заданного в <выр 2> количества знаков после запятой.
? ROUND (-342.268, 1) && -342.3
- Строковые функции.
- LEN (<выр C>) – число символов в <выр C>. Длина нулевой строки (‘’) – 0
? LEN (‘база’) && -342.3
- Функции выделения
- LEET (<выр N>, <выр C>) – выделение из строки <выр C> указанного в <выр N> - числа символов слева. Если (<выр N>) длинее строки, возвращается вся строка
? LEET (4 ‘база данных’) && база
- RIGHT (<выр N>, <выр C>) – выделение из <выр C> справа <выр N> символов
? RIGHT (6 ‘база данных’) && данных
- SUBSTR (<выр С>, <начальная позиция>, [<число символов>]) – выделение из <выр С> подстроки, начиная с <начальная позиция> длиной в <число символов>.
? SUBSTR (‘база данных’, 6, 8) && исходных
- Функции преобразования
- LTRIM (<выр С>) – удаление ведущих пробелов в <выр С>.
- TRIM/RTRIM (<выр С>) – удаление завершающих пробелов в <выр С>.
- ALLTRIM (<выр С>) – удаление всех: и ведущих и завершающих пробелов в строке
- REPLICATE (<выр С>, <выр N>) - (<выр С>) повторяется
- (<выр С>) раз
? REPLICATE (‘+ -‘, 5) && + - +- +- +-
- SPACE (<выр N>) – формулирование строки пробелов длиной <выр N>.
- Функции конвертирования и распознавания букв.
- LOWER (<выр С>) – преобразовать все прописные буквы
<выр С> в строчные.
- PROPER (<выр С>) – преобразует в <выр С> первую букву каждого слова в прописную, а остальные в строчные (ввод Фамилии, Имени, Отчества).
- UPPER (<выр С>) – преобразует все строчные буквы <выр С> в прописные.
? UPPER (‘Саша’) && САША
? PROPER (‘саша петров’) && Саша Петров.
- Функции работы с датами.
- CDOW (<выр D>) – возвращает имя дня недели по-английски
Set date German
? CDOW ({05.10.91}) && Saturday
- CMONTN (<выр D>) – предъявляет название месяца по-английски
- CTOD(<выр C>) – преобразует дату из символьной формы в формат даты (типа D)
- DATE ( ) – предъявляет системную дату
- DAY (<выр D>) – число месяца по выр. типа дата <выр D>
? DAY ({05.10.91}) && 5
- DOW (<выр D>) – определяет номер дня недели
- DTOC (<выр D>[, 1]) – преобразует выражение типа дата в символьное выражение
? DTOC ({05.10.91}) && 05.10.91
? DTOC ({05.10.91}, 1) && 1991 1005
- MONTH (<выр D>) – определяет числовое значение номера месяца
- YEAR(<выр D>) – определяет числовое значение года
- Функции преобразования типов данных.
- CNR (<выр N>) – преобразует значение <выр N> (где N целое число от 1 до 255) в символьное
? CNR (66) && B
- STR (<выр N>, [<длина>], [<десятичные знаки>]) – преобразует числовое выражение в символьную строку
? STR (384.248, 8, 2) && 384.25
- VAL (<выр C>) – преобразует число, представленное в символьной форме (<выр С>), в числовую форму.
- Функции проверки файлов и дисков.
- BOF ([<область>]) – достигнуто (.Т) или нет (.F.) начало файла базы данных
- DISCSPACE ( ) – число свободных байт на активном диске
- DELETED ([<область>]) – вырабатывает .Т., если текущая запись намечена на удаление и .F. в противном случае
- EOF ( ) – достигнут .Т. или .F. нет конец файла
Функции СУБД.
- Строковые функции.
- SUBSTR (<выр С>, <начальная позиция>, [<число символов>] – выделение из <выр С> подстроки, начиная с <начальная позиция> длиной в <число символов>.
? SUBSTR (‘база исходных данных’, 6,8) && исходных
- Функции преобразования
- LTRIM (<выр С>) – удаление ведущих пробелов в (<выр С>)
- RTRIM (<выр С>) – удаление завершающих пробелов в
(<выр С>)
- REPLICATE (<выр С>, <выр N>) – (<выр С>) повторяется
(<выр N>) раз
? REPLICATE (‘+ -‘, 5) && +- +- +- +- +-
- LOWER (<выр С>) – преобразует все прописные (большие) буквы в строчные (<выр С>)
- PRODER (<выр С>) – преобраазует в (<выр С>) первую букву каждого слова в прописную, а остальные в строчные
- UPPER (<выр С>) – преобразует все строчные буквы (<выр С>) в прописные (большие)
- Функции работы с датами.
- CDOW (<выр D>) – возвращает имя дня недели по-английски
Set daate German
? CDOW ({08.10.2002}) && Tuesday
- CMONTH (<выр D>) – предъявляет название месяца по-английски
ПРИМЕР:
{создание индексных файлов}
use tab 1
index on str (kod. kat) to kat
use tab 2
index on str (kod. tov) tag tov of tab 2
index on str (kod. kat) tag katt
index on str (kod. kat)+ str (kod. tov) tag kattov
{расширение по областям}
sele 1
use tab 1 index kat
sele 2
use tab 2 в разных областях
set order to tag tou переназначен главный тег
sele 3
use tab 2
set order to katt
sele 4
use tab 2
set order to kattov
{I вариант, N:1} {1:M – не возможна!}
sele 2
set relation to str (kod. kat) into 1
brows fields a. nam. kat, b. kod. tov, b. nam. tov
[set skip to 1] – не нужен
set relation to {закрыли связи}
{II вариант 1:M}
sele 1
set relation to str (kod. kat) into 3
brows c. set skip to 3 M:1 тоже самое что и др. область
{Ш вариант 1:M}
sele 1
set relation to str (kod. kat) into 4
brows fields a. nam. kat, d. kod. tov, d. nam. tov
{категория и *** повторяющаяся категория для товаров}
{IV вариант 1:M}
sele 4
set relation to str (kod. kat) into 1
brows
[set skip to 1] – не нужен