Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить почтовый индекс из строки с адресом? / 6 сообщений из 6, страница 1 из 1
27.11.2007, 18:51
    #34969790
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить почтовый индекс из строки с адресом?
Добрый день!

В таблице (Access) есть поле с адресами:

129081, Москва, Новый Арбат, д.19, кв. 24
РФ 345876 г. Красноярск, ул. Ленина, д. 22, кв. 56

Как из каждого поля вытащить, удалить и вставить в новое поле индекс?

Заранее спасибо.
...
Рейтинг: 0 / 0
27.11.2007, 20:19
    #34970018
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить почтовый индекс из строки с адресом?
Код: plaintext
index = Left(Address, Instr(Address,",")- 1 )
Если нужно скопировать индексы в другое поле в той же таблице:
Код: plaintext
update [table] set [index] = Left(Address, Instr(Address,",")- 1 )
...
Рейтинг: 0 / 0
27.11.2007, 22:25
    #34970219
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить почтовый индекс из строки с адресом?
В аксессе есть возможность использовать код VBA в запросах.
Идея следующая:
Создаем модуль. Подключаем следующий Reference:
Microsoft VBScript Regular Expressions 5.5В модуле код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Compare Database
Option Explicit

Dim idxReg As RegExp
Dim idxMatches As MatchCollection

Public Function ExtractIndexFromAddress(ByVal SourceStr As String) As String
   If idxReg Is Nothing Then CreateIdxReg
   Set idxMatches = idxReg.Execute(SourceStr)
   If idxMatches.Count >  0  Then
      ExtractIndexFromAddress = idxMatches.Item( 0 )
   End If
End Function

Private Sub CreateIdxReg()
   Set idxReg = New RegExp
   idxReg.Pattern = "\d{6}"
End Sub
Далее, создаем запрос:
Код: plaintext
UPDATE Table1 SET aIndex = ExtractIndexFromAddress(Address);
Прогоняем его и все.
В качестве теста взял и ваш пример и накидал в таблицу тарабанщины с вкраплениями индекса из 6 цифр.
...
Рейтинг: 0 / 0
27.11.2007, 22:30
    #34970229
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить почтовый индекс из строки с адресом?
ps:
Не заметил то что вам нужно еще и удалить индекс из поля адреса.
Переписал текст запроса, и получил нужный результат.
Код: plaintext
UPDATE Table1 SET Table1.aIndex = ExtractIndexFromAddress(Address), Table1.Address = Replace(Address,aIndex,"");
...
Рейтинг: 0 / 0
27.11.2007, 22:37
    #34970238
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить почтовый индекс из строки с адресом?
Worobjoff
Код: plaintext
UPDATE Table1 SET Table1.aIndex = ExtractIndexFromAddress(Address), Table1.Address = Replace(Address,aIndex,"");
Ошибку сделал. Надо по очереди выполнить два запроса.
Код: plaintext
1.
UPDATE Table1 SET Table1.aIndex = ExtractIndexFromAddress(Address)
UPDATE Table1 SET Table1.Address = Replace(Address,aIndex,"");

или так - одним запросом:
Код: plaintext
1.
UPDATE Table1 SET Table1.aIndex = ExtractIndexFromAddress(Address)
, Table1.Address = Replace(Address,ExtractIndexFromAddress(Address),"");
...
Рейтинг: 0 / 0
29.11.2007, 18:05
    #34976083
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вытащить почтовый индекс из строки с адресом?
Спасибо за конкретный ответ. Все работает.

Слава великому богу SQL.RU и его проповедникам!!!! Сколько раз помогал.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить почтовый индекс из строки с адресом? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]