Главная страница
Навигация по странице:

  • Вставка и удаление записей

  • Просмотр содержимого таблицы

  • Поиск и упорядочение информации в таблице

  • Report Designer

  • Project Manager

  • Конспект лекций_Администрирование БД. Теоретические основы баз данных


    Скачать 0.98 Mb.
    НазваниеТеоретические основы баз данных
    Дата14.09.2022
    Размер0.98 Mb.
    Формат файлаdoc
    Имя файлаКонспект лекций_Администрирование БД.doc
    ТипДокументы
    #676796
    страница10 из 14
    1   ...   6   7   8   9   10   11   12   13   14

    2. Microsoft Visual FoxPro. Обзор.


    История VisualFoxPro и основные особенности шестой версии.
    FoxPro – реляционная однопользовательская СУБД (с возможностью сетевого доступа), ориентированная на широкий класс пользователей. Производитель: Fox Software. Первая разработка датируется 1984 годом. FoxBase был задуман как улучшенный вариант dBASE, т.е. если dBASE умел что-то делать, то FoxBase должен был делать это лучше и быстрее.
    С появлением на рынке FoxPro 2.0 был совершен переворот в области разработки баз данных на персональных компьютерах. Ускорение работы оказалось просто поразительным. В персональной системе базы данных стала возможной работа с таблицами, содержащими миллионы записей. Впервые разработчики Fox использовали в этой версии SQL-инструкции. FoxPro 2.0 представил разработку экранов и отчетов с помощью «мастеров». При этом мастер генерировал программный код, позволяя использовать и модифицировать его в основной программе. В версию FoxPro 2.5 была добавлена поддержка Windows, хотя по сути это было DOS-приложение, лишь внешне приняв облик Windows-продукта.
    Компания Microsoft выкупила фирму Fox Software в период разработки FoxPro для Windows, и «совместная» версия 3.0 обогатилась множеством дополнительных возможностей: появилась поддержка хранимых процедур, правил привязки данных к таблицам, а также новых функций. Visual FoxPro стал первой персональной СУБД с возможностью доступа к удаленным данным. Версия 5.0 обрела возможность использовать и создавать серверы COM, но радикально не отличалась от версии 3.0.
    На рубеже веков в основном использовалась шестая версия (Visual FoxPro 6 вошёл в состав пакета разработчика Microsoft Visual Studio 6, 1999 год), хотя все позиции и притязания FoxPro уже можно было трактовать как весьма умеренные.
    Основа: интегрированная среда разработчика, позволяющая как конструировать программы из набора модулей (экраны, меню, отчёты), так и осуществлять запросы к БД из самой среды. Основной режим выполнения программ – интерпретация с возможностью создания исполняемых EXE-файлов (для работы которых требуется отнюдь не маленькая по размеру файла библиотека FoxPro). По быстродействию FoxPro всегда занимает лидирующее место среди однопользовательских СУБД. Язык программирования базируется на языке dBASE, плюс собственный набор команд и функций (FoxBASE) плюс поддержка некоторых SQL-инструкций и плюс набор ООП-классов в основном для конструирования пользовательских интерфейсов. Улучшенная поддержка COM является, по-видимому, наиболее значительным усовершенствованием, упростившим создание и реализацию OLE-серверов.
    Проект является основным средством объединения отдельных элементов приложения, собирающий файлы, на которые есть ссылки, и осуществляющий их взаимодействие. Для каждого из элементов в СУБД создаётся отдельный файл:


    Объект

    Расширения

    Проект

    PRG, FPC, CAT, PGX, PJT

    База данных (для организации таблиц и индексов)

    DBC

    Таблица (число записей в файле – до 1 млрд., максимальный размер записи – 4000 байт, число полей в записи – до 255)

    DBF

    Индексный файл (бывают простые и составные)

    CDX, IDX

    Поля типа Memo и Genegal

    FPT

    Форма

    SCX

    Запрос

    QPR

    Отчёт

    FRX, FRM

    Почтовая наклейка

    LBX, LBL

    Меню

    MNX

    Библиотека класса

    VCX

    Программа

    PRG, SPR, MPR, QPR

    Рисунок

    BMP

    Звук

    WAV

    Откомпилированный проект (наиболее быстрое выполнение команд)

    APP

    Автономный файл проекта

    EXE


    Типы данных (полей в таблицах), которые поддерживаются FoxPro:

    • Character – текстовый (254 символа максимум)

    • Integer, Numeric, Float, Double – числовые

    • Currency – денежный

    • Date – дата

    • DateTime – дата и время

    • Logical – логический

    • Memo – текстовое поле произвольной длины

    • General – двоичное поле произвольной длины



    Язык программирования FoxBASE
    Язык является строко-зависимым и регистронезависимым. Содержит большое количество команд и функций, часто дублирующих друг друга (в основном в целях совместимости с другими СУБД). Некоторые команды одинаковы даже по названию (например, SELECT). Язык истинно структурный, поддерживает аппарат процедур и функций, а также механизм макроподстановок. Использует многомерные массивы и функции массового копирования данных, однако не работает с множествами. Областью вывода по умолчанию является фон главного окна программы (как продолжение традиции DOS-версии).
    Некоторые правила языка:
    1) кириллица может быть использована лишь в символьных строках и примечаниях;

    2) ограничителями строковых констант могут быть как кавычки, так и апострофы;

    3) символ примечаний && или * ;

    4) оператор вывода на главное окно – команда ? или ?? (в первом случае вывод с новой строки, во втором – с текущей позиции);

    5) Ввод и вывод даты:

    MyBirthDate={^1969-08-23}

    Set date german

    ? MyBirthDate

    6) Использование макроподстановок

    N = ”Date()”

    M = ”&N+7”

    ? M && выводится текст Date()+7

    ? &M && выводится текущая дата, увеличенная на 7 (дней)

    ? ”&M” && выводится текст Date()+7
    Команды могут вводится интерактивно или запускаться программно. Структура команд:

    <Имя команды> [<границы>] [<список выражений>] [ FOR <условие>] [ WHILE <условие>]
    Здесь:

    <границы> – область действия команды – ключевые слова: ALL (все записи), REST (вниз от текущей), NEXT (следующие n записей, начиная с текущей), RECORD – только для записи с номером n.

    FOR <условие> – выполнение команды только для записей, отвечающих условию.

    WHILE <условие> – выполнение команды до тех пор, пока не перестанет выполняться условие.
    Пример программы поиска:

    Clear ALL && очистка экрана, удаление пользовательских переменных и массивов, окон и меню

    Use Phonebook && выбираем уже созданную базу данных со списком телефонов

    nRec=Reccount() && подсчитываем число записей в базе (переменную объявлять не надо)

    ? nRec && выводим полученную цифру на экран

    for i=1 to nRec do && организуем цикл по записям

    goto i && прямое позиционирование на запись с номером i

    if Alltrim(phone)=’555555’ && сравниваем поле с именем phone со строковой константой

    display && если условие выполнено, показываем запись на экране

    endif

    endfor
    Описание основных команд FoxBASE
    1) Выбор таблицы. В среде FoxPro только одна таблица может быть активной.

    USE <имя таблицы> – открытие таблицы в текущей рабочей области

    USE без параметров – закрывает таблицу

    SELECT – переход в рабочую область с индексом i

    CLOSE ALL – закрытие всех файлов и переход в рабочую область 1
    2) Перемещение по таблице и контроль перемещения.

    GO {TOP | BOTTOM | } – переход к первой, последней или записи с номером n

    SKIP [] – переход к записи, отстоящей на n от текущей или на следующую запись

    Recno([]) – функция, возвращающая номер текущей записи в области i

    Reccount([]) – выдаёт общее число записей в таблице (включая помеченные на удаление)

    Eof([]), Bof([]) – функции, отмечающие конец и начало таблицы
    3) Вставка и удаление записей

    APPEND [BLANK] – дополнение таблицы интерактивное (открывается окно ввода данных) или пустой записью

    INSERT [BEFORE] – вставка новой записи после (или до) текущей (открывается окно ввода данных)

    DELETE – пометка к удалению записей в указанных границах или отвечающих указанным условиям

    PACK – физическое удаление помеченных ранее записей и сжатие файла.
    USE Peoples

    GO BOTTOM

    SKIP -3

    DELETE NEXT 3

    PACK
    Просмотр содержимого таблицы

    LIST – выводит записи активной таблицы на главное окно

    CHANGE <параметры> – вызывает окно редактора отдельных записей таблицы с возможностью интерактивного или предварительного задания параметров редактирования (в т.ч. ввод значений по умолчанию).

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

    • [FIELDS <поле>[:<ключ>],…] – перечень предъявляемых полей (по умолчанию – все). Примеры ключей: :<n> – видимый размер поля в символах :R – разрешён только просмотр поля, :H=<имя> – указание собственного заголовка поля; :W=<выражение> – условие для входа в поле;

    • [FOR <условие>] – фильтр для записей;

    • [VALID <условие> [ERROR <сообщение>]] – контроль выхода из текущей записи (т.е. если <условие> истинно, запись покинуть разрешается, иначе появится <сообщение> об ошибке;

    • [WHEN <условие>] – контроль доступа к записи (если false, запись только для чтения)

    • [NOEDIT] – редактирование невозможно для всей таблицы

    • [NODELETE] – удаление записей невозможно

    • [NOAPPEND] – дополнение базы невозможно

    • [NOWAIT] – после открытия окна управление сразу передаётся программе

    • [LOCK ] – разделение окна по вертикали: линия раздела проходит за первыми n полями

    • [LEDIT | REDIT] – левая или правая части окна превращаются в CHANGE


    USE Students

    BROWSE

    BROWSE NOEDIT LOCK 3 REDIT FIELDS new=Family + Lastname + Left(Firstname,1) + ’.’ +;

    Left(Patronymic,1) + ’.’ :25:H=’ФИО’, BirthDate:H=’Дата рождения’ FOR group=21402
    Индексирование таблицы

    Индекные файлы в FoxPro бывают нескольких видов:

    1) одноиндексные – индекс по одному полю, высший приоритет. Файл с расширением .idx.

    2) мультииндексный структурный. Имя совпадает с именем таблицы, автоматически открывается для своей таблицы, и не указывается в списке индексных файлов. Расширение файла .cdx.

    3) мультииндексный обычный. Может создаваться и подключаться к таблицам программно. Низший приоритет.
    INDEX <параметры> – команда создания индексных файлов

    SER INDEX TO [<список индексных файлов>] [ORDER <ведущий индекс>] – открывает индексные файлы для активной таблицы.

    SER INDEX TO без параметров – закрывает все индексные файлы кроме структурного. Синоним – CLOSE INDEX

    REINDEX – обновляет все индексные файлы, открытые в текущей рабочей области. По умолчанию при редактировании и добавлении данных индексы отключаются. И если их по окончанию редактирования не перестроить, возникает фатальная ошибка обработки данных в базе.
    Поиск и упорядочение информации в таблице

    SET FILTER TO <условие> – установка условия для всех следующих команд обработки данных

    SET FILTER TO без параметров – отмена ранее поставленных условий

    LOCATE FOR <условие> [<границы>] [WHILE <условие>] – последовательный поиск. Предварительное индексирование не требуется. При успешном поиске функция Found() выдает значение True, а функция Recno() указывает на номер искомой записи с первым вхождением заданного условия поиска. Продолжение поиска осуществляется командой CONTINUE.
    USE Students

    SET FILTER TO Group=21402

    LOCATE FOR Name=”Екатерина

    DISPLAY

    CONTINUE
    SORT ON <список полей с ключами> TO <имя новой таблицы> [<границы>][<условия>] – создание новой таблицы, в которой физическое размещение записей соответствует заданному принципу. Первое поле в списке считается главным. Ключи: /A – сортировка по возрастанию, /D – сортировка по убыванию.
    SEEK <выражение> – быстный поиск по ведущему индексу. Если поиск удачен, Found() возвращает True, а Recno() – номер первой записи, удовлетворяющей условию (при этом остальные искать не надо, они находятся ниже по соседству). Помимо команды SEEK и её синонима FIND существует аналогично работающая функция Seek(<выражение>), возвращающая True, если поиск удачен.
    Пример программы изменения данных в таблице: откроем БД Streets, найдём запись со значением «Урицкого» (считаем, что запись уникальная) и заменим её на «Александра Невского».

    Clear ALL

    Set near off && включаем нежёсткий режим поиска

    Use Streets

    Set index to && закрываем все дополнительные индексные файлы

    INDEX on street_nam to ind_name && создаём новый индексный файл по полю street_nam

    SEEK ”Урицкого” && быстрый поиск возможен только с использованием индекса

    If Found()

    Replace street_nam WITH ”Александра Невского

    else

    ? ”Нет такого имени”

    endif
    BROWSE && проверим, что сейчас таблица упорядочена по алфавиту по полю street_nam

    Set index to
    Связи между таблицами

    SET RELATION TO <ключевое поле> INTO <область>, … [ADDITIVE] – связывает указатель записей в активной рабочей области с указателями записей из других рабочих областей по заданному полю. Дочерние таблицы должны быть открыты, и в обязательном порядке проиндексированы по ключевым полям. Создаётся связь вида 1:1.

    SET RELATION TO без параметров – разрывает связи между всеми таблицами.

    SET SKIP TO <область> – преобразует связь 1:1 к связи 1:М

    JOIN <параметры> – альтернативный вариант команды для связывания таблиц
    Пример: создадим программу, осуществляющую выборку из двух таблиц, связанных по одному индексному полю. Программа должна запросить фамилию и вывести на экран владельцев телефонов с заданными фамилиями, номера их телефонов и адреса.
    clear

    select 1

    use streets

    index on id_street to id_1 unique && совершенно очевидно, что код улицы уникален

    pathind=ndx(1) && функция возвращает путь к индексному файлу

    select 2

    use phones_flat

    set relation to id_street into streets && связь один-к-одному

    var_name=Space(30) && определим переменную текстового типа

    @ 4,4 SAY "Введите имя для дальнейшего поиска:"

    @ 5,4 GET var_name PICTURE "@!" && воспользуемся простыми средствами ввода данных

    READ

    set filter to Alltrim(Upper(name))==AllTrim(m.var_name) && можно и так ...

    i=1

    FormatFont="FONT 'Courier',12 " && эта переменная будет использована как макроподстановка

    @ 6,1 && всего лишь начало области вывода

    do while not eof()

    && самая простая команда вывода при желании может обрести неожиданный вес

    ? i PICTURE "@L 9999 " &FormatFont STYLE 'BI',;

    Padr(Substr(surname,1,At(" ",surname)),20," ") &FormatFont ,;

    house PICTURE "@R дом 9999 " FONT 'Tahoma',14 STYLE 'B',;

    " по ",;

    AllTrim(streets.street_typ) &FormatFont,;

    streets->street_nam &FormatFont

    i=i+1

    skip

    enddo

    set filter to

    set relation to

    close indexes

    close tables

    erase "&pathind"
    Разработка форм в FoxPro 6.

    Вызов редактора форм из командной строки с целью создания формы: create form <имя формы>При этом создаётся файл <имя формы>.scx.
    Редактирование формы: modify form <имя формы>При этом открывается окно Form Designer с панелями Form Controls и Properties. Прежде всего необходимо сформировать среду окружения (выпадающее меню Data Environement при клике на окне формы) для формы: добавить таблицы и связать их между собой.
    Созданная форма сразу готова для выполнения (меню Form / Run Form или кнопка «!»). Запуск формы на выполнение из командной строки:

    do form <имя формы>

    read events
    Обращение к объектам текущей формы:

    thisform.<имя объекта>.<имя свойства> = <значение>
    Основные поля, методы или свойства формы и связанные с ними типичные реакции:

    Unload Event

    закрытие формы

    clear events

    Init Event

    инициализация формы

    устанавливаются нач. знач. объектов формы

    Caption

    заголовок формы

    уже установлен


    Основные объекты формы:



    мастер помогает установить параметры объектов

    1. Поле комментария (Label)

    текстовая информация (заголовки)

    2. Текстовое поле (Text Box)

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

    3. Поле редактирования (Edit Box)

    поле для редактирования символьных полей большого размера и memo-полей

    4. Кнопка (Command Button)

    одиночная кнопка с надписью или рисунком

    5. Группа кнопок (Command Group)

    заданное количество кнопок в одном контейнере*

    6. Группа переключателей (Option Group)

    Кнопки с зависимой фиксацией*

    7. Флажок (Check Box)

    Принимает значение 0 или 1

    8. Поле со списком (Combo Box)

    Данные вводятся или выбираются из вып. списка

    9. Список выбора (List Box)

    Отображение многостолбцовых данных со скролл.

    10. Катушка (Spinner)

    инкремент/декремент с заданным шагом

    11. Табличное представление (Grid)

    если не хочется использовать BROWSE

    12. Изображение (Image)

    поддерживаются все известные графич. форматы

    13. Таймер (Timer)

    отображение системных часов или обновление данных через заданный интервал

    14. Рамка вкладок (Page Frame)

    составной объект из заданного числа страниц*

    15. Элем. отображения ActiveX (ActiveX Bound Control, OLE Bound Control)

    подключение внешних элементов управления для отображения значений поля типа General

    16. Элем. управления ActiveX

    создание ActiveX-объекта

    17. Линия, Контур (Line, Shape)

    линия, прямоугольник, эллипс, окружность

    18. Контейнер (Container)

    собирает объекты для однотипного управления

    19. Разделитель (Separator)

    разделитель кнопок

    20. Гиперссылка (Hyperlink)




    * чтобы проникнуть внутрь контейнера для редактирования его объектов следует выбрать в выпадающем меню опцию «Edit», щёлкнув по объекту-контейнеру правой кнопкой мыши.
    С помощью команд меню Format (/Align, /Size) можно сделать объекты одинакового размера, выровнять их относительно друг друга или формы, сделать равными расстояния между ними и т.п.





    Для каждого объекта существуют свойства и методы, управляющие его внешним отображением (вкладка Layout в окне Properties), взаимодействием с источником данных для этого объекта (вкладка Data), методами обработки событий от других элементов или связанных с действиями пользователя (вкладка Methods), прочие свойства (вкладка Other).

    В выделенном на рисунке окне может работать построитель выражений (кнопка fx) для определения значения свойства (если в этом есть необходимость). Если для метода указано [Default], то выполняются действия по умолчанию для каждого из методов. Если требуется ввести собственные действия, после двойного щелчка открывается окно для ввода программы, назначаемой данному методу, помимо действий, выполняемых по умолчанию.




    Основные методы объектов формы и связанные с ними типичные реакции:

    Caption

    текст для Label и Button

    конечно, можно менять программно, например this.caption = time()

    Name

    имя объекта (уникальное)

    зная его, программно управляем объектом

    Value

    текущее значение объекта

    можем устанавливать и читать, например:

    Thisform.Text1.Value = Date()

    Picture

    изображение для Button и Image

    вводится имя файла изображения

    Click Event

    нажатие – прежде всего для Button

    пример для кода кнопки «К началу таблицы»:

    if !bof()

    go top

    endif

    _screen.ActiveForm.Refresh()

    Format, InputMask

    для полей ввода

    такие же опции форматирования, что и для команд SAY/GET с шаблоном PICTURE

    RowSource

    для списков – источник данных

    совместно с полем RowSourceType










    Пример кода для кнопки «Выход из формы»:

    if MessageBox(“Выходить из формы ?”, 4+32+256, ”Выход”) = 6

    _screen.ActiveForm.Release()

    else

    _screen.ActiveForm.Refresh()

    EndIf

    Если переменную или массив намечается использовать вне формы или при взаимодействии нескольких форм, создавайте её как Public.
    Разработка отчётов в FoxPro 6.
    Под отчётом понимается форматированное представление данных, выводимое на экран, принтер или в файл.

    Вызов редактора отчётов из командной строки с целью создания нового отчёта:

    create report <имя отчёта>.При этом создаётся файл <имя отчёта>.frx. На экране появляется окно Report Designer и панель инструментов Report Controls. Редактирование отчёта: modify report <имя отчёта>.
    Создание исполняемых модулей в FoxPro 6.


    1. Создаём главную программу :



    1. В окне Project Manager нажимаем кнопку Build и выбираем Build Executable:



    1   ...   6   7   8   9   10   11   12   13   14


    написать администратору сайта