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

лабы / gorev_akhajan_makakshiripov_ehffektivnaja_rabota_s_subd

.pdf
Скачиваний:
52
Добавлен:
26.04.2015
Размер:
3.17 Mб
Скачать

квадратных скобках нужных номеров строк и (или) столбцов. Перед использованием массивов в Visual FoxPro их надо объявить командой

DIMENSION ArrayName1(nRows1 [, nColumns1]) [, ArrayName2(nRows2 [, nColumns2])] ...

Каждый массив может содержать не более 65000 элементов, то есть предельная размерность двумерного массива может составить 254x255, 1000x65 и т. п. В последнем случае nRows1 =1000 и nColumns1=65, если значение nColumns1 не опpеделено, то массив одномеpный. После объявления массива по умолчанию всем его элементам присваивается логический тип данных со значением .F..

В Visual Basic задать массив можно в команде Dim, указав его размерность в параметре

Subscripts.

Для задания нужного типа данных, а это относится и к переменным, в Visual FoxPro необходимо использовать команду

STORE Expression TO MemVarList | ArrayList

или использовать присвоение

MemVar | Array = Expression

= Пpи указании идентификатоpа массива без аpгументов указанное значение Expression пpисваивается всем элементам массива. Например:

DIMENSION aMembers(4,2)

STORE 5 TO aMembers

В Visual Basic такая же процедура будет выглядеть следующим образом (нам придется использовать цикл, о чем мы будем говорить в дальнейшем):

Dim aMembers(4,2), nX As Integer For nX = 0 To 4

aMembers(nX) = 5 Next nX

Для определения переменной типа даты в Visual FoxPro можно использовать следующую команду, которая одновременно присвоит ей нулевое значение:

STORE CTOD('. .') TO dDate

или

STORE {} TO dDate

Для присвоения конкретного значения лучше воспользоваться вариантом с фигурными скобками, например:

SET DATE GERMAN

STORE {01.01.91} TO dDate

Для форматирования значения даты в Visual FoxPro удобно использовать установочную команду SET DATE.

В Visual Basic присвоение значения даты можно выполнить следующим образом:

Dim dToday As Date dToday = #1/11/96#

А для форматирования даты надо использовать функцию

Format(Expression [, Format [, FirstDayOfWeek [, FirstWeekOfYear]]])

Ⱦɚɧɧɚɹ ɜɟɪɫɢɹ ɤɧɢɝɢ ɜɵɩɭɳɟɧɚ ɷɥɟɤɬɪɨɧɧɵɦ ɢɡɞɚɬɟɥɶɫɬɜɨɦ %RRNV VKRS Ɋɚɫɩɪɨɫɬɪɚɧɟɧɢɟ ɩɪɨɞɚɠɚ ɩɟɪɟɡɚɩɢɫɶ ɞɚɧɧɨɣ ɤɧɢɝɢ ɢɥɢ ɟɟ ɱɚɫɬɟɣ ɁȺɉɊȿɓȿɇɕ Ɉ ɜɫɟɯ ɧɚɪɭɲɟɧɢɹɯ ɩɪɨɫɶɛɚ ɫɨɨɛɳɚɬɶ ɩɨ ɚɞɪɟɫɭ piracy@books-shop.com

Например:

dDate = Format(dToday, "dd.mm.yy")

Возвращает значение переменной dToday в виде 01.11.96.

Глобальные переменные (public) будут сохранять свои значения во всех программных файлах и вызываемых ими процедурах. Для объявления переменных и элементов массива глобальными в Visual FoxPro используется команда

PUBLIC MemVarList | [ARRAY] ArrayName1(nRows1 [, nColumns1]) [, ArrayName2(nRows2 [,

nColumns2])]...

В Visual Basic такая команда будет выглядеть аналогично команде Dim

Public VarName [([Subscripts])] [As [New] Type][, VarName [([Subscripts])] [As [New] Type]] ...

Лишь после объявления глобальным переменным можно присвоить какие-либо значения. Внутренние переменные (local) действуют только в пределах процедуры или функции, в которых были созданы. К ним нельзя обратиться из программы или функции ни более высокого, ни более низкого уровня. Объявить переменные внутренними в Visual FoxPro можно командой

LOCAL MemVarList | [ARRAY] ArrayName1(nRows1 [, nColumns1]) [, ArrayName2(nRows2 [,

nColumns2])] ...

В Visual Basic для этой цели можно использовать команду Dim.

Вы должны сначала объявить переменные или массивы внутренними и только потом присвоить им необходимые значения. После выхода из процедуры или функции, в которой были созданы внутренние переменные, они будут удалены из памяти.

Региональные переменные или массивы (regional) могут использоваться только в Visual FoxPro. Они подобны локальным и объявляются с помощью команды

REGIONAL MemVarList

Перед командой помещается директива

#REGION nRegionNumber

с указанием номера региона nRegionNumber (от 0 до 31), в котором действуют переменные, перечисленные в списке MemVarList. В регионе с другим номером та же переменная может иметь другое значение.

4.2. Как написать программу

В этом параграфе мы научимся составлять очень простые программы, которые будут работать

в

СУБД Visual FoxPro;

Visual Basic;

СУБД Access.

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

Чаще всего самым трудным бывает первый шаг. Не будем искать трудностей и просто избежим этого первого шага. Поручим это самой СУБД, пусть сама напрягает свои "электронные мозги".

Обратите внимание, что при выполнении каких-либо действий в интерфейсе Visual FoxPro в окне Command автоматически записывается соответствующая команда. Если несколько последовательных команд перенести в программный файл, то получится программа. Если ее запустить, несколько действий, которые мы до этого делали с помощью меню и соответствующих

www.books-shop.com

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

Если мы захотим из таблицы SPPOS.DBF, содержащей список поставщиков, прочитать данные, относящиеся к фирме с названием "Компьютерное образование", мы должны из меню File выбрать команду Open, установить тип файла и из списка выбрать SPPOS.DBF. Из меню Database выбрать команду Browse и найти запись, относящуюся к указанной фирме.

Программно тот же результат можно получить, набрав в окне Command следующие команды:

USE Sppos

BROWSE

LOCATE FOR Company = "Компьютерное образование"

Если приведенная выше последовательность команд будет записана в файле, мы получим простейшую программу. Это может быть сделано несколькими способами. Например, можно из меню File выбрать команду New, установить тип файла Program. Откроется окно Редактора FoxPro. В нем можно набрать указанные строчки или скопировать их из окна Command. При закрытии окна редактирования будет необходимо указать имя файла, которое в дальнейшем и будет являться именем программы.

Для изменения или дополнения программы необходимо ее открыть с помощью команды Open в меню File.

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

Откройте какой-либо файл с программой или создайте новый файл. Выберите команду Options в меню Tools. В появившемся диалоговом окне найдите вкладку Edit. Доступные установки для редактора видны из рис. 4.1.

Рис. 4.1.

При первом запуске программы и в последующем, при ее изменении, FoxPro компилирует исходный код программы в так называемый препроцессорный код, или "p-код", который

www.books-shop.com

выполняется во много раз быстрее интерпретируемой программы. Файлы с "p-кодом" получают другое расширение. Обратите внимание на очень удобную возможность компиляции программы перед ее сохранением. Включение этой опции позволяет сразу определить синтаксические ошибки, выявляемые на этом этапе, - недостаток или отсутствие запятых, неправильное написание ключевых слов и т. д.

В связи с тем, что редактор Visual FoxPro используется не только для работы с файлами программ, но и вообще для редактирования текстовых данных, например в полях примечаний, то перечень доступных опций в диалоговом окне Options зависит от типа окна, которое было активным перед его вызовом. Например, если активным окном было окно с данными поля примечаний, то внешний вид окна Options будет таким, как это видно на рис. 4.2. Естественно, при этом некоторые опции, например компиляции, будут недоступны.

Рис. 4.2.

При работе с редактором мы можем использовать команды, которые располагаются в меню Edit и Format. Еще удобнее использовать клавиатурные комбинации, перечень которых приведен в табл. 4.3. Не забудьте также о кнопках на стандартной панели инструментов. При наборе программы в редакторе очень удобно использовать макросы.

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

В Visual FoxPro макрос можно записать с помощью соответствующей команды в меню Tools. Появляющееся при этом диалоговое окно представлено на рис. 4.3.

www.books-shop.com

Рис. 4.3.

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

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

Рис. 4.4.

Таблица 4.3. Комбинации клавиш, используемые при работе с редактором

Комбинация

Пункт

Выполняемое действие

клавиш

меню

 

Ctrl+A

Select All

Выделить весь текст в окне

 

 

редактора

Ctrl+C

Copy

Скопировать выделенный текст

Ctrl+F

Find

Найти

Ctrl+L

Replace

Заменить

Ctrl+R

Redo

Вернуть отмененное действие

Ctrl+V

Paste

Вставить фрагмент текста из

 

 

буфера в место нахождения

 

 

курсора

Ctrl+W

-

Закрыть редактор и сохранить

 

 

все сделанные изменения

Ctrl+X

Cut

Вырезать выделенный текст

Ctrl+Z

Undo

Отменить сделанное действие

Ctrl+Home

-

Переместить курсор в начало

www.books-shop.com

 

 

текста

Home

-

Переместить курсор в начало

 

 

строки

Ctrl+End

-

Переместить курсор в конец

 

 

текста

End

-

Переместить курсор в конец

 

 

строки

В качестве примера мы с вами создадим макрос для автоматического набора какой-нибудь сложной команды. Пусть это будет команда задания цикла FOR...NEXT. Такие структурные команды чаще всего вызывают ошибки, так как тело цикла может занимать десятки строк и, разбираясь в его перипетиях, программист забывает о необходимости закрытия цикла. Присвоим этому макросу клавиатурную комбинацию Ctrl+F. Тогда по умолчанию он получит имя ctrl_f. Не следует пытаться присвоить макросу клавиатурную комбинацию, которая уже используется в Visual FoxPro. Теперь в поле Macro Contents наберем такой текст:

FOR{ENTER}{ENTER}NEXT

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

Теперь, работая в редакторе, мы всегда можем нажать клавиши Ctrl+F и в программе у нас автоматически появятся следующие три строчки:

FOR

NEXT

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

PROCEDURE ProcedureName

ивыполняется, пока не будет выполнено одно из следующих условий:

Еще раз встретится слово PROCEDURE.

Будет обнаружена команда RETURN - возвращение в предыдущую программу.

Будет выдана команда CANCEL - прерывание работы программы.

Будет выдана команда QUIT - выход из СУБД.

Встретится новая команда DO для запуска другой программы.

Будет достигнут конец файла.

ВFoxPro аналогично подпрограмме трактуется понятие пользовательской функции, которая начинается с ключевого слова

FUNCTION FunctionName

и в отличие от процедуры, может вернуть необходимые значения в вызывающую программу. Имеются четыре способа вызвать функцию:

1.Присвоить возвращаемое значение переменной. Например, следующая строка кода запоминает текущую системную дату в переменной dToday:

dToday = DATE()

2.Включить вызов функции в команду. Например, следующая команда устанавливает по умолчанию каталог, имя которого возвращает функция GETDIR():

SET DEFAULT TO GETDIR()

www.books-shop.com

3.Напечатать возвращаемое значение в активное окно: ? TIME()

4.Вызвать функцию без запоминания где-либо возвращаемого значения: SYS(2002)

Для прерывания выполнения программы служит оператор

RETURN [Expression | TO MASTER | TO ProgramName]

который возвращает управление в вызывающую программу, и в ней выполняется следующая команда после вызывающей; если указана опция TO MASTER, то управление возвращается на самый верхний уровень вызывающей программы, а эта же программа с опцией TO ProgramName передает управление в указанную программу. При использовании в функции команда автоматически возвращает .T., если не указано другое выражение на месте Expression.

RETRY

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

Создайте новый программный файл и наберите в редакторе приведенный ниже текст. В этой программе объявляется массив, элементы которого принимают значения от 1 до 10. Каждое присвоение значения сопровождается появлением на экране сообщения с указанием присвоенной величины. Посмотрите на сообщения, выводимые этой программой на экран.

* Пример простейшей программы

DIMENSION aSampleArray(10) FOR nItem = 1 TO 10

aSampleArray(nItem) = nItem = Append_proc()

NEXT

FUNCTION Append_proc

? "В массив добавлено новое значение " ?? nItem

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

Теперь посмотрим на Visual Basic. Это средство разработки настолько сфокусировано на визуальных возможностях разработки программ, что написать вручную несколько строк кода, запустить их на выполнение и тут же увидеть результат не так просто для начинающего программиста, как в Visual FoxPro. Однако попробуем это сделать.

Начнем с задания команды Options меню Tools. В появившемся диалоговом окне настройки конфигурации Visual Basic выберем вкладку Project (рис. 4.5). В раскрывающемся списке Startup Form вместо значения, установленного по умолчанию, - Form1, выберем Sub Main. Значение Form1 обеспечивает запуск в качестве главной программы визуальной формы с этим именем по умолчанию. Значение Sub Main позволяет в качестве запускаемой программы использовать процедуру.

www.books-shop.com

Рис. 4.5.

Создадим в проекте программный модуль путем выполнения команды Module в меню Insert. Потом в этом же меню выполним команду Procedure. В появившемся диалоговом окне, показанном на рис. 4.6, напишем имя создаваемой процедуры - Main, для типа процедуры выберем Sub, а для диапазона действия - Public. После нажатия кнопки OK в окне программного модуля появится шаблон, готовый для написания программного кода.

Рис. 4.6.

www.books-shop.com

Здесь следует заметить, что редактор в Visual Basic по своим функциальным возможностям и принципам работы с текстом программы похож на редактор Visual FoxPro. В Visual Basic нет макросов, зато редактор обеспечивает выделение цветом ключевых слов, строк с ошибками и т. д. Цвет в редакторе существенно помогает избежать случайных ошибок. При этом вы можете сами устанавливать цвет для различных ситуаций, как это видно из рис. 4.7, на котором показано диалоговое окно Options, открытое на вкладке Editor.

Рис. 4.7.

Теперь мы можем попробовать создать простейшую программу по аналогии с той, которую мы написали в Visual FoxPro. В окне программного модуля в раскрывающемся списке Proc выберите пункт (declarations), как это показано на рис. 4.8.

www.books-shop.com

Рис. 4.8. Пример простейшей программы в Visual Basic

Наберите следующую строчку для объявления используемого массива и переменной как целых чисел:

Dim aSampleArray(10), nItem As Integer

Переключитесь в раскрывающемся списке Proc на пункт Main и наберите следующий текст:

Public Sub Main() For nItem = 1 To 10

aSampleArray(nItem) = nItem Append_proc

Next End Sub

Теперь создадим новую процедуру с помощью команды Procedure меню Insert и в ней запишем код для функции, которая будет отображать процесс заполнения массива:

Private Function Append_proc()

Debug.Print nItem

End Function

Запустим нашу программу на выполнение командой Start в меню Run. Можно воспользоваться

исоответствующей кнопкой на панели инструментов или просто нажать клавишу F5.

Вотличие от Visual FoxPro в Visual Basic нельзя направить вывод результатов выполнения программы в главное окно. Его просто нет. Сначала надо создать какое-то окно, обычно в виде формы, а затем уже в него направлять вывод данных. Чтобы не усложнять нашу задачу, мы сознательно выбрали простейший вариант, используя для вывода окно отладки (Debug Window). Для этого перед командой Print необходимо указать через точку Debug. Для того чтобы увидеть результат, откройте окно отладки командой Debug Window в меню View.

Обратите внимание, что коды программ в Visual FoxPro и в Visual Basic очень похожи; код Visual Basic может легко читаться программистом, знающим только Visual FoxPro, и наоборот. В то же время существуют и определенные различия, которые с увеличением сложности программы разрастаются. Посмотрите на команды вызова функции и объявления переменных - в Visual Basic

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

Что касается СУБД Access, то, как мы уже говорили, многие воспринимают ее как типичное средство создания личных информационных систем, предусматривающее использование только имеющихся в Access диалоговых средств. Поэтому пользователи часто останавливаются на результатах, достигнутых с помощью визуальных средств разработки, и считают, что самостоятельное создание таблиц, не говоря уже о создании форм и отчетов, это нечто из ряда вон выходящее. На самом деле все не совсем так, и стоит относиться к Мастерам как к

www.books-shop.com

Соседние файлы в папке лабы