Файл: Проектирование ИС по управленческому учету в проектной организации АО «Промэнергопроект».pdf
Добавлен: 01.04.2023
Просмотров: 163
Скачиваний: 3
End Function
''' <summary>
''' Команда пользователя - редактировать
''' </summary>
''' <param name="add_id">Дополнительный идентификатор</param>
''' <returns>Результат выполнения команды</returns>
Public Function Edit(Optional add_id As Object = 0) As Boolean Implements IUserCommands.Edit
Try
' Запомнить предыдущий ID
OldID = ID
' Создание диалога ввода данных
Dialog = New dialogProject(HisCustomer.ID, ID, Editable)
' Наполнение полей диалога актуальными данными
Dialog.ItsCustomerID = HisCustomer.ID
Dialog.CreateDate = CreateDate
Dialog.Deadline = Deadline
Dialog.ProjectName = Name
Dialog.Code = ID
' Организация диалога с пользователем
If Dialog.ShowDialog() = DialogResult.OK Then
' Применение введенных значений
HisCustomer = New Customer(Dialog.ItsCustomerID)
ID = Dialog.Code
Name = Dialog.ProjectName
CreateDate = Dialog.CreateDate
Deadline = Dialog.Deadline
' Выполнить обновление в БД
Return TryToUpdate()
Else
' Возврат неудачи - отмена действия пользователем
Return False
End If
Catch ex As Exception
MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error)
' Возврат неудачи
Return False
End Try
End Function
''' <summary>
''' Поиск среди проектов проекта с заданным кодом
''' </summary>
''' <param name="Code">Заданный код проекта для поиска</param>
''' <returns>Результат поиска</returns>
Public Shared Function IsCodeExists(Code As String) As Boolean
Try
' Адаптер подключения к БД - таблица проектов
Dim ADAPTER As pmdbDataSetTableAdapters.projectTableAdapter =
New pmdbDataSetTableAdapters.projectTableAdapter()
' Поиск проекта заданного кода в таблице проектов
Dim PDT As pmdbDataSet.projectDataTable = ADAPTER.GetDataByID(Code)
' Возвращаем результат поиска
If PDT.Rows.Count > 0 Then Return True Else Return False
Catch ex As Exception
Return False
End Try
End Function
''' <summary>
''' Итоговый отчет по проектам
''' </summary>
''' <returns>Форматированный HTML-текст отчета</returns>
Public Shared Function GetReport() As String
' Переменная для форматированного HTML-отчета
Dim HTML As String = ""
' Служебная переменная-счетчик
Dim i As Integer = 1
' Адаптер подключения к БД - таблица проектов
Dim ADAPTER As pmdbDataSetTableAdapters.projectTableAdapter =
New pmdbDataSetTableAdapters.projectTableAdapter()
' Таблица проектов
Dim PDT As pmdbDataSet.projectDataTable = ADAPTER.GetData()
'---------------------------------------------------
' ГЕНЕРАЦИЯ HTML-КОДА
'---------------------------------------------------
HTML += "<html>"
HTML += " <head>"
HTML += " <title></title>"
HTML += " </head>"
HTML += " <body>"
HTML += " <H2 align=center>ВЫПОЛНЕННЫЕ ПРОЕКТЫ</font></H2>"
HTML += " <p align=center><font family='courier new'>версия от <u><i>" + Date.Now.ToLongDateString() + "</i></u></font></p>"
' Начало таблицы
HTML += "<table width='100%' cellspacing=1 cellpadding=1 border=all>"
' Шапка таблицы
HTML += "<tr>"
HTML += "<td align=center><b>№п.п.</b></td>"
HTML += "<td align=center><b>Проект</b></td>"
HTML += "<td align=center><b>Наименование</b></td>"
HTML += "<td align=center><b>Заказчик</b></td>"
HTML += "<td align=center><b>Руководитель</b></td>"
HTML += "<td align=center><b>Создан</b></td>"
HTML += "<td align=center><b>Завершен</b></td>"
HTML += "<td align=center><b>Срок</b></td>"
HTML += "</tr>"
' Наполнение таблицы
For Each dr As DataRow In PDT.Rows
' Получение кода проекта
Dim p_id As String = Convert.ToString(dr.ItemArray(0))
Dim P As Project = New Project(p_id)
' Размещение строки таблицы
HTML += "<tr>"
' Столбцы
HTML += $"<td>{i}</td>" : i = i + 1
HTML += $"<td>{P.ID}</td>"
HTML += $"<td>{P.Name}</td>"
HTML += $"<td>{P.HisCustomer.Name}</td>"
HTML += $"<td>{P.HisOwner.SurName} {P.HisOwner.FirstName.Substring(0, 1)} {P.HisOwner.FatherName.Substring(0, 1)}</td>"
HTML += $"<td>{P.CreateDate.ToShortDateString()}</td>"
If P.CompleteDate Is Nothing Then
HTML += $"<td>выполняется</td>"
Else
HTML += $"<td>{Convert.ToDateTime(P.CompleteDate).ToShortDateString()}</td>"
End If
HTML += $"<td>{P.Deadline.ToShortDateString()}</td>"
' Конец строки
HTML += "</tr>"
Next dr
' Конец таблицы
HTML += "</table>"
' Конец HTML
HTML += " </body>"
HTML += "</html>"
' Освобождение таблиц
PDT.Dispose()
ADAPTER.Dispose()
' Возврат текста отчета
Return HTML
End Function
End Class
Код класса главного окна
''' <summary>
''' Главная форма
''' </summary>
Public Class frmMain
''' <summary>
''' Конструктор
''' </summary>
Public Sub New()
' Создание и инициализация компонентов
InitializeComponent()
' Установить ссылку на себя глобально
PMGlobal.MainWindow = Me
' Прочитать настройки подключения к БД
PMGlobal.DB_CS = PMGlobal.LoadConnectionSettings(PMGlobal.CONNECTION_SETTINGS_FILE)
' Попытка подключиться к БД
If Not PMGlobal.SetConnectionWithDB() Then
' Показать панель настройки подключения к БД
PMGlobal.ShowConnectionSettings()
Else ' Подключение установлено
' Показать панель авторизации пользователя
PMGlobal.ShowLoginForm()
End If
End Sub
''' <summary>
''' Главный контейнер
''' </summary>
Public ReadOnly Property SubsystemView As Panel
Get
Return pnlMainContainer
End Get
End Property
''' <summary>
''' Метка с отображением имени авторизованного пользователя
''' </summary>
Public WriteOnly Property CurrentUserName As String
Set(value As String)
tslblUserName.Text = value
End Set
End Property
''' <summary>
''' Метка с отображением роли авторизованного пользователя
''' </summary>
Public WriteOnly Property CurrentUserRole As String
Set(value As String)
tslblUserRole.Text = value
End Set
End Property
''' <summary>
''' Метка с отображением названия БД
''' </summary>
Public WriteOnly Property CurrentDBName As String
Set(value As String)
tslblDBName.Text = value
End Set
End Property
''' <summary>
''' Сменить пользователя