Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа
Программное создание базы данных с результатами расчетов
Цель работы
Задание для самостоятельной работы
Изучить приведенные методические указания. Написать приложение, которое считает по заданной формуле массив данных и заносит эти данные в базу данных и в таблицу Grid. В программе - создать базу данных, создать таблицы, поля, и заполнить базу результатами расчетов.
Содержание отчета
Методические указания
Создание Базы Данных
Visual Basic содержит два объекта доступа к данным BDEngine и Workspace. Для создания БД применяется метод CreateDatabase, который является частью объекта Workspace. Рабочая область (Workspace) создается при каждом доступе к Jet-машине. При необходимости можно открывать другие рабочие области. Если при работе с функциями не указывается ID-номер рабочей области, то подразумевается рабочая область по умолчанию.
При помощи оператора Dim (или Public для модуля) описываем переменную NewDB, как объект БД, создаем рабочую область и с помощью метода CreateDatabase создаем Базу Данных.
'Объявляем необходимые переменные
Dim NewDB As Database
Dim NewWs As WorkSpace
Dim strDBPath As String
'Устанавливаем путь к создаваемой БД с указанием ее имени (MyDB.mdb)
StrDBPath = “C:\ExamplDB\MyDB.mdb”
Совет. Для получения имени файла БД и пути к ней можно использовать диалоговое окно Open, эл. управления CommonDialog.
Совет. Перед тем, как создавать базу, можно проверить, а не создана ли она уже в той папке, где вы хотите её создать:
'Проверка на существование БД
If Dir(App.Path & "\" & strDBPath, vbNormal) = "" Then
тут вставьте команды на создание рабочего пространства и создание Базы Данных:
'Создаем рабочее пространство
Set NewWs = DBEngine.Workspaces(0)
'Создаем Базу Данных
Set NewDB = NewWs.CreateDatabase (strDBPath, dbLangGeneral)
Константа dbLangGeneral является обязательным параметром метода CreateDatabase . Она описывает язык и кодовую страницу для американских компьютеров. Для русской версии употребляют dbLangCyrillic:
Set NewDB = NewWs.CreateDatabase (strDBPath, dbLangCyrillic, lngDBOpts)
End If
Пока что созданный файл пуст и с ним ничего нельзя делать пока не будут созданы таблицы.
Создание Таблиц
Для создания новой таблицы необходимо определить новый объект TableDef (Table Definition описание таблицы). Объект TableDef содержит всю необходимую информацию для определения таблицы БД. Он описывает в БД тип информации, хранимой в таблице и некоторые факультативные свойства этой таблицы.
Свойства объекта TableDef устанавливаются при создании таблицы и их значения различаются для собственных таблиц Microsoft Jet и присоединенных таблиц.
Следующие операторы показывают, как создать объект TableDef и определить имя таблицы:
'Объявляем необходимые переменные
Dim NewTbl As TableDef
Dim strDBPath As String
'Создаем таблицу
Set NewTbl = NewDB.CreateTableDef (Name)
Свойство таблицы Name является одним из свойств объекта TableDef, и обычно это свойство единственное, которое необходимо для создания таблицы БД Access.
При подключении к БД внешней таблицы можно использовать некоторые другие свойства (Attributes, Connect, SourceTableName и т.д рассматривать мы их не будем). Эти свойства можно указывать как последовательные параметры метода CreateTableDef. Можно также определять и другие свойства, давая им некоторые значения. Эти операторы должны следовать за методом CreateTableDef.
После выполнения вышеприведенного кода вы создадите таблицу, но это не все - необходимо описать хотя бы одно поле, для того чтобы действительно таблица появилась в БД.
Таблица может иметь одно или множество полей.
Создание полей
Описание полей
Поля таблицы описываются с помощью объекта Field, который содержит всю информацию о поле таблицы данных. Для каждого поля следует указать имя и тип. В зависимости типа поля описание других свойств может быть обязательным или нет. Существуют 17 свойств объекта Field. С их помощью можно определять размер и тип поля, и так же является это поле «родным» Microsoft Jet или это присоединенное поле внешней базы. Visual Basic распознает 14 различных типов полей данных.
Типы полей данных
Тип поля данных |
Размер |
Тип данных в VB |
Комментарии |
BOOLEAN |
1 |
Boolean |
Хранит только 0 или 1 |
BYTE |
1 |
Integer |
Хранит только от 0 до 255 |
COUNTER |
8 |
Long |
Автоматически наращиваемый тип Long |
CURENCY |
8 |
Curency |
15 позиций слева от десятичной точки и 4 справа |
DATETIME |
8 |
Date/Time |
Дата хранится слева от деc. Точки, а время - справа |
DOUBLE |
8 |
Double |
|
GUID |
16 |
(нет) |
Используется для хранения глобально уникальных идентификаторов |
INTEGER |
2 |
Integer |
|
LONG |
8 |
Long |
|
LONGBINARY |
V |
(нет) |
Используется для OLE объектов |
MEMO |
V |
String |
Длина около 1,2 Гб |
SINGLE |
4 |
Single |
|
TEXT |
V |
String |
Ограничено 255 ю байтами |
Многие из типов полей данных понятны и поэтому чуть подробнее опишем только некоторые из них.
Поля типа LONGBINARY предназначены для хранения изображений и OLE объектов;
Поле BOOLEAN чаще всего применяется для хранения результатов выбора в связанных флажках, где 1 True, а 0 False. Но будьте осторожны при вводе информации в эти поля, т.к. любое отличное от 0 число будет преобразовываться в 1;
Поле типа BYTE воспринимает только числа от 0 до 255, любое другое значение вызовет ошибку 524;
Тип поля COUNTER (счетчик) является автоматически наращиваемым и очень часто применяется в качестве уникального первичного ключа. Оно предназначено только для чтения;
Поле типа GUID используется для хранения 128 разрядного числа специального типа;
Поля создаются с помощью метода CreateField. Имеются два способа создания полей.
Первый способ
С помощью метода CreateField определяем имя поля, тип и размер.
'Объявляем переменные
Dim F1 As Field, F2 As Field, F3 As Field
'Устанавливаем имя, тип и размер поля
Set F1 = NewTbl.CreateField (“FirstName”, dbText, 20)
Set F2 = NewTbl.CreateField (“LastName”, dbText, 20)
Set F3 = NewTbl.CreateField (“Age”, dbInteger)
После того как поля, включаемые в таблицу, описаны, при помощи метода Append объекта TableDef, эти поля добавляются к таблице.
NewTbl.Fields.Append F1
NewTbl.Fields.Append F2
NewTbl.Fields.Append F3
Второй способ
Можно вызвать метод CreateField без всяких параметров, а имя, тип и размер установить потом при помощи оператора присваивания.
'Объявляем переменную
Dim F1 As Field
'Создаем поле
Set F1 = NewTbl.CreateField ()
'Свойства поля устанавливаем явно
F1.Name = “FirstName”
F1.Type = dbText
F1.Size = 20
После того как поле, включаемое в таблицу, описано, при помощи метода Append объекта TableDef, оно добавляется к таблице:
NewTbl.Fields.Append F1
Установка факультативных свойств полей
Кроме имени поля, типа хранимых в нем данных и размера поля, можно определить еще некоторые свойства поля влияющие на его работу.
Первым из этих свойств является Attributes. При создании полей используются два его основных значения. Первое автоинкремент задает приращение значения поля БД всякий раз, когда добавляется новая запись. С помощью данного свойства можно организовать счетчик записей, чтобы обеспечить уникальное значение этого поля. Тогда поле с автоинкрементом можно использовать, как поле первичного ключа (Primary Key).
Примечание. Автоинкремент можно установить только для полей с типом данных Long.
'Объявляем переменную
Dim F1 As Field
'Создаем поле
Set F1 = NewTbl.CreateField (“ID”, dbLong)
'Устанавливаем свойства автоинкремента
F1.Attributies = dbAuotoIncrField
'Добавляем к таблице
NewTbl.Fields.Append F1
Другое факультативное значение updatable позволяет разрешать или запрещать изменение поля. Обычно эта установка не используется при начальном создании поля.
Другие константы, которые можно использовать вместе со свойством Attributes, приведены ниже. Этому свойству можно задавать сложные значения, для чего следует объединить значения отдельных констант и присвоить свойству их сумму.
Константа |
Функция |
dbFixedField |
Длина поля фиксирована |
dbVariebleField |
Длина поля может изменяться (только для текстовых) |
dbAuotoIncrField |
Ядро БД автоматически увеличивает значение поля |
dbUpdatableField |
Значение поля может изменяться |
Кроме свойств Attributes для отдельных полей можно определять некоторые другие свойства. Для изменения значений этих свойств, также как и для свойства Attributes, используются операторы присваивания; эти значения нельзя установить при вызове метода CreateField.
Свойство |
Комментарии |
AllowZeroLenght |
Определяет, может ли поле Text или Memo иметь нулевую длину. Значение True разрешает ввод пустых строк. |
DefaulValue |
Позволяет задавать значение поля по умолчанию |
Required |
Определяет, обязательно ли поле должно иметь значение |
ValidationRule |
Устанавливает условие, которому должно отвечать поле для того, чтобы запись можно было обновить |
ValidationText |
Определяет сообщение об ошибке, выводимое в том случае, когда нарушается правило проверки достоверности поля(ValidationRule) |
'Объявляем переменные
Dim F3 As Field
'Устанавливаем имя, тип и размер поля
Set F3 = NewTbl.CreateField (“Age”, dbInteger)
'Устанавливаем факультативные свойства
F3.ValidationRule = “Age” > 0
F3.ValidationText = “Возраст должен быть больше 0”
'Добавляем к таблице
NewTbl.Fields.Append F3
Удаление полей
Для удаления поля используется метод Delete.
'Удаляем из таблицы NewTbl поле Age
NewTbl.Fields.Delete “Age”
или
'Удаляем из БД NewDB, таблицы с имене Name поле Age
NewDB.TableDefs(Name).Fields.Delete “Age”
Итак, вы создали БД, затем таблицу (или таблицы), описали и присоединили поля к таблице и кажется БД готова. Но нет! БД еще немного сыровата. Есть еще один ключевой момент индексы. Индексами или индексными полями, как их иногда называют, являются знакомые вам ключевые поля. Необходимо отметить, что почти во всех БД индексы используются только для ускорения обработки больших файлов и выполняют небольшую роль в поддержке отношений между таблицами. В используемых Visual Basic БД (mdb-файлы), ключевые поля используют и для установки ограничения целостности, и для ускорения поиска и для выборки информации.
Создание индексов
Способ создания индексов тесно связан с созданием самой таблицы. Для каждого индекса нужно определить имя, описать поля, включаемые в индекс, и указать, будет ли данный индекс первичным и допускаются ли повторяющиеся значения в полях образующих индексный ключ.
Создание первичного ключа (PrimaryKey)
Главной задачей первичного ключа является поддержка внутренней целостности таблицы и поэтому в ней не может быть две одинаковой записи. Обычно первичный ключ используют в полях, где содержатся номера телефонов, счета фактур и т.д. Для создания индекса нужно выполнить следующие действия
(считаем, что БД и Таблица уже созданы, поля описаны и добавлены к таблице):
При помощи метода CreateIndex объекта TableDef, создаем объект Index;
Устанавливаем свойства индекса;
Добавляем индекс к таблице;
Здесь приводится код создания индекса:
Dim Idx1 As Index
'Создаем объект индекс
Set Idx1 = NewTbl.CreateIndex("PrimaryKey")
'Устанавливаем его свойства
Idx1.Name = "PrimaryKey"
Idx1.Primary = True
'Свойство Fields должно быть таким же, как имя поля, которое становится индексным
Idx1.Fields = "ID"
'Прибавляем индекс к таблице
NewTbl.Indexes.Append Idx1
После выполнения всех этих процедур можно добавить таблицу к БД.
NewDB.TableDefs.Append NewTbl
После этого созданную БД лучше закрыть
NewDB.Close
Теперь нужно занести данные в базу.
'Открываем БД
Set NewDB = OpenDatabase(strDBPath, False, False)
'Открываем recordset
Set rs = NewDB.OpenRecordset("ttt", dbOpenDynaset)
Теперь в цикле выполняем такие команды:
'Подготавливаем recordset к введению новой
записи
rs.AddNew
rs("Field_X") = X 'записываем X в БД
rs("Field_Y") = Y 'записываем Y в БД
'С помощью Update обновляем данные в БД
rs.Update
Порядок выполнения работы
(рис.1)
рис.1
Приложение. Задания для расчетов
; .
t,
где: - степень сжатия изменяется от (13 - 0,1n) до 11,0 с шагом 0,2; = 1,3 - степень повышения давления; = 1,4 - степень предварительного расширения; = 1,3 - показатель адиабаты сжатия и расширения.
;
.
hS(a/b);
hc(a/b).
b
где: Рm - давление в выпускном коллекторе; Рн - давление в цилиндре в начале продувки; = 1,3 - показатель адиабаты расширения.
,
где: Eq = 2,2 - ЭДС по поперечной оси, соответствующая установившемуся режиму, относительно которого происходят колебания; u = 1 - напряжение; xd = 1,5, xq = 0,705 - реактивные сопротивления по продольной и поперечной осям. Угол изменяется от 0 до 300.
; ;
где xi и yi - произвольная выборка значений аргумента и функции соответственно, размерностью k = (n +20).
где Т0 = 295 0К - температура воздуха на входе в нагнетатель; Рн и Р0 - давление воздуха на выходе и на входе в нагнетатель соответственно; m = 1,7 - показатель политропы.
;
æ;
где и æ - соответственно тепловое запаздывание и коэффициент усиления прииводного двигателя.
А()
где r = 25,6; Tr = 0,021 c - соответственно коэффициент усиления и постоянная времени асинхронного генератора.
;
где xi и yi - произвольная выборка значений аргумента и функции соответственно, размерностью k = (n +25).
;
где: kr = 0,55; r = 19,6; r = 0,3 - соответственно коэффициент усиления, резонансная частота и декремент затухания ротора генератора.
к
математическое ожидание: ;
среднеквадратическое отклонение: ;
коэффициент асимметрии: А;
коэффициент эксцесса: Е.
;
где q = 20*104 Вт/м2.
;
где t2 = 200 0С; 1 = 20 мм; 2 =2 мм; 1 = 50 ккал/(м*ч* 0С); 2 = 1,0 ккал/(м*ч* 0С).
27. Определить с точностью до = 10- 6 длину эллипса по формуле:
где: =; а и b задать произвольно.
если температура забортной воды, выходящей из конденсатора tзв2 всегда выше на 5 0С температуры забортной воды на входе в конденсатор tзв1, которая изменяется в диапазоне (14...26) 0С. Температуру конденсации tк принять постоянной для стандартных условий 30 0С.
с