» Главная
eXcode.ru » Статьи » Базы данных
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 7





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




Автор: Dmitry Shakhov

Откровенно говоря, возможности для работы со строками в 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
К началу статьи





Добавил: LedWormДата публикации: 2005-07-16 20:19:39
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 50107

Комментарии читателей

Всего комментариев: 1766

2017-10-16 18:29:59
Anblnht
Новый сервис для заработка на просмотре видеороликов

Новинка интернет заработка видео-просмотры, которые приносят реальные деньги!

1 просмотр видео сто рублей! Все просто, понятно и доступно!

Оплата за просмотр моментально. На счёт который Вы укажите при регистрации.

Для начала работы пройдите несложную регистрацию на сайте: http://moneygrup.tk/

2017-10-16 12:02:48
Gtoubkf
Мы платим за лайки! - Выплаты по требованию!

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-10-11 13:45:58
Ybbuknj
Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

Мы гарантируем:
- Первый заработок в течении 60 минут.
- Стабильный доход 24 часа в сутки.
- Поступление денег без задержек.
- Для России, стран СНГ и Европы.
- Без вложений и установки ПО.
- Специально для новичков и людей без опыта.

Ознакомтесь с условиями на нашем сайте. ( www.prosto-dengi.tk )

2017-10-09 18:37:05
Islhwfi
Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> http://obrabotka-zakazow.tk/ <<

2017-10-08 21:00:19
Xipryeo
Платим за лайки! - Оплата ежедневно!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > http://oplata-vklike.tk/ <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-10-04 08:28:44
FrankGeft
<a href=http://bit.ly/2doNLIP>поисковая раскрутка сайта</a>
с помощью агрегатора сайтов

[url=http://site-agregator.ru][img]http://s45.radikal.ru/i110/1702/c6/e28611ea9003.gif[/img][/url]


[url=http://bit.ly/2doNLIP]продвижение компании в интернете[/url]



$$+$$*

2017-10-04 06:51:27
DadgilTanda
Titan Gel - увеличение члена

[url=http://kshop2.biz/iDlRKb][img]http://s002.radikal.ru/i198/1707/14/3c3b80fcaf54.jpg[/img][/url]

Вам не нужны сомнительные препараты или дорогостоящие операции.

[url=http://kshop2.biz/iDlRKb][img]http://s019.radikal.ru/i634/1703/80/511fb7c108bc.png[/img][/url]



[url=http://bit.ly/2kSXFpB]купить гексоген[/url]






=xxx$$=

2017-10-02 23:33:47
RickyEmova
Ведущий Российский интернет магазин с огромным выбором высококачественных товаров по низким ценам http://bit.ly/2kSXFpB
[url=http://bit.ly/2kSXFpB]Черная маска AFY[/url]

2017-10-01 21:47:03
DadgilTanda
Diesel New

[url=http://true-gooods.ru/diesel-a/?ref=26924&lnk=947412][img]http://s011.radikal.ru/i316/1707/c1/ebed406c76f3.jpg[/img][/url]

ЭЛИТНЫЕ ЧАСЫ DIESEL
ОЛИЦЕТВОРЕНИЕ СТАТУСА И УСПЕХА
12 месяцев гарантии

[url=http://true-gooods.ru/diesel-a/?ref=26924&lnk=947412][img]http://s012.radikal.ru/i320/1703/54/7050ad8e087e.png[/img][/url]










[url=http://bit.ly/2kSXFpB]алфавит на стену музыкальный купить[/url]






=xxx$$=

2017-09-29 16:02:32
wlizarof
Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> http://obrabotka-zakazow.tk/ <<
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Какую БД предпочитаете?
MSSQL
20% (38)
BDE
1% (1)
MySQL
35% (68)
Access
6% (11)
InterBase
11% (21)
Paradox
3% (5)
Oracle
10% (19)
PostgreSQL
0% (0)
Другой
3% (6)
Не использую БД!
12% (23)

Проголосовало: 192
Программистские проекты бывают трех основных типов:
1. Неудачный проект первого рода - когда не удалось заключить контракт.
2. Неудачный проект второго рода - когда удалось заключить контракт.
3. Удачный проект, или проект с предоплатой.
Рейтинг: 0/10 (0)
Посмотреть все анекдоты