СУБД dBase

Загрузить архив:
Файл: ref-23574.zip (35kb [zip], Скачиваний: 33) скачать

Содержание

1. Введение……………………………………………………………………………………….2

2. Основные элементы СУБД типа dBase………………………………………………………2

3. Управляющий центр…………………………………………………………………………..6

4. Создание структуры файлов………………………………………………………………….8

5. Командный язык СУБД……………………………………………………………………...10

6. Ввод данных в базу и редактирование……………………………………………………...13

7. Дополнительные операции………………………………………………………………….15

8. Организация системы меню…………………………………………………………………20

9. Список использованной литературы……………………………………………………….23

1. Введение

В самом общем смысле база данных – это набор записей и файлов, организованных особым образом. В компьютере, например, можно хранить фамилии и адреса друзей или клиентов. Возможно, вы храните все свои письма, и они сгруппированы по адресатам, а возможно, у вас есть набор файлов с финансовыми данными: полученные или выставленные счета, расходы по чековой книжке и так далее.

В широком смысле, один из типов баз данных – это документы, набранные с помощью текстовых редакторов и сгруппированные по темам. Другой тип – файлы электронных таблиц, объединяемые в группы по характеру использования.

Если вы организованный человек, то специальная структура папок и подпапок поможет вам справиться с несколькими сотнями электронных таблиц или ярлыков. В этом случае вы являетесь диспетчером базы данных.

Но если решаемая вами задача становится слишком сложной: собрать информацию обо всех клиентах и заказах, если данные разбросаны по отдельным текстовым файлам и электронным таблицам; сохранить связи между файлами при вводе новой информации и так далее, то вам необходима система управления базами данных (СУБД).

СУБД dBASE, описываемая мною в этой работе, представляет собой интегрированную среду для создания и манипулирования с табличной БД и по утверждению разработчиков, поддерживает реляционную модель данных. Кроме среды имеется ряд дополнительных программ, таких какадминистратор доступа к файлам в сети, предкомпилятор, Run-Time модуль длявыполнения программ и пр.

2. Основные элементы СУБД типа dBASE

Напомним некоторые термины, используемые в теории реляционных баз дан­ных. Будем представлять информацию, составляющую базу данных, в виде сово­купности прямоугольных таблиц.

Поле - наименьший поименованный элемент информации, хранящейся в БД и рассматриваемой как единое целое. Поле может быть представлено числом, буквами или их сочетанием (текстом). Например, в телефонном справочнике полями являются фамилия и инициалы, адрес, номер телефона, т.е. три поля, причем все текстовые (номер телефона также рассматривается как некоторый текст).

Запись - совокупность полей, соответствующих одному объекту. Так, абоненту телефонной сети соответствует запись, состоящая из трех полей.

Файл - совокупность связанных по какому-либо признаку записей (т.е. отноше­ние, таблица). Таким образом, в простом случае база данных есть файл.

Все данные в БД разделены по типам. Говоря точнее, вся информация полей, принадлежащих одному столбцу (домену), имеет один и тот же тип. Такой подход позволяет ЭВМ организовать контроль вводимой информации.

При определении полей БД каждое поле может быть отнесено к одному из сле­дующих типов:

• символьный тип, обозначение С (character);

• числовой тип, обозначение N (numeric);

• логический тип, обозначение L (logical);

• тип даты, обозначение Data;

• примечаний, обозначение Memo.

Каждый тип служит для хранения специфической информации. В поле типа С можно помещать любые имеющиеся на клавиатуре символы: буквы, цифры, знаки препинания и т.д. Символьное поле хранится как текст, выровненный по левому краю. Над символьными полями нельзя выполнять каких-либо вычислений.

В числовом поле могут быть только цифры, знаки «плюс» и «минус», десятичная точка. Числа выровнены по правому краю. Над числовыми полями можно выпол­нять вычисления.

Поле логического типа содержит величины, которые могут принимать только одно из двух значений: истинно или ложно.

Поле типа даты может содержать реальные даты в представлении, принятом в США (месяц/день/год) или в   европейских странах.

Описание всех имен, типов и размеров полей составляют структуру базы дан­ных, которая хранится в памяти вместе с данными. Эту структуру всегда можно просмотреть и при необходимости исправить. Следует различать структуру файла и информацию, содержащуюся в нем. Основное различие между структурой и инфор­мацией состоит в том, что структура остается неизменной, а информация меняется при каждом редактировании или вводе.

Семейство СУБД dBASE. Среди СУБД для ПК наиболее распространенным в мире является семейство dBASE фирмы «Ashton-Tate». Такая популярность объяс­няется отчасти исторически, так как эта СУБД появилась одной из первых на рынке программных продуктов данного профиля; не в меньшей степени этому способст­вовала удачность заложенных основ конструкции СУБД и командного языка. Одна из наиболее широко используемых (в настоящее время устаревших) версий этого семейства - dBASEIII+.

В новой версии dBASE IV концепция СУБД и командный язык получили значи­тельное развитие, позволившее устранить недостатки предыдущей версии, а также существенно обогатить палитру средств обработки данных и улучшить интерфейс пользователя.

К числу СУБД реляционного типа, предназначенных для ПК, относятся семейст­во dBASE (dBASEII, III, 111+ и IV), Clipper, Foxbase, R:BASE, Paradox и др. В этих СУБД записи и, соответственно, поля имеют обычно фиксированную длину (чаще всего длина такой записи достигает 4000...5000 байт). Исключение составляют поля типа Memo, используемые, например, в СУБД семейства dBASE. Число полей в перечисленных СУБД варьируется от 128 до 1024.

Длина поля зависит от типа поля и может составлять от 255 до 4000 байт для текстовых полей, до 20 байт для числовых полей и имеет фиксированные значения для полей типа даты (8 байт) и логических полей (1 байт). Поле типа Memo служит для хранения больших массивов текстовой информации и хранится в отдельном файле БД, но воспринимается как поле в составе основного файла БД. Это поле имеет плавающую длину, определяемую объемом введенной текстовой информа­ции, и может достигать 32767 байт.

Большинство СУБД реляционного типа для ПК позволяют создавать файлы с числом записей до 1 млрд. и объемом до 2 Гбайт. Обычно ограничением на число и объем записей, в первую очередь, выступает емкость внешней памяти ПК на маг­нитных дисках.

В состав многих СУБД, предназначенных для работы на ПК, входят три основ­ных компонента: командный язык, интерпретирующая система или компилятор для преобразования команд к выполнимому виду и средства взаимодействия пользова­теля с СУБД (интерфейс пользователя).

Командный язык служит для выполнения и обеспечения требуемых операций с данными - позволяет создавать структуры файлов БД и манипулировать данными, создавать прикладные программы, экранные формы ввода и вывода информации и т.д. Структура и возможности языка в значительной степени определяют облик конкретной СУБД, ее возможности. В состав командного языка ПК также обычно входят специальные команды по установке параметров и состояний системы (SET-команды), а также функции, предназначенные для различных видов обработки данных и выполнения вспомогательных действий.

В СУБД команды можно выполнять по одной (после набора с клавиатуры) или группами команд в автоматическом режиме, предварительно записанных в специ­альный (программный) файл. Команды языка СУБД записываются в текстовой форме, близкой к обычному языку. Для того чтобы ПК могла выполнять такую команду, ее надо преобразовать в вид исполнимых машинных команд.

Существует два принципиально различных способа такого преобразования. В первом способе используется интерпретирующая система, которая преобразует поочередно команды в исполнимый вид перед их непосредственным выполнением. Во втором способе сначала вся исходная программа преобразуется (компилируется) в программу из исполнимых машиной команд и затем эта программа выполняется.

Первый способ выполнения команд СУБД имеет то преимущество, что исходная программа занимает сравнительно немного места и памяти. Кроме того, этот способ позволяет выполнять команды по одной в режиме ввода с клавиатуры или в режиме, управляемом с помощью меню. Однако выполнение исходной программы посредством интерпретации команд происходит достаточно медленно. Второй способ в отличие от первого позволяет выполнять программу значительно быстрее, но программа, составленная из машинных команд, занимает значительно больше оперативной памяти.

Взаимодействие пользователя с СУБД, в которой используется интерпретирую­щая система, обычно может осуществляться в режиме, управляемом с помощью меню, и реже, ввода команд с клавиатуры. Первый режим дает возможность поль­зователям работать с пакетом СУБД, не зная командного языка. Содержание выполняемых команд записывается в позициях меню на естественном языке. Пользователь выбирает нужную позицию меню и нажимает клавишу исполнения команды. Обычно в меню включают достаточно широкий круг команд языка СУБД, позволяющих выполнять многие операции по обработке данных, однако далеко не все. При использовании режима ввода команд с клавиатуры требуется знать их синтаксис и способы применения. Этот режим применяется уже более подготовленными пользователями. Признаком данного режима СУБД служит какой-либо знак (например, точка в левом нижнем углу экрана), который служит приглашением для набора команды. В дальнейшем для простоты будем называть этот режим просто командным.

Последние версии таких СУБД, как dBASE, RBASE и др., содержат генераторы прикладных программ, позволяющие пользователям без знания командного языка создавать программы средней степени сложности. Эти средства могут применяться как неподготовленными пользователями, так и профессиональными программи­стами для уменьшения трудозатрат при разработке прикладных программ.

Как уже отмечалось, первой созданной в этом классе программой была dBASEII, созданная Уэйном Рэтлиффом (США) в 1981г. Варианты этой системы до сих пор используются для целей обучения на учебных ЭВМ. Вскоре эта система была усовершенствована, а ее возможности расширены. Появились СУБД dBASEIII и dBASEIII+, ставшие на долгое время стандартом систем управления базами данных для персональных компьютеров. Позже получили распространение системы FoxBase, FoxPro и Clipper - все имеющие набор команд, похожий на СУБД семей­ства dBASE, и использующие ту же организацию данных в файлах с типичным расширением .dbf (DataBaseFile - файл базы данных), СУБД dBASEIV. Языки этих систем послужили основой для создания огромного числа прикладных инфор­мационно-поисковых систем, автоматизированных рабочих мест (АРМ) в различ­ных предметных областях.

Система управления базами данных dBASEIV значительно усилена по сравне­нию с dBASE III+ по многим параметрам (ниже в скобках указаны данные для dBASEIII+). В частности, можно создавать двумерные массивы переменных общим объемом до 1170 элементов, может быть открыто до 99 (16) файлов, увеличено максимальное число переменных - 15000 (265), число полей в файлах БД - 255 (128), число открытых индексных файлов -10 (7) и т.д. Как уже отмечалось выше, ко­мандный язык dBASEIV значительно расширен и улучшен по сравнению с команд­ным языком dBASEIII+.

Включение в язык dBASE IV новых команд позволило существенно улучшить следующие функции пакета СУБД семейства dBASE:

• разработку иерархических систем меню прикладных задач;

• разработку экранных форм ввода и вывода данных;

• организацию ввода и вывода информации в отдельные окна на экране;

• вывод данных на печать;

• возможности по поиску и обработке данных в файлах БД;

• обеспечение работы в среде ЛВС и др.

Команды типичной СУБД для персональных компьютеров предназначены для выполнения следующих функций:

• описания БД;

• наполнения БД;

• редактирования БД;

• поиска информации в БД;

• формирования и вывода на экран или принтер информации в виде отчетов.

3. Управляющий центр

Представление о возможностях пакета dBASEIV можно получить при знаком­стве с управляющим центром (УЦ), реализующим интерфейс пользователя, управ­ляемый меню. В состав УЦ входят шесть меню:

• меню Data («Данные») для создания, изменения структуры файлов БД, ввода, обновления и отображения данных на экране;

• меню Queries («Запросы») для формирования и выполнения запросов на вы­борку и обновление данных;

• меню Forms («Формы») для разработки экранных форм ввода и вывода ин­формации;

• меню Reports («Отчеты») для разработки форм отчетов и вывода их на печать;

• меню Labels («Марки») для разработки форм марок и вывода их на печать;

• меню Applications («Прикладные программы») - генератор разработки при­кладных программ.

Функции УЦ и расположение меню на экране отражают последовательность работы пользователя при разработке прикладной информационной задачи. Работа обычно начинается с создания структуры файлов БД, которые требуются для ее решения.

После создания структур файлов БД прикладной задачи требуется ввести в них данные.

Ввод и обновление данных в меню «Данные» выполняется на экране в стандарт­ных формах. Эти формы не всегда вполне удобны для пользователя. В УЦ преду­смотрено меню «Формы», позволяющее разрабатывать собственные экранные формы для ввода и вывода информации.

Типы файлов и их расширения

Файл

Окно УЦ

Файл разработки

Файл кодов

Исполнимый файл

БД

Data

.dbf

_

_

Запрос на выборку

Queries

,qbe

-

.qbo

Запрос на обновление

»

.upd

-

.upo

Выборка dBASE ПН-

»

.vue

-

-

Экранная форма

Forms

.sqr

.fmt

.fmo

Отчет

Reports

.frm

•frg

.fro

Марка

Labels

.1Ы

.Ibg

.lbo

Прикладная программа

Applications

-

•prq

.dbo

SQL-программа

»

-

.prs

.dbo

Програма, созданная

»

•app

•prg

.dbo

генератором приклад-

ных программ

Отбор информации из одного или нескольких файлов БД можно выполнить с помощью меню «Запросы». Отобранные данные можно выводить на экран в разработанных ранее формах или на печать.

Меню «Запросы» позволяет также связывать между собой несколько файлов БД, что дает возможность при разработке структуры файлов БД прикладной задачи избежать дублирования информации.

Завершающий этап процесса обработки информации - вывод полученных дан­ных на экран, принтер или внешние носители. Для генерации форм выходных документов предназначено меню «Отчеты».

Таким образом, меню УЦ позволяет выполнять все этапы процесса обработки информации, начиная от ее записи на носители и завершая выдачей необходимых выходных документов.

Панель УЦ состоит из шести окон. Окно Data содержит имена файлов БД. Окно Queries показывает имена файлов запросов на выборку и обновление данных. В окно Forms высвечиваются имена файлов экранных форм ввода и вывода инфор­мации. Окно Reports содержит имена файлов форм отчетов, а окно Labels - имена файлов форм марок.

Крайнее справа окно Applications высвечивает имена программ или любых тек­стовых файлов.

Для создания файлов соответствующих типов в окнах панели УЦ имеется пози­ция (создать). После выбора этой позиции высвечиваются экраны, пред­назначенные для выполнения операций по созданию файла соответствующего типа. Эти же экраны раскрываются и при выборе имени файла в окне.

Помимо основных функций работы с файлами различных типов управляющий центр обычно имеет широкий набор сервисных функций, позволяющих работать с каталогами, определять макропоследовательности клавиш, выполнять экспорт и импорт данных в файлы других систем, защищать данные, устанавливать парамет­ры системы, копировать, переименовывать, удалять файлы, запускать DOS-программы и т.д.

4. Создание структуры файлов

Рассмотрим теперь, как создать структуру файла БД с помощью УЦ. Для этого надо выбрать позицию окна Data на панели УЦ. На экране появится таблица, состоящая из шести колонок с именами: порядковый номер поля (Num), имя поля (FieldName), тип поля (FieldType), ширина поля (Width), количество дробных десятичных знаков числа (Dec), признак индексирования поля (Index). Каждая строка этой таблицы содержит информацию об одном поле записи файла БД. Имя поля может включать до 10 буквенно-цифровых символов, но должно начинаться обяза­тельно с буквы. Тип поля (символьный - Character, числовой с фиксированной точкой - Numeric, числовой с плавающей точкой - Float, текстовый - Memo, логиче­ский - Logical и типа даты - Date) можно выбрать клавишей ПРОБЕЛ или набрать непосредственно с клавиатуры.

После того как введено описание для всех полей файла БД, созданную структуру следует сохранить на диске. Для этого надо сначала клавишей F10 вызвать меню экрана создания/модификации структуры БД и затем выбрать позицию (сохранитьструктуруфайлаБД) меню Layout.

Ввод новых и обновление существующих записей выполняется в одних и тех же стандартных экранных формах Browse и Edit. Предварительно надо файл БД открыть. Факт открытия файла отмечается на панели УЦ тем, что его имя переме­щается выше черты под слово . Находясь на экране разработки структуры файла БД, после ее окончания можно сразу перейти к вводу данных посредством выбора позиции меню Append.

Кроме того, ввод данных в стандартные экранные формы можно выполнить из УЦ. Для этого после установки курсора на имя файла в окне Data надо нажать клавишу ENTER и затем выбрать позицию . После этого высветится одна из стандартных экранных форм: Browse или Edit.

В форме Browse данные высвечиваются в табличном виде (строка таблицы - за­пись файла), при этом не все поля могут одновременно разместиться на экране.

В форме Edit поля одной записи размещаются одно под другим на одной или нескольких страницах экрана (в зависимости от количества полей). Раскрытие последующих страниц выполняется клавишей PgDn.

После того как создана структура файла БД и введена информация, обычно требует­ся отбирать и выводить на экран или на печать те данные, которые отвечают постав­ленной задаче. Для этого формируются запросы на отбор необходимых данных.

Запросы можно создавать с помощью шаблона файла (запросы по образцу) и в специальном окне, которое размещается в окне Queries панели УЦ.

Формирование шаблона вывода целесообразно выполнять в два этапа: сначала вводить сразу все поля файла и затем удалять ненужные.

Кроме обычных полей в шаблон вывода можно помещать вычисляемые поля.

В пустую графу шаблона вычисляемых полей вводится с клавиатуры вычисляе­мое выражение, которое включает одно или несколько имен полей файла БД, и операторы выполнения действий с ним. В число этих операторов входят арифмети­ческие и логические операторы, а также функции dBASE.

Имеется возможность разрабатывать собственные формы ввода и вывода дан­ных на экран. В этих формах поля файлов БД можно размещать в любом месте экрана, сопровождая их пояснительными надписями, обводить в рамки и вводить другие оформительские элементы.

Разработанные формы представляют собой программные файлы, которые мож­но записать на диск и затем использовать многократно для просмотра и обновле­ния информации на экране в удобном для пользователя виде.

Разработка экранной формы начинается с выбора позиции окна Forms панели УЦ. После этого высвечивается горизонтальное меню, включающее позиции , , , . Выбор этих позиций приводит к открытию различных меню, позволяющих выполнять определенный круг действий по созда­нию экранной формы.

Так, меню Layout предназначено для общего оформления экранной формы, реа­лизации короткого способа ввода всех полей на экран и назначения файла БД, если он не был открыт ранее.

Добавление полей в экранную форму по одному осуществляется с помощью по­зиции меню Fields.

Разработка отчетов является завершающим этапом технологии обработки ин­формации. При выдаче отчетов могут использоваться выборки данных, полученные в результате выполнения запросов, и исходные файлы БД.

Разработка отчетов выполняется в окне Reports УЦ. Форма отчетов создается на экране. В нее можно включать следующие элементы: поля из текущего файла БД или выборки, вычисляемые поля, которые создаются специально для отчетов, текстовый материал, рамки и линии. Текст длинных символьных полей можно размещать и разворачивать в колонках заданной ширины.

В число стандартных частей отчета входят: заголовок страницы, введение (заголовок) отчета, собственно отчет (тело отчета), итоги (заключение) отчета и подножие страницы.

Описанный УЦ позволяет выполнять многие операции без знания командного языка dBASEIV с помощью режима управляемого меню, однако основной режим работы СУБД основан на использовании командного языка.

5. Командный язык СУБД

Операции СУБД реализованы в виде команд, которые, как правило, можно ис­пользовать независимо, вводя их с помощью клавиатуры - это, так называемый, командный режим СУБД. Из этих команд можно составлять прикладные програм­мы, создавая таким образом системы «под ключ», ориентированные на неподготов­ленного пользователя. Это, так называемый, программный (пакетный) режим работы в СУБД.

В состав элементов командного языка входят команды, SET-команды, функции, переменные и массивы.

Команда записывается в виде строки слов, в которую входит глагол - основное слово, определяющее содержание операции, выполняемой командой, список выраже­ний и ключевые слова с аргументами. Структура командной строки называется синтак­сисом команды. Многие команды обработки файлов строятся по следующей форме:

<глагол>   [<список выражений>]    [<границы>] [FOR]    [ИН1ЬЕ<условие>] [ТОFILE   <имя  файла>   /ТОPRINTER

/ТО ARRAY<имя массива>

/ТО <переменные> [ALL   [LIKE/EXCEPT   <шаблон>]]    [IN<алиас>]

Квадратные скобки означают использование заключенных в них элементов син­таксиса по выбору. В угловых скобках, следующих после ключевого слова, записы­ваются его аргументы. Косая черта, наклоненная влево (/), обозначает, что может быть записано только одно из разделенных этим знаком ключевых слов. Угловые, квадратные скобки и косая черта в записи команды для ее выполнения не указыва­ются и служат только для пояснения синтаксиса.

<Список выражений> представляет собой комбинацию имен полей файлов БД, переменных, элементов массивов, констант, функций, системных переменных и операторов. Все данные в выражении должны быть одного типа. Если в выражении требуется использовать данные разных типов, их надо преобразовать в один тип специальными функциями. Выражения в списке могут быть различного типа.

Операторы в выражениях обозначают операции с данными и обозначаются спе­циальными символами. В dBASE используются четыре типа операторов: математи­ческие, операторы отношений, логические и строковые.

Границы в приведенном выше синтаксисе команды указывают те записи файла БД, которые будут доступны при его обработке. В качестве ключевых слов границ могут быть: RECORD - доступна только одна запись с заданным номером; NEXT - доступны все записи, начиная с номера n; ALL - доступны все записи файла БД; REST - доступны записи, начиная с текущей до конца файла.

Опции FOR и WHILE определяют условия отбора записей для обработки. Эти опции имеют приоритет перед границами при определении доступа к записям. Опция FOR определяет доступ к обработке, начиная с первой записи и до конца файла БД, aWHILE - начиная с текущей записи и до тех пор, пока условие имеет логическое значение «Истина» (True или .Т.).

Опция ТО управляет выводом информации, обработанной командой. В ряде команд выходной поток можно направить в файл на диске, на принтер, в массив (или переменную).

Опция ALLLIKE позволяет отобрать или, наоборот, исключить среди имен файлов, полей файлов БД и переменных те, которые соответствуют заданному шаблону.

Особой разновидностью команд являются SET-команды, устанавливающие па­раметры среды, в которой выполняются обычные команды. Применяются две формы этих команд:

SET  <параметр>ТО <выражение> и

SET  <параметр>ON/OFF

Первая форма устанавливает значение параметра, а вторая включает (ON) или выключает (OFF) его действие, т.е. устанавливает состояние. Эти команды можно выполнять в программах, в командном режиме, можно также занести их в специ­альный файл с именем Config.db, определяющий параметры среды на весь сеанс работы с пакетом dBASE.

Создание файла БД осуществляется командой CREATE <имя файла>. Для мо­дификации созданной структуры файла используется команда MODIFYSTRUCTURE.

Для открытия файла БД используется команда

USE         [<имя файлаБД>/?]    [IN <номер рабочейобласти>]

[INDEX <список   .ndx и   .mdx файлов>]

[ORDER   [TAG]   <имя   .ndx файла>/<указатель   .mdxфайла> [OF <имя   .mdxфайла>]] [АЫАЗ<алиас>]    [EXCLUSIVE]    [NOUPDATE] ,

которая открывает существующий файл БД и связанные с ним файлы .mdx и .ndx в текущей рабочей области.

Для создания индексных файлов типа .ndx и .mdx используется команда

INDEXON<индексное  выражение> ТО <имя   .ndx файла>/

TAG<имя указателя индекса   .mdx файла> [OF<имя   .mdx   файла>]    [UNIQUE]    [DESCENDING]

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

SETINDEX TO [/?<список имен файлов> [ORDER [TAG] <имя .ndx файла>/ <имя указателя индекса> [OF <имя .mdx файла>]]]

Помимо широкого набора команд типичный язык СУБД типа dBASE персо­нального компьютера включает несколько десятков или даже сотен встроенных функций. Функции могут использоваться на месте переменных и констант в коман­дах. После указания имени функции обязательно идут круглые скобки, даже если функция не требует никаких параметров.

Некоторые функции СУБД типа dBASE

Функция

Назначение

RECNO()

Возвращает номер текущей записи открытого файла БД

BOF() EOF()

Возвращают логический признак начала и конца открытого файла БД

RECCOUNT()

Возвращает число, записей в открытом файле БД

FOUND()

Возвращает логический признак успешности поиска в БД командой SEEK

ЦКЕ(<образец>, <выр.С>)

Сравнивает строку <образец> с символьным выражением <выр.С>

UPPER (<выр.С>)

Преобразует символьную строку в верхний регистр

INKEY()

Возвращает код нажатой клавиши

ERROR()

Возвращает номер ошибки

CHR()

Возвращает букву по коду

DATE()

Возвращает текущую дату

ROW() COL()

Возвращает номер текущей строки и столбца экрана

В языке dBASEIV используются также функции, которые (наряду с командами) позволяют обрабатывать данные (в том числе, выполнять вычисления), а также определять состояния, например, находится ли указатель записей в конце файла: 7EOF0- После имени функции обычно стоят круглые скобки, в которых могут помещаться аргументы. Функции нельзя использовать самостоятельно, а только вместе с какой-либо командой.

Кроме системных функций в dBASEIV можно использовать функции, созданные самим пользователем.

В языке dBASE используются переменные, тип которых автоматически определя­ется первым в данной программе присвоением им значения. Возможные типы: символьный, логический, числовой, дата.

Кроме простых переменных, в программах и процедурах можно использовать одно- или двумерные массивы. Каждый элемент массива представляет собой обычную переменную. Представление переменных в виде массива позволяет значительно расширить диапазон применения переменных, а также, в ряде случаев, облегчить реализацию функций, присущих переменным. Перед использованием массивов сначала их надо объявить командой

DECLARE               <имя массива1>

[{<количествострок>,

{,<имя массива2>

[{<количествострок>,

{<количествоколонок>}]  {<количествоколонок>}]

В синтаксисе этой команды опции указываются фигурными скобками вместо обычно принятых квадратных. При записи команды в программе в квадратные скобки заключаются параметры (размерность) массива - число строк и столбцов. Если указано одно число, то массив одномерный. Формально двумерный массив с одним из параметров, равным единице, фактически является одномерным: DECLARE [12,1] или DECLARE [1,25].

Примеры.

DECLARE Mas [8,4] DECLARE Masi [10] STORE {15/10/89} TO Datl

[4,4] •]

&& Двумерный массив &&  Одномерный массив

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

STORE  <выражение>ТО <список переменных>/<список элементов массива> или альтернативная форма.

<переменная>/<элемент массива> = <выражение>.

6. Ввод данных в базу и редактирование

После того как создана структура файла БД, можно вводить данные. Существу­ют две стандартные экранные формы ввода (и вывода) информации в файлы БД: BROWSE и EDIT. Первая форма вызывается командой

BROWSE          [NOINIT] [NOFOLLOW] fNOAPPEND] [NOMENU]

[NOEDIT] [NODELETE] [NOCLEAR] [COMPRESS] [FORMAT] [LOCK ] [WIDTH ] [FREEZE <имя поля>] [WINDOW <имя окна>] [FIELDS <имя поля 1> [/R] [/<ширина колонки>] /<вычисл. имя поля 1> = <выражение 1> [ ,<имя поля 2> [/R] [/<ширина колонки>] /<вычисл. имя поля 2> = <выражение 2>]...]

В команде имеется ряд опций, позволяющих устанавливать различные режимы ее использования. В число этих опций входит группа опций, позволяющих назна­чить режимы работы с полями, и группа опций по размещению полей на экране. В состав первой группы входят следующие опции: NOEDIT , позволяющая установить режим только чтения для всех полей, NOAPPEND, не разрешающая добавлять новые записи, и NODELETE, не разрешающая помечать записи для удаления. Опция FREEZE назначает для обновления только одно указанное поле. Другие поля высвечиваются, но остаются недоступными для редактирования. Если для указанного в опции FREEZE поля командой PROTECT открыто только чтение, то обновление не разрешается. Опция FREEZE без имени поля отменяет ранее назначенную установку.

Поля высвечиваются в том порядке, который определен структурой файла БД или указан в команде опцией FIELDS, входящей в состав второй группы. Эта опция позволяет выбрать поле и определить порядок его расположения в таблице Browse.

Опция WIDTH устанавливает верхний предел ширины колонки для всех полей в таблице BROWSE. Эта ширина перекрывает ширину поля, назначенную при создании файла БД. Если опции WIDTH и <ширина колонки> используются одновременно, то принимается наименьшее значение. Данная опция, как и преды­дущая, не применяется для полей типа Memo и логических полей. Значения числовых полей и полей даты не будут высвечиваться, если значение опции WIDTH меньше ширины этих полей, назначенных при определении структуры файла БД. Опция FORMAT позволяет разместить поля в таблице BROWSE в очередности, определенной экранной формой, которая установлена командой SETFORMATTO.

Альтернативой команды BROWSE является команда EDIT

EDIT   [NOINIT] [NOFOLLOW] [NOAPPEND] [NOMENU]

[NOEDIT] [NODELETE] [NOCLEAR] [<номерзаписи>] [FIELDS <списокполей>] [<диапазон>] [FOR <условие>] [WHILE <условие>]

Эта команда выводит на экран по одной записи файла БД, поля которой разме­щаются по вертикали.

Если требуется обновить содержимое полей файла БД без привлечения данных из другого файла, например умножить содержимое числового поля на заданную величину, соединить содержимое двух символьных полей и т.д., можно использо­вать команду

REPLACE              [<границы>]   <поле> WITH  <выражение>

[   ,   <поле> WITH <выражение...] [WHILE   <условие>]    [FOR<условие>]    [ADDITIVE]

которая изменяет (замещает) значения заданных полей (включая поля Memo) текущей записи или группы записей, определенных границами и опциями WHILE, FOR.

После ввода данных в файл БД нередко требуется быстро их просмотреть. Для этого служат команды

LIST/DISPLAY    [<границы>]    [[FIELDS]   <список  выражений>]

[OFF]    [<диапазон>]    [FOR <условие>] [WHILE   <условие>]    [ТОPRINTER/ ТОFILE<имя файла>]

Эти команды выводят все поля файла БД, если их список не определен опцией FIELDS. В начале каждой записи, если не указана опция OFF, выводится ее номер, опции <диапазон>, FOR и WHILE определяют диапазон выводимых записей. Команды LIST и DISPLAY идентичны с той разницей, что первая выводит записи непрерывно, а вторая делает остановку после вывода одной страницы экрана.

Кроме выводов файлов БД команды LIST и DISPLAY позволяют также высве­чивать данные о файлах в директориях, содержимое буфера HISTORY (хранилище выполненных с клавиатуры команд), данные об используемых переменных и массивах, информацию о текущем сеансе работы с dBASE, структуру указанного файла БД и имена рабочих станций, работающих в среде ЛВС.

7. Дополнительные операции

Нередко возникает необходимость просмотреть структуру файла и вывести ее на печать. Для этого служит команда

LIST/DISPLAY STRUCTURE [IN <алиас>] [ТО PRINTER/ TO FILE <имяфайла>]

которая выводит информацию о файле БД.

Существуют специальные команды перемещения по файлу, добавления новых записей и пометки записей для их последующего удаления.

Для перемещения по файлу используется команда

GO/GOTO BOTTOM/TOP   [IN  <алиас>]

ИЛИ

или

GO/GOTO [RECORD] <номер записи> [IN <алиас>]

<номер записи>

Эти команды осуществляют переход на указанную запись в активном файле БД. В программах часто требуется перемещать указатель записи не на конкретную запись, а на следующую после текущей. Эту операцию выполняет команда

SKIP   []    [IN<алиас>]

После того как указатель записи перемещен на нужную запись, которая стано­вится текущей, можно выполнить требуемую операцию, например ввести запись до или после текущей. Для этого используется команда

INSERT [BEFORE] [BLANK]

которая позволяет ввести новую запись (или пустую запись, если указана опция BLANK) после текущей или перед ней (если задана опция BEFORE). Пометить одну или несколько записей для их последующего удаления можно командой

DELETE [<диапазон>] [FOR <условие>] [WHILE <условие>]

Опции <диапазон>, FOR и WHILE позволяют помечать записи, отобранные в соответствии с заданным диапазоном и условиями.

Для того чтобы уничтожить пометки на удаление записей используется команда

RECALL [<диапазон>] [FOR <условие>] [WHILE <условие>]

Физическое удаление помеченных записей активного файла БД выполняет команда PACK. Команда

APPEND   [BLANK]

позволяет добавлять записи, введенные с клавиатуры в конец активного файла БД.

В ряде случаев требуется создать физически упорядоченный файл. Для этого ис­пользуется команда

SORTTO<имя файла>ON<поле1>   [/А]    [/С]    [/D]

[   ,<поле   2>    [/А]    [/С]    [/D]...]    [ASCENDING]/[DESCENDING] [<границы>]    [WHILE  <условие>]    [FOR  <условие>]

которая создает новый файл БД с записями, отсортированными в алфавитном, хронологическом или числовом порядке по заданным полям. Сортировка выполня­ется в порядке возрастания (/А) или убывания (/D) значений полей. Допускается сортировка максимум по десяти полям. Опция /С определяет сортировку независи­мо от прописных и строчных букв. Команда

COPYFILE <имя файла 1> ТО <имя файла 2>

делает копию файла любого типа.

После копирования или в других случаях нередко требуется переименовать файл. Для этого используется команда

RENAME <имя файла> ТО <новое имя файла>

Нередко требуется найти запись не по ее положению в файле БД, а по содержа­нию полей. Такой вид поиска предусмотрен, например, в меню команды BROWSE. Способ поиска по содержанию полей зависит от того, созданы ли индексные файлы по этим полям или по их комбинациям. Для поиска по неиндексированным полям используется команда

LOCATE [FOR] <условие> [<диапазон>] [WHILE <условие>]

Эта команда выполняет в активном файле БД поиск первой записи, удовлетво­ряющей условию, заданному опцией FOR. Опции <диапазон> и WHILE определя­ют диапазон и условие начала и конца просмотра записей.

Для поиска по индексированным полям используются команды SEEK и FIND. Команда

SEEK <выражение>

выполняет поиск первой записи файла БД с заданным значением индексированного поля. Приэтомсоответствующийиндекс должен быть установлен вкачестве главного (управляющего) индекса. Команда

FIND<литеральная   строка>

аналогична команде SEEK и также выполняет поиск первой записи в индексирован­ном файле БД с заданным значением индекса при установленном соответствующем главном индексе. Отличие состоит в том, что в качестве поискового значения в команде FIND используется не выражение, а литеральная строка.

Основной командой, предназначенной для создания нестандартных экранных форм ввода и вывода информации, является

@<строка>,<колонка> [SAY<выр.>

[PICTURE   <выр.С>]

[FUNCTION   <список  функций>]] [GET<переменная>

[[OPEN]   WINDOW  <имяокна>]    [PICTURE  <выр.С>]

[FUNCTION   <списокфункций>]

[RANGE   [<нижний>]    [,<верхний>]]

[VALID<условие>   [ERROR  <выр.С>]]

[WHEN<условие>]    [DEFAULT   <выражение>]

[MESSAGE   <выр.С>]]

[COLOR   [<стандартнаяобласть   экрана>]    [, <нестандартная

область   экрана>]]

Эта команда позволяет выводить или вводить информацию в заданном формате в указанные места экрана. Кроме того, с помощью опций SAY этой команды можно выводить данные на принтер или в файл на диске. Для того чтобы установить вывод информации с помощью данной команды на экран, принтер или в текстовый файл DOS, используется команда

SET DEVICE TO SCREEN/printer/file <имяфайла>

Опция GET выводит и позволяет обновлять и редактировать данные, содержа­щиеся в полях, переменных или массивах.

Собственно обновление данных в переменных GET (здесь и ниже под словом «переменная» подразумеваются также поля файла БД и элементы массива) выполня­ется командой READ, которую следует поместить после данной команды. Эта команда активизирует переменные и выводит в них значения, находящиеся на экране.

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

WAIT   [<сообщение>]    [ТО <переменная>]

которая вызывает паузу до нажатия любой клавиши и высвечивает в нижней строке экрана сообщение. После нажатия клавиши выполнение программы продолжается, а в переменную заносится код ASCII этой клавиши.

С целью улучшения восприятия информации на экране можно использовать команду

@ <строка 1>,<колонка 1> ТО <строка 2>,<колонка 2> [DOUBLE/PANEL/<символы определения рамки>] [COLOR <код цвета>]

которая рисует на экране прямоугольную рамку, определяемую координатами верхнего левого - <строка 1>,<колонка 1> - и правого нижнего - <строка 2>, <колонка 2> - углов рамки. Опция DOUBLE позволяет рисовать двойную линию рамки (по умолчанию рисуется одинарная линия), опция PANEL - рамку в виде сплошной полосы. Кроме того, имеется возможность рисовать линию рамки заданными символами. Для этого задается список символов для определения рамки. Можно задать различные символы для сторон и углов рамки. В этом случае символы разделяются запятыми и располагаются в следующем порядке: f, b, I, r, fl, fr, bl, br, где f - верх; b - низ; 1 - левая сторона; г - правая сторона; П -левый верхний угол; fr - правый верхний угол; bl - левый нижний угол; br -правый нижний угол.

Пример.

@ 5,13 ТО 10,40 DOUBLE COLOR R/BG Д

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

CLEAR [ALL/FIELDS/GETS/MEMORY/MENUS/ POPUPS/TYPEAHEAD/WINDOWS]

Она очищает экран, устанавливает курсор в левый нижний угол экрана и осво­бождает все незаконченные опции GET команды @...SAY...GET. Различные опции этой команды также закрывают файлы БД, очищают переменные, списки полей, окна, горизонтальные и вертикальные меню и буфер клавиатуры.

Команда @...SAY...GET является универсальной для организации ввода и вывода информации на экране. В программах нередко требуется вводить с клавиатуры данные для обеспечения процесса обработки информации, например имя файла БД, данные для ветвления программы, поисковые значения и т.д. Для этого предусмот­рена специальная команда

ACCEPT   [<сообщение>]   ТО <переменная>

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

Кроме этой команды для ввода данных с клавиатуры можно использовать ко­манду

INPUT   [<сообщение>]   ТО <переменная>

которая выполняет аналогичные функции, но позволяет вводить в переменную с клавиатуры данные не только символьного, но и других типов, а также в виде заданного выражения, что не допускается в команде ACCEPT. Тип выражения определяет тип переменной, в которую вводится значение. После набора выражения с клавиатуры для ввода его в переменную надо нажать клавишу Enter.

Кроме универсальной команды SAY существует команда, специально предна­значенная для вывода данных на экран и принтер:

?/??        [<выр.1>   [PICTURE<выр.С>]

[FUNCTION<список  функций>]    [AT   <вьгр.Ы>] [STYLE<номер шрифта>]]    [,<выр.2>...]    [,]

которая выводит значение одного или более заданных символьных выражений. Если установлено состояние SETPRINTON, то выполняется вывод на принтер, если SETPRINTOFF, то на экран. Эта команда в форме ? выводит каждое выраже­ние на следующей строке, а в форме ?? все выражения на одной строке. Для печати отчета используется команда

REPORTFORM <имя файла отчета>/?

[<границы>] [WHILE <условие>]

[FOR <условие>] [PLAIN]

[HEADING <выр.С>] [NOEJECT]

[ТО PRINTER/TO FILE <имяфайла>] [SUMMARY]

которая запускает программу печати отчета (файл отчета), созданную командой CREATE/MODIFYREPORT.

Для создания исходных программных файлов используются обычные текстовые редакторы, например встроенный редактор dBASE, который вызывается командой

MODIFY COMMAND/FILE <имяфайла> [WINDOW <имяокна>]

Прикладная программа обычно состоит из главной процедуры и вызываемых из нее процедур, например:

<команды>

DO Procl

DO Proc2

DO РгосЗ

RETURN

PROCEDURE Procl

<команды>

RETURN

PROCEDURE Proc2

&& Начало главной процедуры

&&   Конец главной процедуры

&&   Начало Procl

&&   Конец Procl

&&   Начало Ргос2

617

<команды> RETURN

PROCEDURE РгосЗ <команды> RETURN

&& Конец Proc2 && Начало РгосЗ

&& Конец РгосЗ

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

DO <имя программы>/<имя процедуры>   [WITH <список параметров>]

Опция WITH передает в вызываемую процедуру параметры (до 64).

Каждая процедура, размещаемая в файле процедур или в программном файле, должна начинаться с команды

PROCEDURE <имя процедуры>

и завершаться командой

RETURN [<выражение>/ТО MASTER/TO <имя процедуры>]

Команда RETURNудаляет все переменные, которые были определены в проце­дуре как PRIVATE (переменные, определенные как PUBLIC, остаются без измене­ния).

Командой DO в процедуру можно передавать из вызывающей программы и об­ратно параметры, которые в самой процедуре определяются командой

PARAMETERS <список параметров>

которая должна быть первой исполняемой командой в теле процедуры. В качестве параметра в списке может быть любое допустимое выражение, определяющее переменную, в которую передаются данные из соответствующего параметра вызы­вающей программы. Если эта переменная не объявлена глобальной (PUBLIC), то автоматически она имеет статус локальной (PRIVATE).

Определение переменных как локальных выполняется командой

PRIVATE <списокпеременных> / [ALL [LIKE/EXCEPT <шаблон>]]

Глобальные переменные можно использовать повсюду в программе и в вызы­ваемых ею процедурах. Для объявления переменных и элементов массива глобаль­ными используется команда

PUBLIC <список переменных>/ [ARRAY <список элементов массива>]

8. Организация системы меню

Чтобы организовать в dBASE систему меню, сначала надо определить его от­дельные компоненты - меню вертикального и горизонтального типа. Для этого используются специальные команды, начинающиеся словом DEFINE - определить. Определение горизонтального меню выполняется командой

DEFINE MENU <имяменк» [MESSAGE <выр.С>]

Эта команда еще не создает горизонтальное меню, а только назначает ему имя и, если требуется, сообщение, которое будет высвечиваться в нижней строке экрана (строке сообщений). Для определения позиций горизонтального меню используется команда

DEFINEPAD <имя позиции>

OF <имя меню> PROMPT <выр.С>

[AT <строка>, <ко'лонка>] [MESSAGE <выр.С>]

которая определяет одну позицию горизонтального меню. Для задания нескольких позиций данная команда повторяется соответствующее число раз. Вертикальное меню определяется командой

DEFINEPOPUP <имя менк»

FROM <строка 1>,<колонка 1> [ТО <строка 2>,<колонка 2>] [PROMPT FIELD <имя поля>] /PROMPTFILES [LIKE <шаблон>] /PROMPTSTRUCTURE] [MESSAGE <выр.С>]

которая устанавливает его имя (записывается по тем же правилам, что и для гори­зонтального меню) и координаты окна меню на экране. Опции FROM и ТО опре­деляют координаты левого верхнего и правого нижнего углов окна меню.

Назначение текста и других атрибутов одной позиции ранее определенного вер­тикального меню осуществляется командой

DEFINE BAR <номерстроки> OF <имяменю> PROMPT <выр.С> [MESSAGE <выр.С>] [SKIP [FOR <условие>]]

Чтобы определить нескольких позиций, надо эту команду повторить соответст­вующее число раз.

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

ONSELECTIONPAD <имя позиции горизонтального меню> OF <имя горизонтального меню> [<команда>]

которая выполняет заданную команду при выборе указанной позиции горизон­тального меню. В качестве команды может быть любая команда dBASEIV, в том числе команда вызова программ и процедур.

Для назначения действий позициям вертикального меню используется команда

ONSELECTIONPOPUP <имя позиции вертикального MeHK>>/ALL [<команда>]

которая выполняет заданную команду или процедуру при выборе позиции верти­кального меню.

Обычно для назначения позициям меню каких-либо действий используется вы­ход на процедуру, в которой помещаются команды для выполнения этих действий. В такой процедуре чаще всего применяется команда

DO     CASE

CASE <условие>

<команды>

[CASE <условие>]

<команды>

[OTHERWISE]

<команды> ENDCASE

Можно формировать вложенные структуры этой команды, т.е. внутри команды после ключевого слова CASE помещать другую команду DOCASE, а также любые другие команды ветвления и выполнения циклов, например IF...ENDIF, DOWHILE...ENDDO и др.

CASE CASEVal  >   1000 <команды> CASE  Val   >   100 <команды> CASE Val>  10 <команды> OTHERWISE <команды> ENDCASE

Если требуется разветвить процесс только на два направления, можно использо­вать команду

IF <условие> <команды> [ELSE],<команды> ENDIF

При реализации операций, назначаемых позициям меню, нередко требуется ор­ганизовать циклы повторяющихся действий, например организовать обработку файла БД и др. Это можно сделать с помощью ряда команд и их комбинаций. Одной из таких является команда

ход фай

DOWHILE

[EXIT]

[LOOP] ENDDO

<условие> <команды>

<команды> <команды>

руе

:

зац

которая обеспечивает повторение последовательности команд, заключенной между словами DOWHILE и ENDDO до тех пор, пока заданное условие истинно. Если встречается слово LOOP, то управление передается в начало цикла команд, а при встрече слова EXIT осуществляется выход из команды и управление передается на первую команду после слова ENDDO, завершающего данную команду.

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

ACTIVATE MENU <имяменю> [PAD <имяпозиции>]

ACTIVATE POPUP <имяменю>

которые вызывают на экран предварительно определенные меню.

Список использованной литературы

1.

2.

3.