Пояснительная записка - Федоренко АВ 943 группа Хабаовск 2015 (1218829), страница 5
Текст из файла (страница 5)
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
Dim user_name As String
Set objA = CreateObjectfWScript.Network
user_name = "orient\" & objA.UserName & ""
str = "select distinct CaseId from [check].[dbo].[ORFI_APPL_USER] where [user]="' & user_name & and ((select count(Active) from [check].[dbo].[ORFI_APPL_USER] where [user]="’ & user_name & ”')=(select count(Active) from [check].[dbo].[ORFI_APPL_USER] where [user]="' & user_name & ‘” and Active=1))"
cmd.CommandText = cmd.CommandText & str
Set rstRecordset.ActiveConnection = cn
rstRecordset.Open cmd
cmd.Execute
Do While Not rstRecordset.EOF
UserForm7.ComboBoxl.Addltem(rstRecorset.Fields("Case_id").Value)
rstRecordset.MoveNext
Loop
End Sub
Как видно из данного примера, весь код разбит на 6 логических участков. Сперва необходимо объявить переменные для создания подключения к базе данных. Так как в данной рабочей форме всего одно обращение к БД, то подключение можно создать внутри функции инициализации рабочей формы. В дальнейшем при разработке основной рабочей формы гораздо целесообразнее создать отдельную публичную функцию для открытия подключения к базе данных. Это позволит значительно сократить количество используемой памяти, а так же структурировать программный код [21].
После того, как создано подключение необходимо получить логин пользователя. Для этого используем встроенную функцию «CreateObjectfWScript.Network », с помощью которой можно получить имя пользователя, зарегистрированного во внутренней банковской сети. Далее необходимо в переменную, отвечающую за SQL команду передать запрос, который выберет номера кейсов, которые доступны для загрузки.
Далее отправим запрос на выполнение команды, предварительно указав, что результат выполнения должен записаться в переменную rstRecordset. Затем при помощи цикла While помещаем значения переменной в выпадающий список рабочей формы.
После выполнения данного программного кода откроется окно, которое показано на рисунке 10.
Рисунок 10 – Окно формы по добавлению нового кейса
Когда кейс для загрузки выбран необходимо нажать кнопку «Выбрать». После срабатывает код на добавление проверки в рабочую форму.
Private Sub CommandButtonl_Click()
Dim i As Integer i = 4
Do While (Cells(i, 1) <> "")
i = i + 1
Loop
sqlca = "select * from [check].[dbo].[CHECK_REESTR] where (Check_status=4 or Check_status=2 or Check_status=3 or Check_status is NULL) and case_id=" & ComboBoxl.Value & " order by 1 and ORFI_user="' & user_name & '"
cmd.CommandText = cmd.CommandText & sqlca
Set rstRecordset.ActiveConnection=cn
rstRecordset.Open cmd
cmd.Execute
If Err.Number = 0 Then
Sheets("Реестр").range("A" & i & "").CopyFromRecordset
rstRecordset
End If
Sheets("Реестр").range("B" & i -1 & ":DE" & i -1 & "").Select
With
.Selection.Borders(xlEdgeBottom)
.XLineStyle = xlContinuous
.Weight = xlMedium
End With
Unload Me
End Sub
В результате рабочая форма закроется, а в файле Excel загрузится информация о кейсе (рисунок 11).
Рисунок 11 – Загруженный кейс в Excel книгу
Для того, чтобы приступить к выполнению проверки сотрудник должен указать щелчком левой кнопкой мыши ту строчку с заявкой, по которой планируется проводиться проверка и нажать сочетание клавиш «Ctrl+Q». Данный метод запуска программы был выбран не случайно. По мере проектирования и тестирования с фокус группой были предложены различные варианты запуска: отдельная кнопка, двойной клик по ячейке или сочетание клавиш. И в результате тестов оказалось, что для пользователей наиболее удобным вариантом является сочетание клавиш.
Рабочая форма сотрудника ОРФИ представляет собой окно программы, разбитое на определенные блоки. Каждый блок имеет набор реакций, выставляемых при обработке заявки.
Создание формы осуществлялось при помощи встроенного в Excel редактора Microsoft Visual Basic for Application [22]. В этом редакторе при помощи стандартного набора инструментов была разработана и настроена главная рабочая форма (рисунок 12).
Рисунок 12 – Проектирование рабочей формы ОРФИ
Очень важную роль в организации проверки играет функция загрузки данной рабочей формы. Согласно техническому заданию необходимо сделать так, чтобы при добавлении в процесс проверки определенных блоков или новых видов реакции, эти элементы добавлялись в рабочую форму автоматически. Таким образом при инициализации окна программы было принято решение реализовать динамическую загрузку блоков и выпадающих списков [22]. Ниже представлена часть программного кода, которая выполняет данную функцию.
Private Sub UserForm_lnitialize()
open_form = 1
rangeinit = ActiveCell.row
Actual_Request = Cells(ActiveCell.row, 2)
Run check_on_prev
actual = 1
CheckBoxl.Value = Sheets("Form_setting").Cells(5, l).Value
TextBoxl6.Text = Sheets("Реестр").Cells(ActiveCell.row,2)
Run next_or_prev_block()
form_box = 2
Label1.Caption=ThisWorkbook.Sheets("Form").Cells(form_box, 8).Value
For i = 2 To ThisWorkbook.Sheets("list").Cells(Rows.Count,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).End(xlUp).row
ComboBoxl.Addltem ThisWorkbook.Sheets("list").Cells(i,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).Value
Next
form_box = 4
Label2.Caption=ThisWorkbook.Sheets("Form").Cells(form_box, 8).Value
For i = 2 To ThisWorkbook.Sheets("list").Cells(Rows.Count,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).End(xlUp).row
ComboBox2.Addltem ThisWorkbook.Sheets("list").Cells(i,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).Value
Next
For i = 2 To ThisWorkbook.Sheets("list").Cells(Rows.Count,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).End(xlUp).row
ComboBox3.Addltem ThisWorkbook.Sheets("list").Cells(i,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).Value
Next
form_box = 8
Label4.Caption=ThisWorkbook.Sheets("Form").Cells(form_box, 8).Value
For i = 2 To ThisWorkbook.Sheets("list").Cells(Rows.Count,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).End(xlUp).row
ComboBox4.Addltem ThisWorkbook.Sheets("list").Cells(i,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).Value
Next
form_box = 10
Label41.Caption=ThisWorkbook.Sheets("Form").Cells(form_box, 8).Value
For i = 2 To ThisWorkbook.Sheets("list").Cells(Rows.Count,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).End(xlUp).row
ComboBox35.Addltem ThisWorkbook.Sheets("list").Cells(i,ThisWorkbook.Sheets("Form").Cells(form_boX, 5).Value).Value
Next
form_box = 12
Label6.Caption=ThisWorkbook.Sheets("Form").Cells(form_box, 8).Value
For i = 2 To ThisWorkbook.Sheets("list").Cells(Rows.Count,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).End(xlUp).row
ComboBox6.Addltem ThisWorkbook.Sheets("list").Cells(i,ThisWorkbook.Sheets("Form").Cells(form_box, 5).Value).Value
Next
Run LOAD_VALUES()
Call Go_TextBox
Run alarmer(Cells(ActiveCell.row, l).Value)
...
...
End Sub
Как видно из продемонстрированного участка кода, информация о выпадающих списках загружается динамически. При каждом открытии приложения [23]. Таким образом, если поступает задача на добавление новой реакции по определенному блоку, администратору достаточно занести нужную информацию в базу данных и выпадающие списки обновятся автоматически при следующем запуске программы. Следует добавить, что такая функция реализована для всего комплекса клиентских программных приложений бизнес-процесса.
Ключевую роль в процессе проверки занимает прозвон телефонов клиента, контактных лиц и т.д. Благодаря именно этой функции сотрудник ОРФИ устанавливает информацию о клиенте, статусе заявки, причинах просрочки (если имеется) и т.д. Всего в рамках процесса проверки ОРФИ должны быть реализованы формы для прозвона следующих видов телефонов:
-
логический телефон;
-
личный номер клиента;
-
домашний телефон клиента;
-
анкетный рабочий телефон работодателя;
-
телефон контактных лиц;
-
дополнительный телефон.
Каждый тип телефонов имеет определенный диапазон возможный реакций, а так же прозвон каждого типа имеет свой собственный сценарий. Кроме того, у пользователя согласно техническому заданию должны быть реализована функция добавления нескольких телефонов и результатов по одному типу.
Для реализации данной задачи была разработана одна универсальная форма, которая в зависимости от выбранного типа телефона загружала необходимую информацию. Так же в рамках данной формы была реализована динамическое добавление элементов. Это позволило упростить логику работы программы, тем самым снизив время работы программы [22].
Когда сотрудник в основной форме выбирает определенный вид телефона срабатывает программный код, продемонстрированный ниже.
If UserForm1.phone_type = 1 Then UserForm3. Caption = "Логический
телефон"
End If
If UserForm1.phone_type = 2 Then UserForm3.Caption = "Мобильный телефон"
End If
If UserForm1.phone_type = 3 Then UserForm3.Caption = "Домашний телефон"
End If
If UserForm1.phone_type = 4 Then UserForm3.Caption = "Рабочий телефон"
End If
If UserForm1.phone_type = 5 Then UserForm3.Caption = "Телефон контактных лиц"
End If
If UserForm1.phone_type = 6 Then UserForm3.Caption = "Дополнительный телефон"