Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bazy_dannykh.docx
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
156.01 Кб
Скачать

Команды управления

alias команда=k

Команда if

if <усл>

<k>

[else

<k>]

endif

Команда do case

do case

case <усл1>

<k1>

case < усл2>

<k2>

[otherwise

<k-ды>]

endcase

Команда do while

do while <усл>

<k>

enddo

Пока выполняется условие команда выполняется

exit – позволяет выходить из цикла досрочно

loop – досрочно отправляет на конец цикла

Цикл for

for <перем>=<вырN1> to <вырN2>[step <вырN3>]

.

endfor

Цикл сканирования базы данных – scan

scan [<границы>][for<усл>][while<усл>]

<k>

endscan

Пример программы

use kadr

scan for fam=”П

zarp=zarp*2

endscan

Команда locate – поиск по условию

locate for <усл> [<границы>][while<усл>]

Эта команда находит только первую строку, соответствующую заданному условию

Она устанавливает функцию found() в состояние true.

Команда обычно используется в паре со следующими операторами:

locate -> if found()

locate do while found()

Команда continue заставляет do while искать дальше.

Структура системных команд foxpro

Название команды [<границы>][<список выражений>][for<усл>][WHILE <усл>]

[<границы>]:

  • ALL – весь диапазон базы данных;

  • REST – следующий диапазон базы данных ниже курсора;

  • NEXT N – следующие N записей;

  • RECORD N – N-ная запись.

for и while условия могут присутствовать одновременно. Приоритетным при этом является while.

  1. Create <имя т> - создать новую таблицу

  2. append - добавление новой строки в таблицу

  3. list, browse, display, change (так же изменяет) – вывод данных.

  4. go top, go bottom, go <n>, skip <n>

  5. locate

  6. modify command <имя ф> -

  7. do <name> - запуск программы

Индексирование баз данных

С целью ускорения поиска таблица базы данных может быть проиндексирована, то есть как бы упорядочена по некоторому полю. Пусть таблица упорядочивается по табельному номеру.

use kadr

index on tab to kadrtab.idx compact

list tab, fio

В итоге получится:

таб

фио

3

6

Кулакова

1

13

Сидоров

7

54

Яковлев

2

98

Потапов

4

234

Попов

6

468

Миронов

5

890

Романов

modify file kadrtab.idx

3-6

1-13

5-890

Замечание: каждый файл может иметь сколько угодно индексов.

При индексации создается индексный файл, позволяющий значительно ускорить поиск информации с помощью команды SEEK <выражение>.

Все команды типа “go top”, “go end”, “list” будут работать с проиндексированным файлом.

Индекс может быть сложным, поля при этом перечисляются через запятую.

Пример:

INDEX on fio, tab

Означает, что все сначала будут по фамилиям, и уже потом по табельному номеру.

index on <выражение> to <IDX-файл>[for<усл>] [compact]

compact означает, что индексный файл необходимо сжать.

Еще один пример:

use kadr

Index on fio to kadrsex // sex – половая принадлежность

for sex=”M” compact

list fio, zarpl

Результат:

N3

fio

zarp

6

Миронов

10000

4

Попов

12000

2

Потапов

8000

1

Сидоров

15000

7

Яковлев

20000

Работа с индексами

  1. Индексный файл уже существует и исходную таблицу надо открыть вместе с индексом:

use <table_file> index <index_file>

  1. Исходная база уже открыта, необходимо только подключить индекс:

use <table_name>

set index to <index_file>

Для выгрузки индекса используется команда:

set index to

Контрольная по foxpro:

По тем же базам данных будет задание написать программу

Первая таблица: аптека (nom1, address, tel)

nom1

address

tel

1

350

2

400

preparat (nom2,name, price)

nom2

name

price

1

asp

10

2

citr

20

3

andl

30

4

par

150

5

7

8

nalichie (nom1,nom2,col-vo)

nom1

nom2

kol-vo

1

1

100

1

2

500

1

5

1000

2

1

100

2

2

50

2

6

120

2

4

70

Выдать номера, адрес, телефон аптек, в которых заданный препарат имеется в количестве меньше 100.

set talk off // отключить системные сообщения, писать не задумываясь

select a // вот в этом месте что-то вроде макросов на использование таблиц

use apteka

select b

use preparat

select c

use nalichie

nazvan = space(15) // назван становится 15-ю пробелами

str =3 // Номер строки на экране

@1,1 say «Введите название лекарства» get nazvan

read // записываем введенные данные в переменную назван (название :D)

select b // АКТИВАЦИЯ ТАБЛИЦЫ PREPARAT!11

locate for nazvan = name // есть nazvan шоле?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]