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

  • SELECT

  • Связь вида одна-запись-с-одной Команда SET RELATION TO INTO [, INTO ...] [ADDITIVE]

  • SET RELATION OFF INTO Связь вида одна-запись-со-многими

  • 3.5 Лабораторная работа №5

  • Создание командных файлов

  • MODIFY COMMAND/FILE [NOEDIT] [NOWAIT] [WINDOW ]

  • DO

  • Команда присваивания Следующая команда создает переменные и присваивает им значения: = или STORE ТО

  • SAVE ТО /ТО MEMO [ALL LIKE/EXCEPT 1

  • SAVE TO fff сохраняется все переменные; В программе такие предупреждающие сообщения обычно подавляются (по умолчанию ON) командой SET SAFETY OFF

  • Загрузка переменных в память

  • : RESTORE FROM F F F ADDITIVE Удаление временных переменных

  • RELEASE | RELEASE ALL [LIKE | EXCEPT ]

  • CLEAR MEMORY Просмотр переменных

  • DISPLAY MEMORY [LIKE ] [ТО PRINTER/FILE ]

  • IF 32[ELSE ] ENDIF

  • DO CASE CASE CASE [OTHERWISE ] ENDCASE

  • , 1>, ). Организация циклов

  • Методичка. Базы данных (ПОВТ) 2009. Методические указания для студентов дневного отделения специальности "Программное обеспечение вычислительной техники" Барнаул 2009 2


    Скачать 2 Mb.
    НазваниеМетодические указания для студентов дневного отделения специальности "Программное обеспечение вычислительной техники" Барнаул 2009 2
    АнкорМетодичка. Базы данных (ПОВТ) 2009.pdf
    Дата04.10.2019
    Размер2 Mb.
    Формат файлаpdf
    Имя файлаМетодичка. Базы данных (ПОВТ) 2009.pdf
    ТипМетодические указания
    #13290
    страница4 из 11

    Подборка по базе: Программа обучения студентов (Syllabus) по дисциплине Основы пра, методичка по цитологии 2019 для студентов.pdf, Методические указания к самостоятельной работе по дисциплине «Ме, Метод указания-19.docx, Методические указания по практике .doc, Методические указания по практике .doc, ГАОУ СПО Десмургия - Методические рекомендации для студентов по .
    1   2   3   4   5   6   7   8   9   10   11
    Понятие о рабочих областях
    В FoxPro можно обрабатывать сразу несколько файлов баз данных. Каждый такой файл типа DBF и все вспомогательные файлы (например, индексные) открываются в своей отдельной рабочей области. Переход из области в область осуществляется командой
    SELECT <рабочая область/псевдоним>
    Первые десять рабочих областей идентифицируются номерами 1-10 или буквами А -
    J. Области с 11-й по 25-ю обозначаются номерами или буквенно-цифровыми именами W11 -
    W25. Если в качестве параметра указать цифру 0, произойдет переход в первую свободную рабочую область. Кроме того, рабочие области и файлы базы данных могут

    22
    идентифицироваться так называемыми псевдонимами. Псевдонимом области по умолчанию является само имя находящегося в ней файла базы данных. В качестве псевдонима можно указать и любое другое слово в команде USE. Использование псевдонима позволяет при работе с разными базами называть их одним именем (псевдонимом). Это делает программу независимой от имени конкретной базы.
    Область, в которой мы находимся в данный момент, называется активной рабочей областью и в ней можно работать с находящейся зхдесь базой данных, используя все допустимые команды системы. одновременно даже в одной команде можно иметь доступ (с некоторыми ограничениями) к полям других баз. В этом случае имя поля из неактивной области - составное. Собственно имени поля тогда предшествует имя рабочей области или псевдоним, разделенные знаками "->" или (что более удобно) точкой:
    <рабочая область/псевдоним> -> <имя поля> или
    <рабочая область/псевдоним>.<имя поля>
    Например, следующие составные имена для поля FAM из базы KADR.DBF идентичны, если эта база открыта в области А или 1:
    KADR.FAM, A.FAM, KADR->FAM, A->FAM.
    Рабочая область в составном имени указывается любым разрешенным образом
    (буквой, именем ее базы данных, псевдонимом), но не номером. Номер может быть указан в команде SELECT и в функциях. В каждой области поддерживаются свои указатели записей, на положение которых не влияют переходы между областями.
    При входе в СУБД активизируется область 1 (или А), и, если вы работаете только с одной базой, заботиться об открытии областей ненужно.
    П р и м е р. В файле KADR среди прочих содержатся сведения о фамилиях и табельных номерах работников, а в файле BRIG1 - о табельных номерах TAB и выработке
    VIR. Необходимо по фамилии (например, МИРОНОВ) из файла KADR найти его выработку из файла BRIG1.
    CLOSE DATA
    USE kadr - открытие файла KADR.DBF
    USE brigl IN 0 - открытие BRIG1.DBF в свободной области
    LOCATE FOR fant='МИРОНОВ' - поиск записи с фамилией МИРОНОВ
    SELECT brigl - переход в область BRIG1
    LOCATE FOR tab=b.tab - поиск записи в файле BRIG1 с
    - табельным номером МИРОНОВА
    ? a.fam, tab, vir - выдача данных из обеих баз
    МИРОНОВ Р.И. 468 204000
    Замечание. Как уже говорилось, в команде USE можно одновременно указывать и область, в которой открывается база данных. Однако переход в указанную область при этом не происходит. Так, после выполнения команд USE brig I IN 0 мы все равно остаемся в текущей области А.
    Очевидно, что такой способ связи файлов очень трудоемок, в особенности, если требуется установить связь не с одной, а с несколькими записями (здесь фамилиями). В
    FoxPro имеется команда, упрощающая эту задачу.
    Связь вида одна-запись-с-одной
    Команда
    SET RELATION TO <ключ> INTO <область> [,<ключ> INTO <область>...]
    [ADDITIVE]
    связывает указатель записей в активной рабочей области с указателями записей из других рабочих областей, имена которых указаны после слова INTO, по заданному общему полю (ключу). Единственное условие - файл, с которым устанавливается связь, должен быть проиндексирован по этому полю.

    23
    Пример. Связать файлы KADR.DBF и BRIG1.DBF по полю TAB. Вывести для каждого табельного номера файла BRIG1.DBF соответствующую фамилию и выработку.
    USE brigl IH •
    USE kadr INDEX kadi-tab IN Ь
    SET RELATION TO tab INTO b
    LIST tab,vir,b.fam
    Record
    #
    TAB VTR
    B.FAM
    1 98 446000
    ПОТАПОВ Д.П. .
    2 6
    480072
    КУЛАКОВА М.И.
    3 13 120000
    СИДОРОВ П.С.
    4 468 204000
    МИPOHOB P.И.
    Здесь выведены записи файла BRIG1.DBF, в которые включено поле соответствующих им фамилий KADR.DBF (B.FAM).
    В FoxPro имеется возможность устанавливать связи с несколькими базами одновременно. Если со старшим файлом, который уже связан с другим, необходимо связать некоторый третий (четвертый и т.д.), следует во все последующие команды SET RELATION включить слово ADDITIVE, которое обеспечит сохранение связей, установленных ранее.
    Связь между всеми файлами разрывается командой SET RELATION TO без параметров. Связь с отдельным файлом в заданной <области> - командой
    SET RELATION OFF INTO <область>
    Связь вида одна-запись-со-многими. Следующая команда устанавливает связь такого типа между двумя или несколькими базами данных:
    SET SKIP TO [<область1> [,<область2>]... ]
    При этом с каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных <областях>.
    Прежде чем использовать команду SET SKIP TO, необходимо выполнить начальное сцепление вида одна-эапись-с-одной командой SET RELATION.
    Удаление связи одна-запись-со-многими осуществляется командой SET SKIP TO без параметров.
    Пример. Рассмотрим пример организации связи одной базы с несколькими базами, причем эта связь будет реализована по схеме одна-запись-со-многими.
    Положим, что в бригадных файлах BRIG3.DBF и BRIG5.DBF некоторые табельные номера могут встречаться несколько раз (например, если фиксируются выработки каждого работника по отдельным нарядам). Допускаем также, что рабочие могут работать сразу в нескольких бригадах. Требуется для каждой фамилии и табельного номера из базы
    KADR.DBF предъявить все выработки данного работника из баз BRIG3.DBF и BRIG5.DBF, которые проиндексированы по полю TAB (индексы BRIG3.IDX и BRIG5.IDX).
    BROWSE
    -
    ОКНО показано на рис. 10.1, решение приведено ниже:
    SELECT a
    USE kadr IN a
    && Открытие старшей базы области А
    USE bng3 IN b INDEX brig3
    && Открытие младшей базы области В
    USE brig5 IN с INDEX brig5
    && Открытие другой младшей базы в С
    * Установление связи одна-с-одной базы KADR.DBF с
    * базами BRIG3.DBF, BROG5.DBF
    SET RELATION TO tab INTO b, tab INTO с
    * Установление связи одна-со-многими базы KADR.DBF с
    SЕТ SKIP TO b,c
    && базами BRIG3.DBF и BRIG5.DBF
    BROWSE FIELDS a.fam :Н='Фамилия',; a.tab :Н='Табель',;

    24
    b.tab :Н='Таб/БригЗ',; b.vir :Н='Выр/БригЗ', ; с. tab : Н=' Таб/Бриг5',; с.vir : Н=' Выр/Брит'5 '
    SET RELATION TO && Отмена всех связей
    Порядок выполнения работы
    1. В командном окне укажите рабочий каталог (Set default to ?).
    2. Создайте проект.
    3. Создайте базу данных в проекте (Data
    →Databases).
    4. Нажмите правую кнопку мыши и выберите New Table, чтобы добавить таблицу в базу данных.
    5. Во вкладке Fields: введите названия полей, тип, проиндексируйте необходимые поля, укажите заголовки полей на русском языке (Caption), значения по умолчанию (Default value).
    6. Во вкладке Indexes установите первичный ключ для таблицы (Primary).
    7. Во вкладке Table выполните проверку значений полей на уровне записи.
    Например, кличка животного не может быть пустым полем.

    25 8. Свяжите таблицы от первичного ключа к индексу по внешнему ключу.
    9. Установите ссылочную целостность.
    Для этого встаньте правой кнопкой на связь и выберите Edit Referential Integrity.
    При этом следует помнить, что операция Insert рассматривается с позиции дочерней таблицы, а Update и Delete - с позиции родительской.

    26 10. Сделать локальные представления (для выполнения запросов, использующих данные из нескольких таблиц).
    Для этого на свободном месте щелкните правой кнопкой мыши и выберите New local view.
    Добавьте необходимые таблицы и сформируйте локальное представление из необходимых полей.

    27
    Отфильтруйте данные с использованием вкладки Filter, сортировку выполните с использованием Order by.
    Локальное представление может быть обновляемым (Update Criteria).

    28
    Установите
    √ в Send SQL updates и выберите Key fields only.
    Дайте имя локальному представлению.
    11. Заполните базу данных (7-10 записей).
    Перед заполнением закройте все таблицы и локальные представления, выполнив команду Clear all.
    Войдите в меню Tools
    →Options→Data→Свойства Buffering.
    Установите
    √ в Multiple record locks и пессимистическую буферизацию (Record
    (Pessimistic)).
    Для того чтобы вносились пустые значения в командном окне выполнить команду Set null on.

    29 12. Создайте форму ввода с использованием мастера.
    Вкладка Documents
    →Forms→New→FormWizard.
    13. В командном окне связать таблицы между собой с использованием индексов.
    14. Выполнить команду Browse с условиями отбора записей.
    Контрольные вопросы:
    1. Типы данных в VFP.
    2. Сущность и назначение триггеров.
    3. Установка ссылочной целостности в VFP.
    4. Команды- установки в VFP.
    5. Работа с константами в VFP.
    6. Команды для открытия и закрытия базы данных.
    7. Дополнение базы данных.
    8. Команда Browse.
    9. Перемещение по базе данных.
    10. Контроль положения указателя и наличия записи.
    11. Удаление данных.
    12. Изменение данных.
    13. Фильтрация данных.
    14. Последовательный поиск, ускоренный поиск.
    15. Типы индексов в VFP.
    16. Виды индексных файлов, их преимущества и недостатки.
    17. Установка активного индекса.
    18. Понятие рабочей области, нумерация рабочих областей. Выбор рабочей области.
    19. Работа с несколькими таблицами в VFP.
    20. Для чего устанавливается пессимистическая буферизация на уровне записи при работе с таблицами в VFP?
    21. Как указать заголовки полей и значение по умолчанию при создании таблиц в VFP?
    22. Опция Null.
    3.5 Лабораторная работа №5
    Задание:
    Разработать программу, автоматизирующую работу в предметной области, описанной в первой лабораторной работе. В программе необходимо предусмотреть следующее:
    • удобный пользовательский интерфейс для ведения базы данных, разработанной в четвертой лабораторной работе;
    • формирование отчетов, отвечающих на вопросы, разработанные в первой лабораторной работе. Должны быть следующие виды отчетов: отчеты по условию (на пример за какой-то период или по выбранному студенту), итоговые отчеты (например средняя успеваемость за семестр по группам). Отчеты должны формироваться разными

    30
    способами: средствами Visual FoxPro, средствами Microsoft Office, в графическом виде
    (диаграммы
    );
    • корректную работу в сети
    2
    ;
    • средства восстановления базы данных в случае сбоя.
    Теоретический материал
    Создание командных файлов
    Дальнейший материал посвящен изучению команд, ориентированных на прямое программирование процессов обработки данных. Такие программы создаются с помощью внутреннего встроенного текстового редактора FoxPro, вызываемого командой
    MODIFY COMMAND/FILE <имя текстового файла/маска >
    [NOEDIT]
    [NOWAIT]
    [WINDOW <окно>]
    Если используется вариант MODIFY COMMAND, по умолчанию вновь создаваемый файл считается командным (программным) файлом и ему присваивается расширение PRG, если оно не задано явно. Повторный вызов командного файла осуществляется той же командой.
    Созданная в редакторе программа запоминается в указанном в команде файле и может быть в дальнейшем вызвана на исполнение командой
    DO <имя командного файла >
    Расширение PRG указывать не обязательно.
    Исполнение программы может быть прервано в любой момент нажатием клавиши
    Escape, если командой
    SET ESCAPE ON/OFF
    установлено ON (действует по умолчанию). В готовой программе эта возможность должна быть подавлена параметром OFF.
    В заключение рассмотрим одну специфическую команду - команду выполнения внешних по отношению к FoxPro программ
    !/RUN <программа>
    РАБОТА С ПЕРЕМЕННЫМИ
    Эффективное программирование возможно только при наличии аппарата временных переменных и массивов переменных.
    В FoxPro разрешается иметь переменные тех же типов (кроме мемо), что и поля. Однако символьные переменные допускают гораздо большую длину - до 64 Кбайт, а числовые - представление и с плавающей точкой. Переменным и массивам переменных даются имена по тем же правилам, что и полям.
    Кроме обычных переменных в FoxPro введены так называемые системные переменные, которые являются резидентными и не могут быть уничтожены. Такие переменные имеют специальные имена, начинающиеся с символа "_". Системные переменные предназначены для запоминания некоторых установок среды FoxPro (в основном по управлению печатью). Из них мы рассмотрим лишь некоторые.
    Команда присваивания
    Следующая команда создает переменные и присваивает им значения:
    <переменная>=<выражение> или
    STORE <выражение> ТО <имена переменных>
    Сохранение переменных
    2
    Выполняется только студентами специальности «Комплексная защита объектов информатизации»

    31
    Следующая команда сохраняет в <файле> или <мемо-поле> с заданным именем все или часть из имеющихся к текущему моменту переменных:
    SAVE ТО <файл>/ТО MEMO <мемо-поле> [ALL LIKE/EXCEPT <маска>1
    Если задано ALL LIKE, то сохраняются только переменные, соответствующие маске, если ALL EXCEPT - все, за исключением соответствующих маске. По умолчанию имени файла придается расширение MEM. Маска может содержать знаки, принятые в MS DOS:"?" и "*". Примеры сохранения переменных в файле FFF.MEM:
    SAVE TO fff && сохраняется все переменные;
    В программе такие предупреждающие сообщения обычно подавляются (по умолчанию ON) командой
    SET SAFETY OFF
    Команда действует при перезаписи не только МЕМ-файлов, но и всех других типов файлов, а также при очистке баз данных и некоторых других необратимых действиях.
    Загрузка переменных в память
    При необходимости работать с ранее сохраненными переменными используется команда
    RESTORE FROM <файл>| FROM MEMO <мемо-поле> [ADDITIVE]
    Команда загружает в память все переменные из указанного файла типа MEM или
    <мемо-поля>. Все имеющиеся в памяти к этому времени переменные уничтожаются. Чтобы этого избежать, можно включить фразу ADDITIVE.
    Пример: RESTORE FROM F F F ADDITIVE
    Удаление временных переменных
    Активное использование временных переменных позволяет строить эффективные и быстрые системы обработки данных. Однако возможности сохранения в памяти компьютера значительного числа таких переменных ограничены ее емкостью. Ввиду этого память следует при необходимости периодически очищать от ненужных в данный момент или сохраненных в МЕМ-файлах переменных командой RELEASE:
    RELEASE <переменные> | RELEASE ALL [LIKE | EXCEPT <маска>]
    Команда удаляет только указанные <переменные>, или все (ALL), или соответствующие (LIKE), или не соответствующие (EXCEPT) <маске>. Уничтожение всех переменных может быть выполнено также командой
    CLEAR MEMORY
    Просмотр переменных
    В любой момент при отладке программ может понадобиться просмотр переменных памяти.
    Использование команды "?" слишком трудоемко при просмотре большого количества переменных.
    Следующая команда предъявляет сразу все нужные переменные памяти:
    DISPLAY MEMORY [LIKE <маска>] [ТО PRINTER/FILE <файл>]
    Команда показывает с паузами после выдачи каждых 20 строк все активные переменные и массивы, их статус (PUBLIC или PRIVATE), тип и значения. Кроме того, она показывает размер памяти, занятой под переменные, окна и меню. Если нужно просмотреть только все пользовательские переменные, введите команду DISPLAY MEMORY LIKE *.
    Аналогичные функции, но без остановок, выполняет команда LIST MEMORY.
    Все вышеперечисленные в этом разделе команды, кроме команд просмотра, не распространяются на системные переменные FoxPro.
    КОМАНДЫ УПРАВЛЕНИЯ
    Команды управления являются важнейшим средством построения программ. Эти команды не могут быть опробованы и использованы в интерактивном режиме, а только в программах.
    Команда IF. В зависимости от условия команда выполняет те или иные <команды>, находящиеся внутри конструкции IF...ENDIF.
    IF <условие>
    <команды>

    32
    [ELSE
    <команды>]
    ENDIF
    Если условие истинно, выполняются все <команды>, следующие от IF до ELSE, если ложно, то <команды> от ELSE до ENDIF. Если необязательная фраза ELSE отсутствует и условие ложно, все внутренние <команды> пропускаются и выполняется команда, следующая за ENDIF. Допустимо вложение друг в друга конструкций типа IF ... ENDIF и других структурных команд.
    Команда DO CASE. Конструкция DO CASE ... ENDCASE решает задачи, аналогичные команде IF, но в ней может быть указано сразу несколько условий, которые последовательно проверяются во всех фразах CASE.
    DO CASE
    CASE <условие 1>
    <команды>
    CASE <условие2>
    <команды>
    [OTHERWISE
    <команды>]
    ENDCASE
    Если встретилось истинное <условие>, выполняются нижеследующие <команды> до следующей фразы CASE, или OTHERWISE, или ENDCASE, и конструкция завершается. Если ни одно из CASE-условий не истинно, выполняются <команды>, стоящие за фразой
    OTHERWISE до ENDCASE, если фраза OTHERWISE отсутствует, не выполняется ни одна команда.
    В случае, если найдено истинное CASE-условие, остальные условия не проверяются и выполняется команда, стоящая за ENDCASE. Кроме перечисленных команд IF и DO CASE, в
    СУБД FoxPro имеется очень полезная функция анализа условия - IIF(<условие>,<выражение
    1>,<выражение 1>).
    Организация циклов
    В FoxPro имеются развитые средства организации программных циклов, которые в зависимости от постановки задачи могут быть классифицированы на циклы с условием
    (итерационные циклы) и циклы с параметром (арифметические циклы).
    1   2   3   4   5   6   7   8   9   10   11


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