Archive for the ‘Утилиты’ Category
Как использовать строку состояния
При выполнении длительных операций желательно и даже необходимо держать пользователя в курсе дела. Один из вариантов это отображать текущее состояние процесса в специально открытой форме. Там же можно и кнопку отмены разместить. Вторым более простым вариантом является использования строки состояния. В MS Access со строкой состояния можно работать через вызов функции SysCmd(). Я написал функции-оболочки для нее и разместил в библиотечном модуле mc_StrSost.
Всего получилось три функции для работы с прогресс баром:
CM_PrBarStart()— инициализировать прогресс барCM_PrBarStep()— изменить прогресс барCM_PrBarEnd()— убрать прогресс бар
И одна функция для работы со строкой состояния:
CM_StrSost()
Что бы это все заработало необходимо что бы строка состояния была включена (см. параметры запуска).
Код функций:
Public Sub CM_PrBarStart(ByRef stText As String, ByVal lMaxVal As Long)
' инициализация прогресс бара
DoEvents
SysCmd acSysCmdInitMeter, stText, lMaxVal
End Sub
Public Sub CM_PrBarStep(ByRef lNextVal As Long)
' увеличение строки прогресса
DoEvents
SysCmd acSysCmdUpdateMeter, lNextVal
End Sub
Public Sub CM_PrBarEnd()
' удаление прогресс бара
DoEvents
SysCmd (acSysCmdRemoveMeter)
End Sub
Public Function CM_StrSost(Optional stText As String = "")
' Изменяет строку сотояния, если текст не передан, строка состояния очищается
DoEvents
If stText = "" Then
SysCmd acSysCmdClearStatus
Else
SysCmd acSysCmdSetStatus, stText
End If
End Function
До встречи!
(с) Скоков Сергей
Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.
Как добавить новое значение в поле со списком
При заполнении какой-либо информации через поле со списком у пользователей возникает желание расширить предложенные варианты. Если поле со списком основано на таблице (далее справочник), то без проблем. Можно добавить отдельную форму для пополнения справочника. Но увы со временем пользователи забывают об этой возможности, да и данные в полях со списком нужно как-то обновить.
Гораздо быстрей и дешевле сделать добавление записей в таблицу-справочник непосредственно из самого поля со списком. Для этого есть специальное событие NotInList (Отсутсвует в списке). Что-бы каждый раз не писать код для добавления записей в таблице написана простая функция VC_AddToSpr(), она живет у меня в модуле mc_form.
Рассмотрим в качестве примера обработчик события для поля со списком с названиями стран:
Private Sub P_K_STRANA_NotInList(NewData As String, Response As Integer)
Response = mc_Form.VC_AddToSpr("s_strana", "T_STRANA", NewData)
End Sub
Как видите все просто. Нужно только указать имя таблицы, поле, куда сохранить данные, сами данные и обязательно результат функции VC_AddToSpr() записать в переменную Response. Иначе не заработает!
Варианты допустимых значений переменной Response и их описание можно посмотреть в справке MS Acceess.
А вот и сама функция:
Public Function CM_AddToSpr(strTabl As String, strField As String, NewData As Variant) As Integer
' Добавляет в справочник значение, используется на формах для полей со списком.
' Вызывать на событие NotInList (отсутствует в списке)
' Вход:
' strTabl - имя таблицы
' strField - имя поля
' NewData - новое значение
' Выход: возвращает значение для параметра события - Response
If Trim(NewData) = "" Then
MsgBox "Вы ввели пустую строку. В введенной строке должны присутствовать видимые символы.", vbExclamation
CM_AddToSpr = acDataErrDisplay
End If
If MsgBox("Введённое значение '" & NewData & "' отсутствует в справочнике, добавить справочник?", vbYesNo + vbQuestion, "Вопрос") = vbYes Then
CM_AddToSpr = acDataErrAdded
If VarType(NewData) <> vbString Then
CurrentDb.Execute "INSERT INTO " & strTabl & " (" & strField & ") Values (" & NewData & ");"
Else
CurrentDb.Execute "INSERT INTO " & strTabl & " (" & strField & ") Values ('" & Trim(NewData) & "');"
End If
End If
End Function
До встречи!
(с) Скоков Сергей
Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.