9ЗАКЛЮЧЕНИЕ
Результатом работы над дипломным проектом является автоматизированная система инвентаризации комплектующих для компьютеров, которая удовлетворяет всем требованиям, которые были определены в начале разработки. База данных «Инвентаризация» позволяет быстро, легко и эффективно справиться с поставленными задачами, применяется на современной ЭВМ, проста в использовании, имеет низкую себестоимость, а так же есть возможность внести изменения, увеличив, таким образом, область использования.
10СПИСОК ЛИТЕРАТУРЫ
1. Васильев А.В. Методические указания по технико-экономическому обосно-ванию дипломных проектов (работ): Метод. указания, СПб.: Изд-во СПбГЭТУ “ЛЭТИ”, 2002. 32 с.
2. 4ч. Гражданского Кодекса РФ
3. Буч Ю. И. , Терентьева И. С. Правовая охрана и коммерческая реализация программ для ЭВМ и баз данных: Методические указания по дисциплине "Интеллектуальная собственность"Сост.: СПбГЭТУ. СПб., 1998. 62 с. (Переработано в 2008 г.)
4. Советов Б.Я., Цехановский В.В, Чертовской В.Д., Теоретические основы автоматизированного управления: Учебник для вузов/ -М.: Высш.шк., 2006. – 463 с.: ил.
5. Алексеев А., Евсеев Г., Мураховский В., Симонович С., Новейший самоучитель работы на компьютере. –М: издательство «Десс», 1999. – 654 с.
6. Горев А., Макашарипов С., Ахаян Р., Эффективная работа с СУБД СПб, «Питер», 1997, 704с.
7 Потапкин А. В., Основы Visual Basic для пакета Microsoft Office: -М, «Эком», 1995, 256с.
-
Петров В. Н., Информационные системы – СПб,: Питер, 2003.
-
Хендерсон К. Руководство разработчика баз данных. М., 1998
-
Орлов С. Технологии разработки программного обеспечения: Учебник –СПб.: Питер, 2002.
-
www.ibase.ru/firebird.htm.
-
www.ssti.ru/kpi/informatika
-
www. mom.ru/Gulebino/01-Setup.htm
-
www/tisbi.ru/ resource/Lib/Elbook/Access
-
www.mhts.ru
11ПРИЛОЖЕНИЕ
Основной модуль
Option Compare Database
P
Функция, позволяющая определить состав оборудования, если это компьютер
ublic Function CanStrip(TypeEquip As String) As Boolean
CanStrip = False
If TypeEquip = "Компьютер" Then CanStrip = True
End Function
P
Функция, позволяющая подсчитать стоимость компьютера, сложи цены всех его комплектующих
ublic Function EquipPrice(InvNum As Long) As Long
Dim Dbs As Database
Dim Rst As Recordset
Dim StrSQL
Dim Sum
Обнуление переменной
Sum = 0
StrSQL = "SELECT Инвентарь.ИнвНомер, НаименованиеОборудования.Наименование, ТипЗапчастей.Наименование, " _
& "СоставОборудования.Количество, Запчасти.Наименование, Запчасти.Цена FROM ТипЗапчастей INNER JOIN " _
& "((НаименованиеОборудования INNER JOIN (Инвентарь INNER JOIN Оборудование ON Инвентарь.ИнвНомер = Оборудование.ИнвНомер) " _
& "ON НаименованиеОборудования.Код = Оборудование.Наименование) INNER JOIN (Запчасти INNER JOIN СоставОборудования ON " _
& "Запчасти.Код = СоставОборудования.Наименование) ON Оборудование.ИнвНомер = СоставОборудования.ИнвНомер) ON " _
& "ТипЗапчастей.Код = СоставОборудования.ТипЗапчасти WHERE Инвентарь.ИнвНомер = " & CStr(InvNum)
Set Dbs = CurrentDb()
Set Rst = Dbs.OpenRecordset(StrSQL, dbOpenDynaset)
Rst.MoveFirst
Сложение цен комплектующих
Do Until Rst.EOF
Sum = Sum + Rst![Количество] * Rst![Цена]
Rst.MoveNext
Loop
Rst.Close
Set Dbs = Nothing
EquipPrice = Sum
End Function
Public Function GetEqType(InvNum As Long) As Long
Функция сортировки данных по типу оборудования
GetEqType = CLng(Mid(CStr(InvNum), Len(CStr(InvNum)) - 2, 1))
End Function
Public Function GetStrEqType(InvNum As Long) As String
GetStrEqType = DLookup("[ТипОборудования]", "[ТипыОборудования]", "[ТипыОборудования].[Код] = " & Mid(CStr(InvNum), Len(CStr(InvNum)) - 2, 1))
End Function
Public Function GetEqName(InvNum As Long) As Long
Dim Dbs As Database
Dim Rst As Recordset
Dim StrSQL$
Dim TmpVal
StrSQL = "SELECT Оборудование.Наименование , Оборудование.ИнвНомер FROM Оборудование WHERE Оборудование.ИнвНомер = " & CStr(InvNum)
Set Dbs = CurrentDb()
Set Rst = Dbs.OpenRecordset(StrSQL, dbOpenDynaset)
Rst.MoveFirst
TmpVal = Rst![Наименование]
Rst.Close
Set Dbs = Nothing
GetEqName = TmpVal
End Function
P
Функция сортировки данных по наименованию оборудования
ublic Function GetStrEqName(InvNum As Long) As String
Dim Dbs As Database
Dim Rst As Recordset
Dim StrSQL$
Dim TmpVal
StrSQL = "SELECT Оборудование.ИнвНомер, НаименованиеОборудования.Наименование FROM НаименованиеОборудования " _
& "INNER JOIN Оборудование ON НаименованиеОборудования.Код = Оборудование.Наименование WHERE Оборудование.ИнвНомер = " & CStr(InvNum)
Set Dbs = CurrentDb()
Set Rst = Dbs.OpenRecordset(StrSQL, dbOpenDynaset)
Rst.MoveFirst
TmpVal = Rst![Наименование]
Rst.Close
Set Dbs = Nothing
GetStrEqName = TmpVal
End Function
Форма «Инвентарь»
Option Compare Database
D
Объявление переменных
im StrSqlHead
Dim isFirstOpen As Boolean
Private Sub Form_GotFocus()
MsgBox "GotFocus"
End Sub
Private Sub Form_Load()
With Me
!ФлагОтбораИнвентаря = False
Вызов процедуры, устанавливающей начальные нулевые значения для всех параметров !ФлагСотрудника.Enabled = False
!ФлагОтдела.Enabled = False
!ФлагТипаОборудования.Enabled = False
!ОтборСотрудника.Enabled = False
!ОтборОтдела.Enabled = False
!ОтборТипаОборудования.Enabled = False
End With
isFirstOpen = False
Call HeaderUpdate
End Sub
Открытие формы
Private Sub Form_Open(Cancel As Integer)
isFirstOpen = True
End Sub
Процедура
«кнопка» для вызова диалогового окна
Private Sub Новый_Click()
DoCmd.OpenForm "НовыйИнвентарь", , , , acFormAdd
End Sub
Private Sub ОтборОтдела_AfterUpdate()
Call HeaderUpdate
End Sub
Процедуры
«кнопка» для возможности обозначения критерия отбора
Private Sub ОтборСотрудника_AfterUpdate()
Call HeaderUpdate
End Sub
Private Sub ОтборТипаОборудования_AfterUpdate()
Call HeaderUpdate
End Sub
Private Sub ФлагОтбораИнвентаря_AfterUpdate()
If Me![ФлагОтбораИнвентаря] Then
With Me
!ФлагСотрудника.Enabled = True
!ФлагОтдела.Enabled = True
!ФлагТипаОборудования.Enabled = True
Цикл в процедуре:
включение флага «отбор инвентаря», обеспечивающий доступ к выбору критерия !ОтборСотрудника.Enabled = True
!ОтборОтдела.Enabled = True
!ОтборТипаОборудования.Enabled = True
End With
Else
With Me
!ФлагСотрудника.Enabled = False
!ФлагОтдела.Enabled = False
!ФлагТипаОборудования.Enabled = False
!ОтборСотрудника.Enabled = False
!ОтборОтдела.Enabled = False
!ОтборТипаОборудования.Enabled = False
End With
End If
Call HeaderUpdate
End Sub
P
Процедура:
Включенный Флаг Отдела исключает включение Флага Сотрудника
rivate Sub ФлагОтдела_AfterUpdate()
If Me![ФлагОтдела] Then
Me![ФлагСотрудника] = False
End If
Call HeaderUpdate
End Sub
P
Процедура:
Включенный Флаг Сотрудника исключает включение Флага Отдела
rivate Sub ФлагСотрудника_AfterUpdate()
If Me![ФлагСотрудника] Then
Me![ФлагОтдела] = False
End If
Call HeaderUpdate
End Sub
Private Sub HeaderUpdate()
StrSqlHead = "SELECT Инвентарь.ИнвНомер, Инвентарь.Ремонтируется, Инвентарь.Списано, Сотрудники.Сотрудник, Отделы.Отдел, ТипыОборудования.ТипОборудования, Сотрудники.Код, Оборудование.Примечание, " _
& "НаименованиеОборудования.Стоимость FROM ТипыОборудования INNER JOIN (Сотрудники INNER JOIN (Отделы INNER JOIN (НаименованиеОборудования INNER JOIN " _
& "(Инвентарь INNER JOIN Оборудование ON Инвентарь.ИнвНомер = Оборудование.ИнвНомер) ON НаименованиеОборудования.Код = Оборудование.Наименование) ON " _
& "Отделы.Код = Инвентарь.ОтветственныйОтдел) ON Сотрудники.Код = Инвентарь.ОтветственноеЛицо) ON ТипыОборудования.Код = Оборудование.ТипОборудования WHERE Инвентарь.Ремонтируется = False AND Инвентарь.Списано = False"
Подцикл:
Предоставляет перечень отделов, при включении Флага Отдел If Me![ФлагОтбораИнвентаря] Then
If Me![ФлагОтдела] Then
If IsNull(Me![ОтборОтдела]) = False Then
StrSqlHead = StrSqlHead & " AND Отделы.Код = " & CStr(Me![ОтборОтдела])
End If
Подцикл:
Предоставляет перечень сотрудников, при включении Флага Сотрудник End If
If Me![ФлагСотрудника] Then
If IsNull(Me![ОтборСотрудника]) = False Then
StrSqlHead = StrSqlHead & " AND Сотрудники.Код = " & CStr(Me![ОтборСотрудника])
End If
Подцикл:
Предоставляет перечень оборудования, при включении Флага Оборудование End If
If Me![ФлагТипаОборудования] Then
If IsNull(Me![ОтборТипаОборудования]) = False Then
StrSqlHead = StrSqlHead & " AND ТипыОборудования.Код = " & CStr(Me![ОтборТипаОборудования])
End If
End If
Открытие формы Инвентарь
End If
Forms("Инвентарь")![подчиненная форма ИнвентарьШапка].Form.RecordSource = StrSqlHead
Forms("Инвентарь")![подчиненная форма ИнвентарьШапка].Form.Form.Refresh
Forms("Инвентарь")![подчиненная форма СоставОборудованияПН].Form.Form.Refresh
End Sub
Private Sub ФлагТипаОборудования_AfterUpdate()
Call HeaderUpdate
E
Процедура вызова диалогового окна «Перемещение»
nd Sub
Private Sub Перемещение_Click()
On Error GoTo Err_Перемещение_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1055) & ChrW(1077) & ChrW(1088) & ChrW(1077) & ChrW(1084) & ChrW(1077) & ChrW(1097) & ChrW(1077) & ChrW(1085) & ChrW(1080) & ChrW(1077)
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, acFormAdd, , CStr(Me.подчиненная_форма_ИнвентарьШапка!ИнвНомер)
Exit_Перемещение_Click:
Exit Sub
Err_Перемещение_Click:
MsgBox Err.Description
Resume Exit_Перемещение_Click
E
Процедура вызова диалогового окна «Отчеты»
nd Sub
Private Sub КнопкаОтчеты_Click()
On Error GoTo Err_КнопкаОтчеты_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(1090) & ChrW(1095) & ChrW(1077) & ChrW(1090) & ChrW(1099)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_КнопкаОтчеты_Click:
Exit Sub
Err_КнопкаОтчеты_Click:
MsgBox Err.Description
Resume Exit_КнопкаОтчеты_Click
E
Процедура вызова диалогового окна «Ремонт»
nd Sub
Private Sub КнопкаРемонт_Click()
On Error GoTo Err_КнопкаРемонт_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1056) & ChrW(1077) & ChrW(1084) & ChrW(1086) & ChrW(1085) & ChrW(1090)
DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd, , CStr(Forms![Инвентарь]![подчиненная форма ИнвентарьШапка]![ИнвНомер])
Exit_КнопкаРемонт_Click:
Exit Sub
Err_КнопкаРемонт_Click:
MsgBox Err.Description
Resume Exit_КнопкаРемонт_Click
End Sub
Private Sub Списание_Click()
On Error GoTo Err_Списание_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1057) & ChrW(1087) & ChrW(1080) & ChrW(1089) & ChrW(1072) & ChrW(1085) & ChrW(1080) & ChrW(1077)
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , CStr(Forms![Инвентарь]![подчиненная форма ИнвентарьШапка]![ИнвНомер])
Exit_Списание_Click:
Exit Sub
Процедура вызова диалогового окна «Списание»
Err_Списание_Click:
MsgBox Err.Description
Resume Exit_Списание_Click
End Sub
Отчет «Рабочий инвентарь»
Option Compare Database
P
Процедура формирования отчета
rivate Sub ПечатьРабочийИнвентарь_Click()
On Error GoTo Err_ПечатьРабочийИнвентарь_Click
Dim stDocName As String
stDocName = ChrW(1088) & ChrW(1072) & ChrW(1073) & ChrW(1086) & ChrW(1095) & ChrW(1080) & ChrW(1081) & ChrW(32) & ChrW(32) & ChrW(1080) & ChrW(1085) & ChrW(1074) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1072) & ChrW(1088) & ChrW(1100)
DoCmd.OpenReport stDocName, acPreview
Exit_ПечатьРабочийИнвентарь_Click:
Вывод на печать отчета
Exit Sub
Err_ПечатьРабочийИнвентарь_Click:
MsgBox Err.Description
Resume Exit_ПечатьРабочийИнвентарь_Click
End Sub
Форма «Перемещение»
Option Compare Database
P
Вывод на экран формы Перемещение»
rivate Sub Form_Load()
Dim Dbs As Database
Dim Rst As Recordset
'MsgBox Me.OpenArgs
If IsNull(Me.OpenArgs) = False Then
Me![ИнвНомер] = CLng(Me.OpenArgs)
Me![ТипОборудования] = CLng(Mid(Me.OpenArgs, Len(Me.OpenArgs) - 2, 1))
Set Dbs = CurrentDb()
Set Rst = Dbs.OpenRecordset("SELECT * FROM Инвентарь", dbOpenDynaset)
Rst.FindFirst "ИнвНомер=" & Me.OpenArgs
Присвоение новых параметров
Me![отСотрудника] = Rst![ОтветственноеЛицо]
Me![изОтдела] = Rst![ОтветственныйОтдел]
Rst.Close
Set Dbs = Nothing
End If
End Sub
Процедура:
проверяет заполнены ли все поля и выполняет изменения
Private Sub Выполнить_Click()
Dim Dbs As Database
Dim Rst As Recordset
If IsNull(Me![ИнвНомер]) Or IsNull(Me![кСотруднику]) Or IsNull(Me![вОтдел]) Then
MsgBox "Необходимо заполнить все поля формы"
Else
Set Dbs = CurrentDb()
Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Инвентарь", dbOpenDynaset)
Rst.FindFirst "ИнвНомер=" & CStr(Me![ИнвНомер])
Rst.Edit
Rst![ОтветственноеЛицо] = Me![кСотруднику]
Rst![ОтветственныйОтдел] = Me![вОтдел]
Rst.Update
Rst.Close
Set Dbs = Nothing
DoCmd.Save acForm, Me.Name
If MsgBox("Перемещение выполнено. Закрыть форму?", vbYesNo) = vbYes Then
DoCmd.Close acForm, Me.Name, acSaveYes
End If
End If
End Sub
Процедура позволяет отображать все соответствующие ИнвНомеру параметры
Private Sub ИнвНомер_AfterUpdate()
Dim Dbs As Database
Dim Rst As Recordset
Dim StrInv
'MsgBox Me.OpenArgs
If IsNull(Me![ИнвНомер]) = False And Me![ИнвНомер] > 0 Then
'Me![ИнвНомер] = CLng(Me.OpenArgs)
StrInv = Me![ИнвНомер]
Me![ТипОборудования] = CLng(Mid(StrInv, Len(StrInv) - 2, 1))
Set Dbs = CurrentDb()
Set Rst = Dbs.OpenRecordset("SELECT * FROM Инвентарь", dbOpenDynaset)
Rst.FindFirst "ИнвНомер=" & StrInv
Присвоение новых параметров
Me![отСотрудника] = Rst![ОтветственноеЛицо]
Me![изОтдела] = Rst![ОтветственныйОтдел]
Rst.Close
Set Dbs = Nothing
End If
E
Процедура:
выводит перечень сотрудников при заполнении поля «К сотруднику» nd Sub
Private Sub кСотруднику_GotFocus()
If IsNull(Me![вОтдел]) = False Then
Me.кСотруднику.RowSource = "SELECT Сотрудники.Код, Сотрудники.Сотрудник, Сотрудники.Отдел, Сотрудники.НачальникОтдела FROM Сотрудники WHERE Сотрудники.Отдел = " & CStr(Me![вОтдел])
Else
Me.кСотруднику.RowSource = "SELECT Сотрудники.Код, Сотрудники.Сотрудник, Сотрудники.Отдел, Сотрудники.НачальникОтдела FROM Сотрудники"
End If
End Sub
P
Процедура отмена действий
rivate Sub Отменить_Click()
Dim Dbs As Database
Dim CurCode
On Error GoTo Err_Отменить_Click
CurCode = Me![Код]
Set Dbs = CurrentDb()
DoCmd.Close acForm, Me.Name, acSaveNo
Dbs.Execute "DELETE * FROM [Журнал перемещений] WHERE [Журнал перемещений].Код = " & CStr(CurCode)
Set Dbs = Nothing
Exit_Отменить_Click:
Exit Sub
Err_Отменить_Click:
MsgBox Err.Description
Resume Exit_Отменить_Click
End Sub
|