Базы данных и информационные системы

Вид материалаДокументы

Содержание


S FUNCTION P KOD m
Sele b Use SPRAVM INDEX SPRAVM Sele c Use SPRAVT INDEX SPRAVT Sele a
Sele a Set Relation to INTO b && сцепление базы 1 с базой 2 Sele b
[color scheme
[color scheme
Skip If eof ( ) Go bottom Lndif Case but = 5 && удаление
Trim/rtrim (
Set date German
Deleted ([
Replicate (
Подобный материал:
1   2   3   4   5

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”
  1. 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.
  1. Use kadr

Locate FOR fam = ‘П’

Do WHILE !EOF ( )

<обработка записи>

CONTINUE

Enddo
  1. Use kadr [INDEX kadr fam]

SCAN FOR fam = ‘П’

<обработка записи>

End Skan
  1. 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] – не нужен