Анализ экономических показателей Японии 1960-1992 гг

Страница 2

Запрос в режиме конструктора будет выглядеть следующим образом: Рис. 3

Готовый запрос будет иметь следующий вид:

На этом заканчивается часть работы, выполняемая в Microsoft Access, и начинается непосредственное создание программы в Visual Basic, которая выполняла бы необходимые по условию задачи операции над данными, размещенными в таблицах Microsoft Access.

В Visual Basic начинаем новый проект, выбирая в меню New File пункт New Project. Выделяем первую форму и в окне Properties в графе Caption устанавливаем для первой формы название ‘Считывание данных и нахождение средних значений’, при этом имя первой формы – Form1.

В первой форме создаем элемент DataControl с именем Data1.В окне свойств в графе Caption устанавливаем название ‘Исходные данные’. В графе Connect - значение Access. В графе DatabaseName указываем путь к файлу, содержащему таблицу Microsoft Access. В графе RecordSource указываем название таблицы Microsoft Access, содержащей исходные данные по Японии.

Затем в первой форме создаем 7 элементов TextBox – текстовых полей – по количеству столбцов в исходной таблице. Над каждым текстовым полем размещаем элементы Label – метки, содержащие названия каждого столбца. В данном случае это год, размер ВВП, цены на нефть, размер потребления нефти, размер внешнеторгового оборота, объем промышленного производства и доход на душу населения. У каждого текстового поля в окне свойств в графе DataSource устанавливаем значение Data1, а в графе DataField – выбираем название того столбца исходной таблицы, который отображает данное текстовое поле. Так в первом текстовом поле будет значение ‘Год’, во втором – ‘Размер ВВП’ и т. д.

Таким образом, мы установили связь Visual Basic с таблицей в Microsoft Access.

Посредством этой связи мы можем осуществлять считывание данных из таблицы для выполнения необходимых операций, предусмотренных заданием. При запуске программы в текстовых полях будут отображаться данные таблицы Microsoft Access, а, используя стрелки на элементе Data1, можно производить прокрутку данных, так чтобы они последовательно появлялись в текстовых полях. Для того, чтобы после запуска программы пользователь не мог ввести в текстовые поля никакую информацию, то есть для «защиты» текстовых полей от посторонних записей, необходимо в процедуру Text1_Change () ввести следующий код:

Text1.Enabled = False

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

Согласно заданию, необходимо вычислить средние значения данных по Японии за четырехлетние периоды, начиная с 1960 года. Прежде, чем написать программу, позволяющую совершать подобные операции, необходимо создать элемент управления, который будет отвечать за исполнение этих операций. В данном случае наиболее наглядным и удобным в использовании будет элемент CommandButton. Выделив этот элемент, в окне свойств в графе Caption заменим значение Command1 на ‘Расчет средних значений данных за 4-летние периоды, начиная с 1960 года’. После запуска программы нажатие на эту кнопку будет приводить в действие механизм вычисления средних значений данных, которые будут отображаться в текстовых полях.

Прежде, чем выполнять вычисление средних значений, необходимо считать данные из текстовых полей, которые их содержат. Для этого надо запустить цикл от 1 до 32 (количество записей в каждом столбце таблицы), который бы вводил значения из текстовых полей в массивы. Так как необходимо, чтобы описанные выше операции выполнялись при нажатии на кнопку, то в процедуру Command1_Click () введем код:

For i = 1 To 32

mag(i) = Text1.Text

mas(i) = Text2.Text

ma(i) = Text3.Text

maq(i) = Text4.Text

maw(i) = Text5.Text

mar(i) = Text6.Text

maz(i) = Text7.Text

Data1.Recordset.MoveNext

Next i

i – переменная, mag(i), mas(i), ma(i), maq(i), maw(i), mar(i) и maz(i) – соответственно массивы со значениями года, размера ВВП, цены на нефть, размера потребления нефти, размера ВТО, объема промышленного производства и размером дохода на душу населения. Запись Data1.Recordset.MoveNext означает, что после выполнения считывания данных за первый год Data1 передвинет данные в текстовых полях на одну вперед и считывание будет проводиться уже за следующий год и т. д.

Но может случиться так, что после запуска пользователь осуществит нажатие один или несколько раз на элемент Data1 до того, как нажать на командную кнопку. Это приведет к сбою программы, потому что в данном случае в коде, приведенном выше, запись, находящаяся в текстовом поле будет восприниматься как первая, а так как записей всего 32, то это приведет к невозможности завершения цикла. Чтобы избежать этого, перед данным кодом поместим строку:

Data1.Recordset.MoveFirst

Эта запись обеспечит передвигание данных в текстовых полях к первой записи перед выполнением считывания.

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

j = 1

For i = 1 To 32 Step 4

h(j) = (mas(i) + mas(i + 1) + mas(i + 2) + mas(i + 3)) / 4

q(j) = (ma(i) + ma(i + 1) + ma(i + 2) + ma(i + 3)) / 4

w(j) = (maq(i) + maq(i + 1) + maq(i + 2) + maq(i + 3)) / 4

p(j) = (maz(i) + maz(i + 1) + maz(i + 2) + maz(i + 3)) / 4

r(j) = (mar(i) + mar(i + 1) + mar(i + 2) + mar(i + 3)) / 4

x(j) = (maw(i) + maw(i + 1) + maw(i + 1) + maw(i + 3)) / 4

j = j + 1

Next i

j – переменная; массивы h(j), q(j), w(j), p(j), r(j) и x(j) – соответственно массивы, содержащие средние значения данных за периоды с 1960 по 1963 год, с 1964 по 1967 год и т. д.

Запись For i = 1 To 32 Step 4 означает, что в каждый последующий массив ввод данных будет производиться с элемента, номер которого на 4 больше номера первого элемента предшествующего массива, то есть в первый массив – с первого по четвертый элемент, во второй – с пятого (номер которого на 4 больше номера первого) по восьмой и т. д. до 32.

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

For i = 1 To 8

List2.List(i - 1) = h(i)

List3.List(i - 1) = q(i)

List4.List(i - 1) = w(i)

List5.List(i - 1) = p(i)

List6.List(i - 1) = r(i)

List7.List(i - 1) = x(i)

Next i

После запуска программы при нажатии командной кнопки в списках появятся средние значения данных за 4-летние периоды, начиная с 1960 года.

Согласно заданию, после рассчета средних значений, необходимо занести их в файл. Для удобства пользователя сделаем так, чтобы он имел возможность сам выбирать тот файл, в который будут занесены средние значения. Для этого разместим в первой форме элементы DriveListBox, DirListBox и FileListBox, отображающие соответственно диск, каталог и файл для записи данных. С помощью этих элементов пользователь после запуска программы выберет файл для записи средних значений данных. После того, как он сделает это, необходимо произвести запись в файл, указанный пользователем, средних значений показателей, рассчитанных до этого. Создадим командную кнопку, при нажатии на которую средние значения записывались бы в файл. Для нее в окне свойств в графе Caption установим значение ‘Запись средних значений в файл’. Введем в процедуру Command2_Click () следующий код: