Предложены методики проверки корректности вводимых данных, обеспечивающие безопасность и точность поступающей в базы данных информации, целостность базы при удалении и изменении данных. Предлагается решение проблемы на основе Visual Basic и SQL.
При проектировании клиентских приложений работающих с базами данных необходимо заложить основу, обеспечивающую безопасность информации в базах, корректность добавляемой информации, целостность базы при удалении и изменении данных [1]. Реализация поставленной задачи возможна только при проверке вводимой информации на соблюдение требуемых положений по работе с базой данных. Следовательно, проверка корректности вводимой пользователем информации является актуальной задачей при проектировании клиентских приложений.
Проверка корректности выполняется путем решения ряда проблем увеличения точности ввода данных [2]:
- обязательное наличие значений в водимых полях;
- проверка типа вводимых данных (цифровой, буквенный, дата);
- ограничение диапазона значений данных;
- корректность преобразовательных инструкций при работе с базой данных;
- разработка обширной системы оповещения пользователя.
Перечисленные выше задачи были решены при разработке АРМ «Успеваемость». Для этого использовались следующие методики:
- Проверка на наличие значения в поле выполняется с помощью ниже приведенного кода[3]. Код содержит строку текста сообщения, которое появляется на экране, если не указаны вводимые данные (интерфейс аналогичен рисунку 1):
If cmbGrp.Value = "" Then
MsgBox "Необходимо выбрать группу!", vbInformation, "АРМ Успеваемость" Exit Sub
End If
- Проверка значения вводимого в поле на соответствие определенному типу данных можно осуществить следующим способом:
Например, вводимое значение должно быть в форме даты. Эта проблема решается использованием компонента календарь [3]. Т.е. запрещается ввод любых иных данных в поле с оповещением пользователя соответствующим сообщением (рисунок 1)
Код, выполняющий эту задачу, приведен ниже:
If IsNull(plDateProved.Value) = True Then
MsgBox "Необходимо указать дату!", vbInformation, "АРМ Успеваемость" End If
А также уустанавливаем условие на корректность вводимой даты.
If plDateProved > Date Then
MsgBox "Указана НЕ КОРРЕКТНАЯ дата!", vbCritical, "АРМ Успеваемость" End If
- Условие ограничения на диапазон вводимых данных.
В АРМ Успеваемость для ввода баллов было использовано ограничительное условие ввода данных в виде цифр [4]. Для этого был использован следующий код:
Private Sub Ball_KeyPress(KeyAscii As Integer)
If ((KeyAscii <> 8) And (KeyAscii < 48)) Or (KeyAscii > 57) Then KeyAscii = 0 'backspase = 8 End Sub.
Рисунок 1 – Интерфейс ввода даты АРМ «Успеваемость»
Проверка на диапазон вводимых численных значений(от 0 до 30) может быть выполнена кодом приведенным ниже:
Set rs = CurrentProject.Connection.Execute("SELECT IKT, G_CODE, ID_PPS, Ball, ID_DIS FROM dbo.tmp_pk WHERE (Ball > 30) AND (G_CODE = '" & Form_frmPriv.cmbGrp & "') and (ID_DIS = '" & Form_frmPriv.cmbdis.Value & "') and (ID_PPS = '" & Form_frmPriv.tmpUnicode.Value & "')")
If rs.RecordCount > 0 Then
MsgBox "Проставлены не корректные баллы!" & vbCrLf & "Значение должно быть в диапозоне от 0 до30!", vbCritical, " АРМ Успеваемость "
End If
Интерфейс предупреждающего сообщения приведен на рисунке 2.
- Проверку на корректность преобразовательных инструкций при работе с базой данных осуществляется с помощью двух технологий на основе SQL команд [5].
- a) Режим проверки:
Set rs = CurrentProject.Connection.Execute("SELECT IKT, G_CODE, ID_PPS, Ball, ID_DIS FROM dbo.tmp_pk WHERE (Ball IS NULL) AND (G_CODE = '" & Form_frmPriv.cmbGrp & "') and (ID_DIS = '" & Form_frmPriv.cmbdis.Value & "') and (ID_PPS = '" & Form_frmPriv.tmpUnicode.Value & "')")
If rs.RecordCount > 0 Then
MsgBox "Баллы проставлены не увсех!", vbCritical, " АРМ Успеваемость "
End If
б) Режим вставки:
Set rs = CurrentProject.Connection.Execute("INSERT INTO dbo.tb_RK1 (IKT, Ball, ID_PPS, ID_Dis, Date_Proved, Kol_Kr) SELECT IKT, Ball, ID_PPS, ID_DIS, Date_Proved, Kol_kr FROM dbo.tmp_pk WHERE (G_CODE = '" & Form_frmPriv.cmbGrp & "') and (ID_DIS = '" & Form_frmPriv.cmbdis.Value & "') and (ID_PPS = '" & Form_frmPriv.tmpUnicode.Value & "')")
Тем самым увеличиваем стабильность работы приложения и сохраннность данных.
Рисунок 2 – Интерфейс проверки введенных данных на вхождение в установленный диапазон значений. АРМ «Успеваемость»
- Для пользователя одним из основных моментов увеличивающих точность ввода данных являются оповещающие сообщения. Они информируют, предупреждают пользователя о проделанных действиях, предотвращая возможность совершения ошибки [6] (интерфейс сообщений аналогичен рункам 1 и 2).
Код:
If rs.RecordCount > 0 Then
MsgBox "Проставлены не корректные баллы!" & vbCrLf & "Значение должно быть в диапозоне от 0 до 30!", vbCritical, "АРМ Успеваемость"
Exit Sub End If
Вывод:
Предлагаемые методики позволят существенно снизить количество ошибок при вводе, тем самым обеспечивая точность сохраняемых данных в базе, целостность данных и стабильность работы приложения.
Литература
- http://nplastic.ru/?page_id=13 – Целостность данных
- Блюттман К. Access. Трюки. – СПб.: Питер, 2006. – 332 с.: ил(л).
- Кузьменко В.Г. Программирование на VBA – М.: ООО «Бином-Пресс», 2003. – 880 с.:ил(л).
- Дженнингс Р.; Использование Microsoft Office Access 2003 – М: Издательский дом «Вильямс», – 1312 с.: ил(л).
- Шевченко Н. А. Access Искусство создания базы данных – М.: НТ Пресс, 2005 – 160 с.: ил(л).
- Хорев В.Д. Самоучитель программирования на VBA в Microsoft Office. – К.: Юниор, 2001. – 320 с.: ил(л).