5 строк кода

Как писать приложения на MS Access

Archive for the ‘Утилиты’ Category

2 полезные строковые функции

2 комментария

В своей работе некоторые самописные функции для работы со строками стали уже не заменимыми. Они располагаются в модуле mc_str.

1. CM_ConcLabel() — объединить название и значение.
2. CM_ConcStr() — объединить набор строк через разделитель.

Пример использования CM_ConcLabel():

Dim stAddress as String

'-- Если корпус не указан, то он не отобразится
stAddress = CM_ConcLabel("ул. ", stUl) & " " CM_ConcLabel("дом ", stDom) & " " & CM_ConcLabel("корп. ", stKorpus)

Пример использования CM_ConcStr():

Dim stFilter As String
Dim frmPl as Form

'-- ...

If Nz(frmPl("P_T_KLIENT_FLT")) <> "" Then
	stFilter = "T_KLIENT Like '*" & frmPl("P_T_KLIENT_FLT") & "*'"
End If

If Nz(frmPl("P_MES_FLT"), 0) <> 0 Then
	stFilter = CM_ConcStr(" AND ", stFilter, "MES = " & frmPl("P_MES_FLT"))
End If

If Nz(frmPl("P_GOD_FLT"), 0) <> 0 Then
	stFilter = CM_ConcStr(" AND ", stFilter, "GOD = " & frmPl("P_GOD_FLT"))
End If

Тест функций:
Read the rest of this entry »

Written by Сергей Скоков

Август 8th, 2012 at 12:09 пп

Как использовать строку состояния

Один комментарий

Progress BarПри выполнении длительных операций желательно и даже необходимо держать пользователя в курсе дела. Один из вариантов это отображать текущее состояние процесса в специально открытой форме. Там же можно и кнопку отмены разместить. Вторым более простым вариантом является использования строки состояния. В 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 рассылку или добавить в ЖЖ друзья.

Written by Сергей Скоков

Март 27th, 2011 at 1:19 дп