Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 11:49   #1
Елена Гох
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 36
По умолчанию регулярные выражения для поиска и замены

Подскажите, пожалуйста, как написать код, чтобы поменять местами подстроки при помощи регулярных выражений. Например, задача - изменить американский формат даты на наш. Вот код для поиска
With RegEx
.MultiLine = False
.Global = True
.IgnoreCase = True
.Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)"
End With

А как написать замену (поменять местами первую и вторую подстроки?
Заранее благодарна.
Елена Гох вне форума Ответить с цитированием
Старый 17.01.2011, 15:07   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте Елена

После каждого нахождения, в VBA впишите строчку кода (скопировав предварительно в strOldDate "старую" дату)

strNewDate = Format(strOldDate, "dd/mm/yyyy")

Попробуйте в прямо в запросе

SELECT поле1, ..., Format([ВашеПолеСдатой], "dd/mm/yyyy") AS НоваяДата
FROM Таблица;

До свидания.
OlegVE вне форума Ответить с цитированием
Старый 17.01.2011, 19:19   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Елена.
OlegVE верно подсказал - "..прямо в запросе..", "..задача - изменить американский формат даты на наш.." - распространяется только на отображение даты в национальном формате, а записывается она в любом случае одним и тем же числовым значением.
Вопрос "..поменять местами первую и вторую подстроки?.." - требует уточнения.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 18.01.2011, 11:37   #4
Елена Гох
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 36
По умолчанию

Большое спасибо за участие. Случай с форматом правильный, но это лишь частный, меня же интересуют регулярные выражения, нигде не могу найти синтаксис для VBA. У меня, например, поле символьное, куда записан диапазон дат.
Елена Гох вне форума Ответить с цитированием
Старый 18.01.2011, 16:50   #5
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте, Елена.
Регулярные выражения (Regular Expressions), не являются кодом, в смысле программным. Никакого отношения ни к VBA ни к какому либо другому язуку программирования не имеют (это язык описаний). Например, вы могли просто искать в тексте слово, а если это слово "вертолёт", то к авиации VBA не имел бы никакого отношения.
Если Вы написали код (програмный)
Код:
With RegEx
.MultiLine = False
.Global = True
.IgnoreCase = True
.Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)"
End With
и у Вас он работает
то надо понимать Вы написали
и
Set regEx = New RegExp
и
установили ссылку на "Microsoft VBScript Regular Expressions"...
Цитата:
нигде не могу найти синтаксис для VBA
не понимаю, чего же Вы хотите...
До свидания

PS Если Вас интересуют регулярные выражения, то думаю Вам надо обратиться на форум по Perl, в нём их часто используют. В базах данных манипулируют записями и полями, т.е. какими-то готовыми блоками, не сильно рассматривая их содержимое, регулярными выражениями пользуются те, кто много работат с СОДЕРЖИМЫМ текста.
OlegVE вне форума Ответить с цитированием
Старый 18.01.2011, 17:04   #6
Елена Гох
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 36
По умолчанию

Всегда приятно пообщаться с коллегами. Чего хочу - освоить работу с регулярными выражениями. Я как раз работая в отделе, где основная задача- преобразовывать поля из различных электронных форматов для запихивания в конкретную базу. Это одна из мелких подзадач. Более большая - разбор текстовых полей (описание) на составляющие. В этом регулярки очень помогают.
Сегодня наконец нашла в книге в главе по VB.Net, в VBA работает, вот предпоследняя замены:

With RegEx
.MultiLine = False
.Global = True
.IgnoreCase = True
.Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)"
creatstring = .Replace(creatstring, "$2/$1/$3")
End With

Я довольна.
Елена Гох вне форума Ответить с цитированием
Старый 18.01.2011, 17:04   #7
Елена Гох
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 36
По умолчанию

Всегда приятно пообщаться с коллегами. Чего хочу - освоить работу с регулярными выражениями. Я как раз работая в отделе, где основная задача- преобразовывать поля из различных электронных форматов для запихивания в конкретную базу. Это одна из мелких подзадач. Более большая - разбор текстовых полей (описание) на составляющие. В этом регулярки очень помогают.
Сегодня наконец нашла в книге в главе по VB.Net, в VBA работает, вот предпоследняя замены:

With RegEx
.MultiLine = False
.Global = True
.IgnoreCase = True
.Pattern = "(\d{1,2})/(\d{1,2})/(\d\d\d\d)"
creatstring = .Replace(creatstring, "$2/$1/$3")
End With

Я довольна.
Елена Гох вне форума Ответить с цитированием
Старый 18.01.2011, 19:39   #8
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
Сообщение от Елена Гох Посмотреть сообщение
...хочу - освоить работу с регулярными выражениями... ...основная задача- преобразовывать поля из различных электронных форматов для запихивания в конкретную базу...
...нашла в книге в главе по VB.Net...
Теперь почти понятно, когда всё сделано. Вам просто нужно было или найти функцию Replace...
стр 118-119 ?
http://softtime.ru/info/fridl.php?down=fridl.djvu
или
"$2/$1/$3",
http://msdn.microsoft.com/en-us/libr...00(VS.85).aspx
это всё Вы получили бы вчера...

До свидания, коллега
OlegVE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения Dima_D Общие вопросы Delphi 0 11.08.2010 21:16
регулярные выражения для постраничной навигации ilma55 PHP 4 16.03.2010 11:26
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
Макрос для поиска и замены слов на слова с верхним подчеркиванием salvafion Microsoft Office Word 4 07.09.2009 19:14
Макрос для поиска/замены Davidoff Microsoft Office Excel 1 20.01.2007 16:01