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



Скачать 459.38 Kb.
страница5/5
Дата23.04.2016
Размер459.38 Kb.
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] – не нужен




1   2   3   4   5


База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница