Пиши Дома Нужные Работы

Обратная связь

Функции анализа типа и наличия данных

TYPE(ВырC) –имя переменной должно быть заключено в апострофы(иначе возвращаемое значение - U)

Character C

Numeric (also float, double, and integer) N

Currency Y

Date D

DateTime T

Logical L

Memo M

Object O

General G

Undefined type of expression U

Empty(Выр)

Возвращает значение .T. если переданный аргумент:

Character Пустая строка, строка пробелов, табуляций, CR, LF, или любая комбинация из них.

Numeric 0

Currency 0

Float 0

Integer 0

Double 0

Date Empty (ò.å. CTOD(''))

DateTime Empty (ò.å. CTOT(''))

Logical False (.F.)

Memo Empty (no contents)

 

Функции подстановок

Оператор - &

 

EVALUATE(cExpression)

вычисляет выражение и возвращает результат.

 

Функции и команды для работы с массивами

ACOPY (SourceArrayName, DestinationArrayName

[, nFirstSourceElement [, nNumberElements [, nFirstDestElement]])]

Копирует элементы из одного массива в другой.

SourceArrayName – исходный массив

DestinationArrayName – результирующий массив.

Массивы могут быть одно - или двумерные. Если результирующий массив не существует, VFP автоматически создает его.

NFirstSourceElement - первый элемент в исходном массиве, который будет скопирован;

NNumberElements - число элементов для копирования. Если nNumberElements -1, все элементы исходного массива, начиная с элемента nFirstSourceElement будут скопированы.

NFirstDestElement Определяет первый элемент в результирующем массиве.

 

ADEL (ArrayName, nElementNumber [,] 2)

Удаляет элемент из одномерного массива, или строки или столбцы из двумерного массива.

ArrayName Определяет массив из которого удаляются элемент, строка, или столбец.

nElementNumber Определяет номер элемента, строки, или столбца для удаления.

 

ADIR (ArrayName [, cFileSkeleton [, cAttribute]])

Заносит информацию о файлах в массив и возвращает число файлов.

ArrayName – имя массива.

Следующая таблица описывает содержание и тип данных каждого столбца в массиве:



 

Столбец Информация Тип данных
Имена файла Строка символов
Размер файла Числовой
Дата последней модификации Дата
Время последней модификации Строка символов
Атрибуты файла Строка символов

CFileSkeleton – шаблон имени файла. Разрешается использовать символы обощения * и ?.

CAttribute может содержать любую комбинацию символов D, H, и S.

 

AELEMENT( )

 

AFIELDS(ArrayName [, nWorkArea | cTableAlias]) Размещает информацию о структуре таблицы в массиве и возвращает число полей.

AINS(ArrayName, nElementNumber [, 2]) Добавляет элемент в одномерный массив, или строку или столбец в двумерный массив.

ALEN (ArrayName [, nArrayAttribute])

Возвращает число элементов, строк, или столбцов в массиве.

ArrayName – имя массива.

NArrayAttribute Определяет что возвращает ALEN () число элементов, строк или столбцов в массиве.

0 Возвращает число элементов в массиве.

1 Возвращает число строк в массиве.

2 Возвращает число столбцов в массиве.

 

ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched]])

Просматривает массив в поисках элемента содержащего значение заданное выражением eExpression. Если элемент найден возвращается его номер или 0 в противном случае.

 

ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder]]])

Упорядочивает элементы в массиве в возрастающем или убывающем порядке.

ASUBSCRIPT( )

 

Команды для работы с массивами

DECLARE /DIMENSION

См. выше

 

COPY TO ARRAY

Копирует данные из таблицы в массив.

 

Синтаксис

 

COPY TO ARRAY ArrayName

[FIELDS FieldList]

[Scope] [FOR lExpression1] [WHILE lExpression2]

[NOOPTIMIZE]

 

Аргументы

 

ArrayName Определяет массив, в который копируются данные.

 

FieldList указывает поля таблицы которые будут копироваться в массив. Если FieldList, не указан, копируются все поля.

 

APPEND FROM ARRAY

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

 

Синтаксис

APPEND FROM ARRAY ArrayName

[FOR lExpression]

[FIELDS FieldList]

 

Аргументы

ArrayName Определяет имя массива, который содержит данные для добавления в таблицу.

Если присутствует список FieldList, то только указанные поля переносятся из массива в таблицу.

 

Пара команд SCATTER - GATHER

SCATTER

Копирует данные из текущей записи таблицы в переменные или массив.

 

Синтаксис

 

SCATTER

[FIELDS FieldNameList

| FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [MEMO]

TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK

| NAME ObjectName

 

Аргументы

 

FIELDS FieldNameList Определяет поля, которые будут переданы в переменные или массив.

FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] можно избирательно переносить поля в переменные или массив включением предложения LIKE ИЛИ EXCEPT или обоих.

Шаблон имени поля поддерживает символы обобщения.

Предложение LIKE может быть объединено с предложением EXCEPT:

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

GATHER

Заменяет данные в текущей записи таблицы с данными из массива, множества переменных, или объекта.

 

Синтаксис

 

GATHER FROM ArrayName | MEMVAR | NAME ObjectName

[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]

[MEMO]

 

Аргументы

 

FROM ArrayName Определяет массив, данные из которого заменяют данные в текущей записи таблицы. Значение первого элемента массива заменяет первое поле в текущей записи; значение второго элемента массива заменяет второе поле, и так далее.

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

Контрольные вопросы.

1. Перечислите операторы управления ходом выполнения программы.

2. Какие команды используются для удаления данных?

3. Оператор Replace – его назначение и синтаксис.

4. Сформулируйте классификацию функций Visual Foxpro.

 

 

Лекция 8

Элементы объектно-ориентированного программирования в VFP

Хотя Visual FoxPro поддерживает стандартное процедурное программирование Xbase, новые расширения языка дают пользователям мощность и гибкость объектно-ориентированного программирования, что предопределяет изменение всей логики и методики разработки прикладной программы.

Классы и объекты — два фундаментальных понятия объектно-ориентированного программирования. Класс содержит информацию о том, как объект должен выглядеть и вести себя. Другими словами, класс — это прообраз объекта. Visual FoxPro дает возможность пользователям создавать объекты как с помощью визуальных средств, так и программно на основании базовых классов, список которых приведен в табл. 1. Более подробная информация по классам Visual FoxPro приведена ниже.

 

Таблица 1. Базовые классы Visual FoxPro

CheckBox EditBox ListBox Shape
Column Form OLEBoundControl Spinner
CommandButton FormSet OLEContainerControl TextBox
CommandGroup Grid OptionButton Timer
CombcBox Header OptionGroup ToolBar
Container Image Page
Control Label PageFrame
Custom Line Separator

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

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

 

Таблица 2. Основные события Visual FoxPro

Событие Описание
Load Форма или набор форм загружаются в память
Unload Форма или набор форм удаляются из памяти
Init Объект создается
Destroy Объект удаляется из памяти
Click Пользователь щелкает на объекте основной кнопкой мыши
DblClick Пользователь дважды щелкает на объекте основной кнопкой мыши
RightClick Пользователь щелкает на объекте дополнительной кнопкой мыши
GotFocus Объект выделяется либо действиями пользователя (с помощью клавиатуры или мыши), либо программно (используя метод SetFocus)
LostFocus Объект перестает быть выделенным либо действиями пользователя (выделяется другой объект), либо программно (используя метод SetFocus)
KeyPress Пользователь нажимает или отпускает клавишу
MouseDown Пользователь нажимает кнопку мыши, когда указатель мыши находится на объекте
MouseMove Пользователь перемещает мышь над объектом
MouseUp Пользователь отпускает кнопку мыши, когда указатель мыши находится на объекте
InteractiveChange Значение объекта изменяется интерактивно
ProgrammaticChange Значение объекта изменяется программно

 

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

Рассмотрим некоторые из возможностей объектной модели Visual FoxPro.

 

Наследование

Наследование — одна из наиболее мощных возможностей объектно-ориентированного программирования. Заново созданный объект может наследовать характеристики (то есть свойства и методы) от предшественника — другого объекта. Хотя объекты могут наследовать характеристики от родительских классов, они также могут и не принимать во внимание наследование. Это позволяет разработчикам устранить потребность в двойном коде, когда необходимы подобные функциональные возможности, и настроить объекты для использования в конкретных условиях. Visual FoxPro полностью поддерживает наследование и, в случае надобности, его отмену либо программно, либо с помощью интерфейса.

Создание подклассов

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

Инкапсуляция

Объектно-ориентированное программирование также позволяет пользователям помещать атрибуты (свойства) и правила поведения (методы) в объекты. В Visual FoxPro программисты могут разместить информацию об объекте так, чтобы доступ к ней был невозможен. Это позволяет создавать “черные ящики”, которые скрывают информацию. Даже если внутренняя реализация объекта и управление им может быть полностью скрыта, объект “знает” все, что ему требуется “знать”, чтобы вести себя в соответствии с задуманным алгоритмом.

Полиморфизм

Visual FoxPro дает программистам возможность пользоваться преимуществами полиморфизма. Полиморфизм полезен, когда специфическая функция должна вести себя по-разному при различных обстоятельствах. Например, произвольный метод Append может быть полиморфен в зависимости от типа объекта (скажем, различные кнопки в пользовательской форме для добавления данных в различные таблицы), который вызвал метод Append. Это динамическое связывание функциональных возможностей позволяет создавать структурные классовые иерархии, где базисные скелеты объектов определены в базовом классе, а специализированный код — в полученных подклассах.

Простейший пример создания управляющей кнопки для завершения работы с формой средствами объектно-ориентированного программирования приведен на рис.

 

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

Класс содержит информацию о том, как объект будет выглядеть и как он будет себя вести. Другими словами, класс — это прототип или шаблон объекта. Когда вы создадите класс, опишете его свойства и необходимую реакцию на возможные события, с точки зрения пользователя в программе ничего не изменится. Чтобы что-то появилось (кнопка, поле и т. д.), необходимо на основании этого класса создать объект. Естественно, что чем точнее описания свойств класса соответст­вуют необходимой функциональности объекта, тем меньше работы придется выполнить, чтобы пройти путь от шаблона до реального объекта.

Стандартные возможности средств управления заложены в свойствах базовых классов Visual FoxPro. Описание базовых классов включено в саму СУБД и не может быть модернизировано. Это готовый инструмент для работы или исходный образец для создания других классов и подклассов.

Кроме перечисленных, новые для FoxPro средства управления и объекты могут быть созданы визуально или программно на основе соответствующих базовых классов. В табл. 3 перечислены доступные элементы управления и соот­ветствующие им типы данных.

Таблица 3. Типы данных элементов управления

Элемент управления Допустимые типы данных
CheckBox Логический, числовой
ComboBox Символьный, числовой
CommandButton Числовой
Command Group Символьный, числовой
EditBox Символьный
Grid Символьный, числовой
ListBox Символьный, числовой
OptionButton Числовой
OptionGroup Символьный, числовой
Spinner Числовой
TextBox Любой тип данных

 

Контрольные вопросы.

1. Перечислите возможности объектно-ориентированного программирования Visual Foxpro.

2. Какие базовые классы существуют в Visual Foxpro.

3. Перечислите основные события Visual Foxpro.

4. С какими типами данных могут работать элементы управления.

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

 

 

Список литературы

 

1) К.Дж. Дейт Введение в системы баз данных, 8-е издание.: Пер. с англ. — Москва: Издательский дом "Вильяме", 2005.

2)М. Ричардс и др. “ORACLE 7.3 Энциклопедия пользователя”.

Киев, изд. Диасофт, 1997г

3)Омельченко Л. Н., Шевякова Д. А. Самоучитель Visual FoxPro 9.0.

СПб: БХВ-Петербург, 2005г.

4)Дж. Грофф, П. Вайнберг. SQL: Полное руководство; Пер. с англ., Киев: Издательская группа BHV, 2001г.


Оглавление

Лекция 1. 2

Лекция 2. 14

Лекция 3. 37

Лекция 4. 52

Лекция 5. 63

Лекция № 6. 73

Лекция 7. 83

Лекция 8. 104

 






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2024 pdnr.ru Все права принадлежат авторам размещенных материалов.