Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

А.С.Грошев.Базы данных.Уч.пособие

.pdf
Скачиваний:
150
Добавлен:
12.04.2015
Размер:
3.1 Mб
Скачать

Name – название, которое будет показано для формы в окне Start ; Single instance – открытие единственного экземпляра этого окна;

Use navigation toolbar – показывать навигационную панель (перемещения по таблице);

Use navigation menu – показывать навигационное меню;

Appear in File New dialog – форма появляется в пункте New меню и панели инструментов;

Appear in File Open dialog – форма появляется в пункте Open.

На странице 5 Reports следует указать Name – название, которое будет показано для отчета в окне Start и Appears in Print Report dialog – показы-

вать или нет отчет в диалоге печати отчетов.

После этого можно нажать кнопку OK и изучить, как выглядят экранные формы, отчеты и как ведет себя полученная программа после компиляции проекта.

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

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

Задание № 2.7

1.Разработать простейший проект на основе созданной ранее экранной формы.

2.Разработать проект с помощью мастера, изучить его состав и работу скомпилированной программы.

71

Приложение 2.1 Некоторые команды и функции языка системы VFP

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

С разъяснением параметров команд функций и примерами их использования можно познакомиться в справочной системе VFP (файл fox7help.chm.

1. Команды для работы с базами и индексами

1.1. Создать базу

CREATE DATABASE [DatabaseName | ?]

1.2. Создать таблицу базы данных (SQL-команда)

CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE] (FieldName1 FieldType [(nFieldWidth [, nPrecision])][NULL | NOT NULL] [CHECK lExpression1

[ERROR cMessageText1]][DEFAULT eExpression1] PRIMARY KEY | UNIQUE][REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS][, FieldName2...] [, PRIMARY KEY eExpression2 TAG TagName2

|, UNIQUE eExpression3 TAG TagName3]

[, FOREIGN KEY eExpression4 TAG TagName4 [NODUP] REFERENCES TableName3 [TAG TagName5]]

[, CHECK lExpression2 [ERROR cMessageText2]])| FROM ARRAY ArrayName

1.3. Открыть базу данных, представление (View) или таблицу базы

USE [[DatabaseName!]Table | SQLViewName |?]

[IN nWorkArea | cTableAlias] [ONLINE] [ADMIN] [AGAIN] [NOREQUERY [nDataSessionNumber]] [NODATA] [INDEX IndexFileList | ?

[ORDER [nIndexNumber | IDXFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]]]]

[ALIAS cTableAlias] [EXCLUSIVE] [SHARED] [NOUPDATE] [CONNSTRING cConnectString]

1.4. Выбрать свободную рабочую зону (0), заданную рабочую зону или выбрать таблицу

SELECT nWorkArea | cTableAlias

72

1.5. Создать индексный файл

INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]FOR lExpression] [COMPACT] [ASCENDING | DESCENDING][UNIQUE | CANDIDATE] [ADDITIVE]

1.6. Открыть индекс

SET INDEX TO [IndexFileList | ? ]

ORDER nIndexNumber | IDXIndexFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]] [ADDITIVE]

1.7. Установить порядок по индексу

SET ORDER TO [nIndexNumber | IDXIndexFileName | [TAG] TagName [OF CDXFileName] [IN nWorkArea | cTableAlias][ASCENDING | DESCENDING]]

1.8. Установить связь между таблицами

SET RELATION TO [eExpression1 INTO nWorkArea1 | cTableAlias1 [, eExpression2 INTO nWorkArea2 | cTableAlias2 ] [IN nWorkArea | cTableAlias] [ADDITIVE]]

1.9. Установить множественную связь между таблицами (используется при формировании отчетов)

SET SKIP TO [TableAlias1 [, TableAlias2] ...]

2. Команды перемещения по таблице, поиска и отбора данных

2.1. Перейти к записи ...

GO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]

GO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]

(вместо GO можно использовать GOTO)

2.2. Переместиться по таблице (вперед или назад)

SKIP [nRecords] [IN nWorkArea | cTableAlias]

Для nRecords>0 – перемещение далее по таблице, для nRecords<0 – назад к предыдущим записям.

Функция BOF() возвращает .T., если текущая запись – первая и Вы пытаетесь выполнить команду SKIP –1, аналогично для последней записи – EOF()=.T.

2.3. Поиск для заданного логического условия

LOCATE [FOR lExpression1] [Scope] [WHILE] [NOOPTIMIZE]

73

(Найти следующую запись, соответствующую условию – ко-

манда CONTINUE)

2.4. Поиск по значению индекса

SEEK eExpression ORDER nIndexNumber |

IDXIndexFileName | [TAG] TagName

[OF CDXFileName] [ASCENDING | DESCENDING]] [IN nWorkArea | cTableAlias]

2.5. Установить фильтр

SET FILTER TO [lExpression] [IN nWorkArea | cTableAlias]

2.6. Выполнить запрос (SQL-команда)

SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item [[AS] Column_Name]

[, [Alias.] Select_Item [[AS] Column_Name] ...] FROM [FORCE][DatabaseName!]Table

[[AS] Local_Alias] [[INNER | LEFT [OUTER]

| RIGHT [OUTER] | FULL [OUTER]

JOIN DatabaseName!] Table [[AS] Local_Alias] [ON JoinCondition …]

[[INTO Destination] | [TO FILE FileName

[ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN]] [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]

[WHERE JoinCondition [AND JoinCondition ...] [AND | OR FilterCondition [AND

| OR FilterCondition ...]]]

[GROUP BY GroupColumn [, GroupColumn ...]] [HAVING FilterCondition] [UNION [ALL] SELECTCommand]

[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]

3. Команды для занесения и модификации данных

3.1. Открыть окно для работы в табличном формате с таблицей базы данных:

BROWSE [FIELDS FieldList][FONT cFontName [, nFontSize]] [STYLE cFontStyle]

[FOR lExpression1 [REST]] [FORMAT] [FREEZE FieldName] [KEY eExpression1

[, eExpression2]] [LAST | NOINIT]

74

[LOCK nNumberOfFields][LPARTITION]

[NAME ObjectName][NOAPPEND][NOCAPTIONS] [NODELETE] [NOEDIT | NOMODIFY] [NOLGRID] [NORGRID] [NOLINK] [NOMENU][NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT] [PARTITION nColumnNumber [LEDIT] [REDIT]] [PREFERENCE PreferenceName] [SAVE]

[TIMEOUT nSeconds] [TITLE cTitleText]

[VALID [:F] lExpression2 [ERROR cMessageText]] [WHEN lExpression3] [WIDTH nFieldWidth] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN] [COLOR SCHEME nSchemeNumber]

При описании полей (в

параметре

FIELDS) список может

содержать следующие параметры:

 

FieldName

(имя поля)

[:R]

(только чтение)

[:nColWidth]

(ширина поля)

[:V = lExpr1 [:F] [:E = cTxt]]

(функция, выпол-

 

няемая при выходе из поля)

[:P = cFormatCodes]

(формат)

[:B = eMin, eMax [:F]] (диапазон данных)

[:H = cHeadingText]

(заголовок)

[:W = lExpr2]

(функция,выполняемая

 

 

перед входом в поле)

Близкий синтаксис имеют команды EDIT и CHANGE для работы с таблицей при построчном расположении полей.

3.2. Добавление записей

APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]

APPEND FROM FileName | ? [FIELDS FieldList] [FOR lExpression][[TYPE] [DELIMITED

[WITH Delimiter | WITH BLANK | WITH TAB | WITH CHARACTER Delimiter] | DIF | FW2 | MOD |

PDOX | RPD | SDF | SYLK | WK1 |WK3 | WKS | WR1 | WRK | CSV | XLS | XL5 [SHEET cSheetName]| XL8 [SHEET cSheetName]]] [AS nCodePage]

APPEND FROM ARRAY ArrayName [FOR lExpression] [ FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]

3.3. Занести данные в поля таблицы

REPLACE FieldName1 WITH eExpression1 [ADDITIVE] [, FieldName2 WITH eExpression2 [ADDITIVE]]

75

...[Scope][FOR lExpression1][WHILE lExpression2] [IN nWorkArea | cTableAlias][NOOPTIMIZE]

3.4. Копировать данные текущей записи в массив переменных

SCATTER [FIELDS FieldNameList | FIELDS LIKE

Skeleton | FIELDS EXCEPT Skeleton] [MEMO]

TO ArrayName | TO ArrayName BLANK | MEMVAR

| MEMVAR BLANK | NAME ObjectName [BLANK]

(параметр MEMVAR означает, что используются переменные с теми же именами, что и имена полей записи; имя переменной в программе следует писать как m.<имя поля>).

3.5. Копировать данные из массива переменных в текущую запись

GATHER FROM ArrayName | MEMVAR | NAME ObjectName

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

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

COPY TO ARRAY ArrayName [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [Scope] [FOR lExpr1] [WHILE lExpression2] [NOOPTIMIZE]

4. Команды вычислений по данным таблицы

CALCULATE eExpressionList [Scope] [FOR lExpression1] [WHILE lExpression2][TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE] [IN nWorkArea | cTableAlias]

где для eExpressionList – можно использовать следующие функции:

AVG(nExpression) – среднее значение CNT( ) – количество MAX(eExpression) – максимальное значение MIN(eExpression) – минимальное значение

NPV(nExpression1, nExpression2 [, nExpression3])

– банковская функция STD(nExpression) – стандартное отклонение

SUM(nExpression) – сумма

VAR(nExpression) – статистическая функция

SUM [eExpressionList] [Scope] [FOR lExpression1]

[WHILE lExpression2][TO MemVarNameList |

TO ARRAY ArrayName]

[NOOPTIMIZE]

AVERAGE [ExpressionList]

[Scope] [FOR lExpression1]

 

76

[WHILElExpression2][TO VarList |

TO ARRAY ArrayName] [NOOPTIMIZE]

COUNT [Scope] [FOR lExpression1] [WHILE lExpression2]

[TO VarName][NOOPTIMIZE]

5.Математические функции

^* / + – ABS() ACOS() ASIN() ATAN() ATN2() AVG() BINTOC() BITAND() BITCLEAR() BITLSHIFT() BITRSHIFT() BITSET() BITTEST() BITXOR() CEILING() COS() COUNT() DTOR() EXP() FLOOR() FV() INT() LOG() LOG10() MAX() MIN() MOD()

MTON() NTOM() PAYMENT() PI() PV() RAND() ROUND(,) RECCOUNT() RECNO() RTOD() SIGN() SIN() SQRT() SUM() TAN() VAL()

6.Функции для операций с текстовыми данными

+– ASC() ALLTRIM() AT(,,) ATC(,,) CHR() CHRTRAN(,,) CTOBIN() CURSORTOXML(,,,,) CURVAL(,) FILETOSTR() GETPEM(,) GETWORDCOUNT(,) GETWORDNUM(,) LEFT(,) LEN() LOWER() LTRIM() MAX(,) MIN(,) OCCURS(,) OEMTOANSI() OLDVAL(,) PADC(,) PADL(,) PADR(,) PEMSTATUS(,,) PROPER() RAT(,,) REPLICATE(,) RIGHT(,) RTRIM() SOUNDEX() SPACE() STR(,,) STREXTRACT(,,,,) STRTRAN(,,) STUFF(,,,) SUBSTR(,,) TRANSFORM(,) TRIM() TYPE() UPPER() $ AT_C(,,) ATCC(,,) CHRTRANC(,,) LEFTC(,) LENC( ) RATC(,,) RIGHTC(expC,) TEXTMERGE(,,,)

STRCONV(,) STUFFC(,,,) SUBSTRC(,,)

7. Функции для операций с данными типа дата и время

{date} CDOW() CMONTH() CTOD() CTOT() DATE() DATETIME() DAY() DMY() DOW() DTOC() DTOS() DTOT() GOMONTH(,) HOUR() MAX(,) MDY() MIN(,) MINUTE() MONTH() QUARTER() SEC() SECONDS() TIME() TTOC() TTOD() WEEK() YEAR()

8.Логические функции

<> = <> <= >= == .T. .F. .NULL. NOT AND OR BETWEEN(,,) DELETED() EMPTY() IIF(,,) INLIST(,,) NVL(,) SEEK(,,)

77

Глава 3. Основы работы с базами данных

всистеме Microsoft Access

3.1.Общая характеристика системы

Система Microsoft Access является одним из компонентов Microsoft Office и предназначена для работы с базами данных. Основные возможности системы при работе с базами данных приведены в табл. 3.1.

Таблица 3.1 Спецификации системы Microsoft Office Access 2003

 

Атрибут

 

Максимальное значение

 

База данных

 

Размер файла базы данных (.mdb)

 

2 Гбайт за вычетом места, необхо-

 

 

 

димого системным объектам

 

Число объектов в базе данных

 

32 768

 

Модули (включая формы и отчеты,

 

1 000

 

свойство Наличие модуля (HasModule)

 

 

 

которых имеет значение True)

 

 

 

Число знаков в имени объекта

 

64

 

Число знаков в пароле

 

14

 

Число знаков в имени пользователя или

 

20

 

имени группы

 

 

 

Число одновременно работающих

 

255

 

пользователей

 

 

 

Таблица

 

Число знаков в имени таблицы

 

64

 

Число знаков в имени поля

 

64

 

Число полей в таблице

 

255

 

 

 

2048 (фактическое число может

 

 

 

 

Число открытых таблиц

 

быть меньше из-за внутренних таб-

 

 

 

лиц, открываемых Microsoft Access)

 

Размер таблицы

 

2 Гбайт за вычетом места, необхо-

 

 

 

 

димого системным объектам.

 

 

 

 

Число знаков в текстовом поле

 

255

 

 

 

 

 

65 535 при вводе данных через ин-

 

 

 

 

Число знаков в поле MEMO

 

терфейс пользователя;

 

 

1 Гбайт для хранения знаков при

 

 

 

 

 

 

программном вводе данных.

 

Размер поля объекта OLE

 

1 Гбайт

78

 

 

 

 

Продолжение 1 табл. 3.1

 

 

 

 

 

 

 

Атрибут

 

 

Максимальное значение

 

 

Число индексов в таблице

 

32

 

 

 

Число полей в индексе

 

10

 

 

 

Число знаков в сообщении об ошибке

 

255

 

 

Число знаков в условии на значение за-

 

2 048

 

 

писи

 

 

 

 

 

 

 

Число знаков в описании таблицы или

 

255

 

 

поля

 

 

 

 

 

 

 

 

Число знаков в записи (кроме полей

 

2 000

 

 

MEMO и полей объектов OLE)

 

 

 

 

 

 

 

 

Число знаков в значении свойства поля

 

255

 

 

Запрос

 

 

 

Число установленных связей

 

32

на одну таблицу за вычетом

 

 

 

 

числа индексов, находящихся в

 

 

 

 

таблице для полей или сочетаний

 

 

 

 

полей, не участвующих в связях

 

 

Число таблиц в запросе

 

32

 

 

 

Число полей в наборе записей

 

255

 

 

Размер набора записей

 

1 Гбайт

 

 

Предел сортировки

 

255 знаков в одном или нескольких

 

 

 

 

полях

 

 

Число уровней вложения запросов

 

50

 

 

 

Число знаков в ячейке на бланке запро-

 

1 024

 

 

са

 

 

 

 

 

Число знаков для параметра в запросе с

 

255

 

 

параметрами

 

 

 

 

 

Число операторов AND в предложении

 

99

 

 

 

WHERE или HAVING

 

 

 

 

 

Число знаков в инструкции SQL

 

приблизительно 64 000

 

 

Форма и отчет

 

 

Число знаков в надписи

 

2 048

 

 

Число знаков в поле

 

65

535

 

 

Ширина формы или отчета

 

22

дюйма (55,87 см)

 

 

Высота раздела

 

22

дюйма (55,87 см)

 

 

Высота всех разделов плюс заголовки

 

200 дюймов (508 см)

 

 

разделов (в режиме конструктора )

 

 

 

 

 

Число уровней вложения форм или от-

 

7

 

 

 

четов

 

 

 

 

 

Число полей или выражений, которые

 

10

 

 

 

можно отсортировать или сгруппиро-

 

 

 

 

 

вать в отчете

 

 

 

 

 

 

79

 

 

 

 

 

 

 

 

Продолжение 2 табл. 3.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Атрибут

 

Максимальное значение

 

 

 

Число заголовков и примечаний в от-

 

1 заголовок/примечание отчета; 1

 

 

 

чете

 

 

 

заголовок/примечание страницы;

 

 

 

 

 

 

 

10 заголовков/примечаний групп

 

 

 

Число печатных страниц в отчете

 

65 536

 

 

 

 

 

Число элементов управления и разде-

 

754

 

 

 

 

 

лов, которые можно добавить за время

 

 

 

 

 

 

 

существования формы или отчета

 

 

 

 

 

 

 

Число знаков в инструкции SQL, ра-

 

32 750

 

 

 

 

 

ботающей в качестве свойства Источ-

 

 

 

 

 

 

 

ник записей (RecordSource) или Ис-

 

 

 

 

 

 

 

точник строк (RowSource) формы,

 

 

 

 

 

 

 

отчета или элемента управления (оба

 

 

 

 

 

 

 

.mdb и .adp)

 

 

 

 

 

 

 

 

 

 

 

Макрос

 

 

 

 

 

Число макрокоманд в макросе

 

999

 

 

 

 

 

Число знаков в условии

 

255

 

 

 

 

 

Число знаков в комментарии

 

255

 

 

 

 

 

Число знаков в аргументе макроко-

 

255

 

 

 

 

 

 

 

 

 

 

 

манды

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В табл. 3.2 приведены сведения о типах данных, которые могут иметь

 

 

поля в таблицах.

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 3.2. Типы данных системы

 

 

 

 

 

 

 

 

 

 

 

Тип данных

 

Использование

 

 

 

Размер

 

 

Текстовый

 

Текст, состоящий из любых симво-

 

До 255 символов

 

 

 

 

 

лов

 

 

 

 

 

 

Поле MЕМО

 

Длинный текста, например, приме-

 

До 64 000 симво-

 

 

 

 

 

чания или описания.

 

 

 

лов

 

 

Числовой

 

Числовые данные

 

 

 

1, 2, 4 или 8 бай-

 

 

(Байт,

 

 

 

 

 

тов. 16 байтов

 

 

Целое,

 

 

 

 

 

только для кодов

 

 

Длинное целое,

 

 

 

 

 

 

 

 

 

 

 

 

репликации

 

 

Одинарное с пла-

 

 

 

 

 

 

 

 

 

 

 

 

(GUID)

 

 

вающей точкой,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Двойное с плаваю-

 

 

 

 

 

 

 

щей точкой,

 

 

 

 

 

 

 

 

Код репликации,

 

 

 

 

 

 

 

 

Действительное)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

80