Робота з рядками в MS Access, MS Office, Програмні керівництва, статті








Відверто кажучи, можливості для роботи з рядками в 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
 

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*