(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Работа со строками в MS Access

Администратор

Откровенно говоря, возможности для работы со строками в MSA небольшие и приходится писать собственные функции. О них и речь...
 
Поиск последнего символа в строке, например, последней точки в имени файла для определения расширения или последнего слэша в пути к файлу для определения имени файла в пути.

'Вызов функции
MsgBox FndSmb(".","main.html")
'Сама функция
Public Function FndSmb(smb As String, stroka As String) As Long
Dim a As Long
Dim b As Long
a = 1
While a > 0
    b = a
    a = InStr(a + 1, stroka, smb)
Wend
FndSmb = b
End Function

Замена символа или последовательности символов, чем-то похоже на одноименную функцию в РНР. Пришлось написать, когда возникла необходимость в использовании формул, задаваемых пользователем. Проблема была в том, что внутри кода разделитель мантиссы запятая, а вот для фукнции Eval нужна точка. В итоге получилась гораздо более функциональная вещь.
P.S. Начиная с версии 2000 в MSA есть функция replace(). Так что можете пользоваться ею.

'Вызов функции
MsgBox str_replace(",",".","9,9*10,17")
'Сама функция
Public Function str_replace(s1 As String, s2 As String, s As String) As String
Dim n1 As Long
Dim n2 As Long
Dim v1 As String
Dim v2 As String
Dim v3 As String

v3 = s
n2 = 1
n1 = InStr(n2, s, s1)

If n1 > 0 Then
    Do
        v1 = Mid(v3, 1, n1 - 1)
        v2 = Mid(v3, n1 + Len(s1), Len(v3) - n1)
        v3 = v1 & s2 & v2
        n2 = n1 + Len(s2)
        n1 = InStr(n2, v3, s1)
    Loop Until n1 < 1
End If

str_replace = v3
End Function

Более сложная функция для получения элемента из строки с разделителями. Возникла из задачи, когда в одном поле таблицы оказались данные, которые необходимо было разнести по разным столбцам.
Опять же в РНР такая функция есть (split), а вот в MSA нет.

'Вызов функции
MsgBox ExpandStr("Waw;2347859;dfskgdkf",";",2) '2347859
'Сама функция
Public Function ExpandStr(stroka As String, Razdel As String, numpos As Long)
Dim n1 As Long
Dim s1 As String
Dim v1 As String
Dim v2 As String
Dim v3 As String
Dim i As Long

v3 = stroka
s1 = Razdel
n1 = InStr(1, v3, s1)
i = 0

If n1 > 0 Then
    Do
        v1 = Mid(v3, 1, n1 - 1) 'возвращает слово до поисковой строки
        v2 = Mid(v3, n1 + Len(s1), Len(v3) - n1) 'возвращает слово после поисковой строки
        v3 = v2 'склейка
        n1 = InStr(1, v3, s1) 'выполняем новый поиск подстроки
        i = i + 1
    Loop Until n1 < 1 Or i >= numpos 'если такой подстроки нет, то обрываем поиск
End If
If n1 < 1 And i < numpos Then
    ExpandStr = v2
Else
    ExpandStr = v1
End If
End Function
 

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 03.09.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Standard (corporate)
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Новые материалы
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100