]
&& Двумерный массив && Одномерный массив
Для ввода данных в переменную или элементы массива в программе используется команда
<выражение> ТО <список переменных>/<список элементов массива> или альтернативная форма .
<переменная>/<элемент массива> = <выражение>.
. Ввод данных в базу и редактирование
После того как создана структура файла БД, можно вводить данные. Существуют две стандартные экранные формы ввода (и вывода) информации в файлы БД: BROWSE и EDIT. Первая форма вызывается командой
BROWSE [NOINIT] [NOFOLLOW] fNOAPPEND] [NOMENU]
[NOEDIT] [NODELETE] [NOCLEAR] [COMPRESS] [FORMAT] [LOCK <Bbip.N>] [WIDTH <Bbip.N>] [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 в очередности, определенной экранной формой, которая установлена командой SET FORMAT TO.
Альтернативой команды BROWSE является команда EDIT
EDIT [NOINIT] [NOFOLLOW] [NOAPPEND] [NOMENU]
[NOEDIT] [NODELETE] [NOCLEAR] [<номер записи>] [FIELDS <список полей>] [<диапазон>] [FOR <условие>] [WHILE <условие>]
Эта команда выводит на экран по одной записи файла БД, поля которой размещаются по вертикали.
Если требуется обновить содержимое полей файла БД без привлечения данных из другого файла, например умножить содержимое числового поля на заданную величину, соединить содержимое двух символьных полей и т.д., можно использовать команду
[<границы>] <поле> WITH <выражение>
[ , <поле> WITH <выражение...] [WHILE <условие>] [FOR <условие>] [ADDITIVE]
которая изменяет (замещает) значения заданных полей (включая поля Memo) текущей записи или группы записей, определенных границами и опциями WHILE, FOR.
После ввода данных в файл БД нередко требуется быстро их просмотреть. Для этого служат команды
/DISPLAY [<границы>] [[FIELDS] <список выражений>]
[OFF] [<диапазон>] [FOR <условие>] [WHILE <условие>] [ТО PRINTER/ ТО FILE <имя файла>]
Эти команды выводят все поля файла БД, если их список не определен опцией FIELDS. В начале каждой записи, если не указана опция OFF, выводится ее номер, опции <диапазон>, FOR и WHILE определяют диапазон выводимых записей. Команды LIST и DISPLAY идентичны с той разницей, что первая выводит записи непрерывно, а вторая делает остановку после вывода одной страницы экрана.
Кроме выводов файлов БД команды LIST и DISPLAY позволяют также высвечивать данные о файлах в директориях, содержимое буфера HISTORY (хранилище выполненных с клавиатуры команд), данные об используемых переменных и массивах, информацию о текущем сеансе работы с dBASE, структуру указанного файла БД и имена рабочих станций, работающих в среде ЛВС.
6. Дополнительные операции
Нередко возникает необходимость просмотреть структуру файла и вывести ее на печать. Для этого служит команда
LIST/DISPLAY STRUCTURE [IN <алиас>] [ТО PRINTER/ TO FILE <имя файла>]
которая выводит информацию о файле БД.
Существуют специальные команды перемещения по файлу, добавления новых записей и пометки записей для их последующего удаления.
Для перемещения по файлу используется команда
GO/GOTO BOTTOM/TOP [IN <алиас>]
или
GO/GOTO [RECORD] <номер записи> [IN <алиас>]
<номер записи>
Эти команды осуществляют переход на указанную запись в активном файле БД. В программах часто требуется перемещать указатель записи не на конкретную запись, а на следующую после текущей. Эту операцию выполняет команда
SKIP [<Bbip.N>] [IN <алиас>]
После того как указатель записи перемещен на нужную запись, которая становится текущей, можно выполнить требуемую операцию, например ввести запись до или после текущей. Для этого используется команда
[BEFORE] [BLANK]
которая позволяет ввести новую запись (или пустую запись, если указана опция BLANK) после текущей или перед ней (если задана опция BEFORE). Пометить одну или несколько записей для их последующего удаления можно командой
DELETE [<диапазон>] [FOR <условие>] [WHILE <условие>]
Опции <диапазон>, FOR и WHILE позволяют помечать записи, отобранные в соответствии с заданным диапазоном и условиями.
Для того чтобы уничтожить пометки на удаление записей используется команда
[<диапазон>] [FOR <условие>] [WHILE <условие>]
Физическое удаление помеченных записей активного файла БД выполняет команда PACK. Команда
[BLANK]
позволяет добавлять записи, введенные с клавиатуры в конец активного файла БД.
В ряде случаев требуется создать физически упорядоченный файл. Для этого используется команда
TO <имя файла> ON <поле 1> [/А] [/С] [/D]
[ ,<поле 2> [/А] [/С] [/D]...] [ASCENDING]/[DESCENDING] [<границы>] [WHILE <условие>] [FOR <условие>]
которая создает новый файл БД с записями, отсортированными в алфавитном, хронологическом или числовом порядке по заданным полям. Сортировка выполняется в порядке возрастания (/А) или убывания (/D) значений полей. Допускается сортировка максимум по десяти полям. Опция /С определяет сортировку независимо от прописных и строчных букв. Команда
COPY FILE <имя файла 1> ТО <имя файла 2>
делает копию файла любого типа.
После копирования или в других случаях нередко требуется переименовать файл. Для этого используется команда
<имя файла> ТО <новое имя файла>
Нередко требуется найти запись не по ее положению в файле БД, а по содержанию полей. Такой вид поиска предусмотрен, например, в меню команды BROWSE. Способ поиска по содержанию полей зависит от того, созданы ли индексные файлы по этим полям или по их комбинациям. Для поиска по неиндексированным полям используется команда
[FOR] <условие> [<диапазон>] [WHILE <условие>]
Эта команда выполняет в активном файле БД поиск первой записи, удовлетворяющей условию, заданному опцией FOR. Опции <диапазон> и WHILE определяют диапазон и условие начала и конца просмотра записей.
Для поиска по индексированным полям используются команды 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, которую следует поместить после данной команды. Эта команда активизирует переменные и выводит в них значения, находящиеся на экране.
Для приостановления процесса последовательного выполнения программы используется команда
[<сообщение>] [ТО <переменная>]
которая вызывает паузу до нажатия любой клавиши и высвечивает в нижней строке экрана сообщение. После нажатия клавиши выполнение программы продолжается, а в переменную заносится код 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 является универсальной для организации ввода и вывода информации на экране. В программах нередко требуется вводить с клавиатуры данные для обеспечения процесса обработки информации, например имя файла БД, данные для ветвления программы, поисковые значения и т.д. Для этого предусмотрена специальная команда
[<сообщение>] ТО <переменная>
которая позволяет вводить с клавиатуры данные символьного типа в переменную. Перед полем переменной можно высветить сообщение, например, о характере вводимых данных.
Кроме этой команды для ввода данных с клавиатуры можно использовать команду
INPUT [<сообщение>] ТО <переменная>
которая выполняет аналогичные функции, но позволяет вводить в переменную с клавиатуры данные не только символьного, но и других типов, а также в виде заданного выражения, что не допускается в команде ACCEPT. Тип выражения определяет тип переменной, в которую вводится значение. После набора выражения с клавиатуры для ввода его в переменную надо нажать клавишу Enter.
Кроме универсальной команды SAY существует команда, специально предназначенная для вывода данных на экран и принтер:
?/?? [<выр.1> [PICTURE <выр.С>]
[FUNCTION <список функций>] [AT <вьгр.Ы>] [STYLE <номер шрифта>]] [,<выр.2>...] [,]
которая выводит значение одного или более заданных символьных выражений. Если установлено состояние SET PRINT ON, то выполняется вывод на принтер, если SET PRINT OFF, то на экран. Эта команда в форме ? выводит каждое выражение на следующей строке, а в форме ?? все выражения на одной строке. Для печати отчета используется команда
FORM <имя файла отчета>/?
[<границы>] [WHILE <условие>]
[FOR <условие>] [PLAIN]
[HEADING <выр.С>] [NOEJECT]
[ТО PRINTER/TO FILE <имя файла>] [SUMMARY]
которая запускает программу печати отчета (файл отчета), созданную командой CREATE/MODIFY REPORT.
Для создания исходных программных файлов используются обычные текстовые редакторы, например встроенный редактор dBASE, который вызывается командой
MODIFY COMMAND/FILE <имя файла> [WINDOW <имя окна>]
Прикладная программа обычно состоит из главной процедуры и вызываемых из нее процедур, например:
<команды>ProclProc2РгосЗProcl
<команды>Proc2
&& Начало главной процедуры
&& Конец главной процедуры
&& Начало Procl
&& Конец Procl
&& Начало Ргос2
617
<команды> RETURNРгосЗ <команды> RETURN
&& Конец Proc2 && Начало РгосЗ
&& Конец РгосЗ
Процедура представляет собой программный модуль, который выполняет определенную задачу. После ее выполнения управление передается в вызвавшую или главную процедуру. Процедура так же, как и программа, вызывается и выполняется командой<имя программы>/<имя процедуры> [WITH <список параметров>]
Опция WITH передает в вызываемую процедуру параметры (до 64).
Каждая процедура, размещаемая в файле процедур или в программном файле, должна начинаться с команды
<имя процедуры>
и завершаться командой
[<выражение>/ТО MASTER/TO <имя процедуры>]
Команда RETURN удаляет все переменные, которые были определены в процедуре как PRIVATE (переменные, определенные как PUBLIC, остаются без изменения).
Командой DO в процедуру можно передавать из вызывающей программы и обратно параметры, которые в самой процедуре определяются командой
<список параметров>
которая должна быть первой исполняемой командой в теле процедуры. В качестве параметра в списке может быть любое допустимое выражение, определяющее переменную, в которую передаются данные из соответствующего параметра вызывающей программы. Если эта переменная не объявлена глобальной (PUBLIC), то автоматически она имеет статус локальной (PRIVATE).
Определение переменных как локальных выполняется командой
PRIVATE <список переменных> / [ALL [LIKE/EXCEPT <шаблон>]]
Глобальные переменные можно использовать повсюду в программе и в вызываемых ею процедурах. Для объявления переменных и элементов массива глобальными используется команда
7. Организация системы меню
Чтобы организовать в dBASE систему меню, сначала надо определить его отдельные компоненты - меню вертикального и горизонтального типа. Для этого используются специальные команды, начинающиеся словом DEFINE - определить. Определение горизонтального меню выполняется командой
DEFINE MENU <имя менк» [MESSAGE <выр.С>]
Эта команда еще не создает горизонтальное меню, а только назначает ему имя и, если требуется, сообщение, которое будет высвечиваться в нижней строке экрана (строке сообщений). Для определения позиций горизонтального меню используется команда
PAD <имя позиции>
OF <имя меню> PROMPT <выр.С>
[AT <строка>, <ко'лонка>] [MESSAGE <выр.С>]
которая определяет одну позицию горизонтального меню. Для задания нескольких позиций данная команда повторяется соответствующее число раз. Вертикальное меню определяется командой
POPUP <имя менк»<строка 1>,<колонка 1> [ТО <строка 2>,<колонка 2>] [PROMPT FIELD <имя поля>] /PROMPT FILES [LIKE <шаблон>] /PROMPT STRUCTURE] [MESSAGE <выр.С>]
которая устанавливает его имя (записывается по тем же правилам, что и для горизонтального меню) и координаты окна меню на экране. Опции FROM и ТО определяют координаты левого верхнего и правого нижнего углов окна меню.
Назначение текста и других атрибутов одной позиции ранее определенного вертикального меню осуществляется командой
DEFINE BAR <номер строки> OF <имя меню> PROMPT <выр.С> [MESSAGE <выр.С>] [SKIP [FOR <условие>]]
Чтобы определить нескольких позиций, надо эту команду повторить соответствующее число раз.
После того как определены позиции меню, обычно требуется назначить им определенные действия, которые будут выполняться при их выборе. Эти действия для позиций горизонтального меню назначаются командой
SELECTION PAD <имя позиции горизонтального меню> OF <имя горизонтального меню> [<команда>]
которая выполняет заданную команду при выборе указанной позиции горизонтального меню. В качестве команды может быть любая команда dBASE IV, в том числе команда вызова программ и процедур.
Для назначения действий позициям вертикального меню используется команда
SELECTION POPUP <имя позиции вертикального MeHK>>/ALL [<команда>]
которая выполняет заданную команду или процедуру при выборе позиции вертикального меню.
Обычно для назначения позициям меню каких-либо действий используется выход на процедуру, в которой помещаются команды для выполнения этих действий. В такой процедуре чаще всего применяется команда
CASE<условие>
<команды>
[CASE <условие>]
<команды>
[OTHERWISE]
<команды> ENDCASE
Можно формировать вложенные структуры этой команды, т.е. внутри команды после ключевого слова CASE помещать другую команду DO CASE, а также любые другие команды ветвления и выполнения циклов, например IF...ENDIF, DO WHILE...ENDDO и др.
CASE CASE Val > 1000 <команды> CASE Val > 100 <команды> CASE Val > 10 <команды> OTHERWISE <команды> ENDCASE
Если требуется разветвить процесс только на два направления, можно использовать команду
<условие> <команды> [ELSE],<команды> ENDIF
При реализации операций, назначаемых позициям меню, нередко требуется организовать циклы повторяющихся действий, например организовать обработку файла БД и др. Это можно сделать с помощью ряда команд и их комбинаций. Одной из таких является команда
ход файWHILE
[EXIT]
[LOOP] ENDDO
<условие> <команды>
<команды> <команды>
которая обеспечивает повторение последовательности команд, заключенной между словами DO WHILE и ENDDO до тех пор, пока заданное условие истинно. Если встречается слово LOOP, то управление передается в начало цикла команд, а при встрече слова EXIT осуществляется выход из команды и управление передается на первую команду после слова ENDDO, завершающего данную команду.
Предыдущие команды позволяют определить меню и атрибуты их позиций. Для того чтобы активизировать горизонтальное и вертикальное меню (а также списки), используются команды
ACTIVATE MENU <имя меню> [PAD <имя позиции>]POPUP <имя меню>
которые вызывают на экран предварительно определенные меню.
История
В свободное от основной работы время инженер NASA Уэйн Рэтлифф (Wayne Ratliff) написал систему управления базами данных сообразно собственному видению этой новой тогда технологии. Автор дал программе амбициозное название «Вулкан», и пытался - правда, без особого успеха - продавать ее. Однажды «Вулкан» попался на глаза Джорджу Тейту (George Tate) - ловкому дельцу, занимавшемуся программным бизнесом.
Судьба Джорджа в основном напоминает рекламную открытку американского образа жизни - это типичная история «сэлф-мэйд-мэна», написанная с поправкой на антураж еще не родившегося тогда стиля «киберпанк». Исключенный из школы молодой человек без специальности и особых планов на будущее стал легкой добычей армейских вербовщиков. Джордж Тейт служил в ВВС США, а затем работал мастером по ремонту радиоаппаратуры. Игра случая - в 1974 г. в числе других энтузиастов он приобрел набор для сборки компьютера «Альтаир». Закончив сборку, Джордж Тейт вдруг обнаружил, что все его знания о машине сводятся к тому, как она включается. Но заряд увлеченности оказался настолько силен, что начинающий «чайник» со временем не только осилил начала компьютерной «премудрости», но и стал отличным специалистом в этой области. Тем более, что на тех порах, чтобы владеть компьютером, необходимо было хорошо разбираться в радиоэлектронике, а растущая армия простых пользователей была, мягко говоря, далека «от всей этой премудрости», поэтому у человека, занимающегося ремонтом радиоаппаратуры, были все шансы далеко продвинуться в этой области. Джорж Тэйт стал подрабатывать ремонтом компьютеров, потом устроился в фирму, производящую компьютерные терминалы управляющим по сбыту. В 1980 г. он вместе со своим приятелем Хэлом Лашли занялся продажей программного обеспечения. Прослышав о существовании малоизвестной тогда системы «Вулкан», Тейт и Лашли заключили с Рэтлиффом контракт, который предусматривал их исключительное право на распространение этой программы. Поскольку к тому времени на название «Вулкан» уже заявила свои права другая компания, партнеры решили наименовать данное изделие как-то иначе.II
Название «dBase II» предложил рекламный агент. По его мнению, оно звучало весьма респектабельно с технической точки зрения и, кроме того, содержало тонкий намек на то, что это некая новая и, видимо, улучшенная версия своего предшественника - системы dBase.
Конечно, никакого предшественника, который следовало бы улучшить, не было и в помине, однако система dBase II действительно имела ощутимые преимущества по сравнению с другими программами, ориентированными на решение данного класса задач.
В январе 1981 г. по всей стране началась шумная реклама этой системы, очень скоро ставшей новым «бестселлером». И почти столь же стремительно Рэтлифф, Лашли и Тейт пополнили все возрастающие ряды миллионеров, сделавших состояния на программном обеспечении.IIIIII и ее расширенная версия dBase III+ появились в 1986 году. Снабженные оригинальной средой разработки и некоторыми средствами манипуляции данными, они стали наиболее популярными СУБД для IBM PC. Успех dBase III+ предопределил появление на рынке многочисленных клонов и языков программирования, объединенных прижившимся среди профессионалов понятием «xBase». Значительного успеха добилась компания Fox Software, Inc., выпустившая собственную версию СУБД под названием FoxBase. В ее состав входил псевдокомпилятор, значительно ускорявший работу финального приложения, и достаточно комфортная (для того времени) среда разработки. Преимущества FoxBase быстро выдвинули ее в первые ряды коммерческих СУБД, однако с появлением в 1987 году компилятора Clipper Summer87 именно он стал основным средством разработчиков-профессионалов.представляет собой интегрированную среду для создания и манипулирования с табличной БД и по утверждению разработчиков, поддерживает реляционную модель данных. Кроме среды имеется ряд дополнительных программ, таких как администратор доступа к файлам в сети, прекомпилятор, Run-Time модуль для выполнения программ и пр. Работает в режиме интерпретации (хотя для dBASE-4 уже разработан компилятор, который стоит чуть-чуть дороже самой системы).
Ранние версии работали даже на PC XT, хотя dBASE-4 уже хорошо работает, начиная с AT c 2Мб ОЗУ и минимум 3.5 МБ свободного места на диске (хотя по современным требованиям и возможностям это, конечно машина ниже среднего уровня).
Система поддерживает следующие типы данных: - строки символов;
числа;
логический;
дата;
MEMO - поля.
Строковые поля позволяют запоминать текст длиной до 255 символов. Над датой можно производить операции сравнения и вычитания. MEMO-поля позволяют запоминать только текст, да и то ограниченного размера (4K). Система обладает достаточным для работы набором функций по манипулированию данными и для подготовки отчетов, хотя и не отличающихся особым разнообразием по сравнению с другими системами, но бедным набором математических операций и функций ( +,-,*,/ и несколькими функциями округления).
Функции манипулирования данными позволяют:
работать с таблицами (создать, переименовать, удалить,
скопировать, скопировать структуру);
работать с записями (добавлять, изменять, удалять)
производить поиск в таблицах, в том числе используя
сложные выражения, а также устанавливать фильтры при просмотре;
производить некоторую стат. обработку (кол-во записей,
сумма по полю и пр.)
вести некоторый диалог с пользователем - достаточно
бедные возможности (практически только операторы вывода строки и
ввода значения или символа);
подготавливать отчеты.
Быстродействие - среднее и уступает таким dBASE - совместимым системам, как Clipper и FoxBase, так что при прочих равных условиях более предпочтительно пользоватьця ими (но сама фирма утверждает, что быстродействие ее нового продукта dBase IV v2.0 compiler на 25% выше, чем у FoxPro, но в таких вопросах лучше положиться на независимую экспертизу). Средств отладки практически нет, хотя с другой стороны, в интерпретирующей среде всегда можно получить доступ ко всем нужным данным в любой момент времени. В dBase 4 compiler имеются некоторые средства отладки, которые, в сущности, сводятся к запуску интерпретатора (если он у вас есть). Полезным средством языка является также оператор, который позволяет установить связь между различными таблицами по значению какого-либо поля, хотя эта возможность явно уступает возможностям действительно реляционных СУБД. В последних версиях появился интерпретатор с SQL, но по отзывам, версия получилась несколько громоздкой и не особо быстро работающей. Очень бедные возможности по составлению отчетов - фактически только отчет в стандартной форме (тв виде таблиц) и средства для печати наклеек. Такие же средства есть и в FoxPro, но работают значительно быстрее. Начиная с версии 3+ dBASE поддерживает доступ к данным на файл-сервере, но явных средств блокировки одновременного доступа нет. Хотя, может быть явных средств и не нужно, но если пользователи с этим и согласны, то программисты почему-то хотят иметь контроль над всем, от чего зависит производительность системы, и непонятно, почему им в этом отказано). По утверждениям фирмы, в систему теперь встроены средства оптимизации взаимодействия в сети, которых больше нигде не существует, но насколько этому можно верить - непонятно. В dBase IV v 2.0 защита от несанкционированного доступа по сравнению с предыдущими версиями значительно улучшена. истема индексации поддерживает индексы по отдельным полям и составные), но опять-же в таких системах, как FoxPro и Clipper имеется более эффективная система индексации. Данные в БД хранятся в виде символьных строк, что также не увеличивает скорость обработки числовых данных. В dBase IV v2.0 появилось нововведение - возможность создавать запросы на QBE, и улучшенный обработчик SQL, возможность создавать в режиме редактирования (а не ответов на вопросы, как раньше) формы отчетов, меток, экранных форм, но сам язык практически не изменился, и результат такого "экранного" пректирования - соответствующая, сгенерированная автоматически, процедура на языке dBase.
Выводы
Интерфейс системы достаточно удобен для неподготовленного пользователя за счет развитой системы меню и помощи.
Система (по отзывам) позволяет с приемлемой эффективностью обрабатывать данные обьемом до 2 Мб, но слабые средства сетевого взаимодействия, ограничения на размер MEMO-полей и практически полное отсутствия средств защиты программ и данных делают данную систему малопригодной для построения действительно сложных систем, а так-же систем, в которых требуется интенсивное взаимодействие в сети и защита данных от несанкционированного доступа.не менее, системы FoxPro и Clipper, обладая всеми возможностями dBASE, по многим параметрам превосходят его и поэтому для неподготовленного пользователя можно порекомендовать лучше использовать FoxPro, а для профессиональной работы - Clipper или пакет для С CodeBase, который фактически является набором функций как у Clipper, но работающий в 2-3 раза быстрее.
Надо уесть еще то, что dBase IV v2.0, в который толко-только введены все вышеперечисленные возможности (QBE, SQL и пр., достаточно свежий, а поэтому недостаточно оттестированный продукт).
1.Голицына О.Л., Максимов Н.В. и др., «Базы данных» (учебное пособие)
.Могилёв А.В., Пак Н.И. и др., «Информатика»
.Майоров А.Н. «Современные СУБД»