Найти букву в слове и заменить на *
Модератор: Naeel Maqsudov
Всем привет!!!
Такая вот задачка!!!
Есть база данных Access 2007 (Это не принципеально есть и на 2003)
В базе есть таблица состоящая из 1 строки и 3 столбца т.е.
I 1-Фамилия I 2_Имя I Очество I
I _______________I________________ I______________I
I Іванов I Ніколай I Петровіч I
Так вот это написано на Украинском языке
Нужен макрос который найдет букву "І" И заменит ее на "*"
Затем найдет букву ну к примеру "О" и также заменит ее на "*"
И так далие затем перейдет к следующему столбцу.
Чесно говоря уже два дня убил нечего не получаеться!!!
С VBA слабовато но уже купил книгу Джефф Споттс
Ну вобщем если мне кот небудь в чем то поможет моей благодарности не
будет придела !!!
Спасибо за внимание к моему письму!!!!
Такая вот задачка!!!
Есть база данных Access 2007 (Это не принципеально есть и на 2003)
В базе есть таблица состоящая из 1 строки и 3 столбца т.е.
I 1-Фамилия I 2_Имя I Очество I
I _______________I________________ I______________I
I Іванов I Ніколай I Петровіч I
Так вот это написано на Украинском языке
Нужен макрос который найдет букву "І" И заменит ее на "*"
Затем найдет букву ну к примеру "О" и также заменит ее на "*"
И так далие затем перейдет к следующему столбцу.
Чесно говоря уже два дня убил нечего не получаеться!!!
С VBA слабовато но уже купил книгу Джефф Споттс
Ну вобщем если мне кот небудь в чем то поможет моей благодарности не
будет придела !!!
Спасибо за внимание к моему письму!!!!
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Посмотрите тему http://forum.developing.ru/showthread.php?t=7247, может пригодится?
Созвучные фамилииAent писал(а):А можно узнать какая цель замены? Access отлично работает и с дополнительными
символами кириллицы с диакритическими значками.
Например Для поиска фамилии М_и_колаєнко или М_і_колаенко
В любом случае как бы не вводили буквы "И" "і" надо заменить на звезды**
У Меня у самого фамилия созвучная с предд..
В паспорте и в дипломе одна в школьном аттестате немного по-другому
PS ну не обязательно на "*" можно и на "?"
Потом запрос access _a с этой таблице будет брать значения для условий отбора в базе данных.
Напомню там всего одна строчка и три столбца. И это access.
Если бы вопрос стоял с обнаружением в слове только 1й буквы к примеру "і" то можно было создать запрос обновления с функц.. Replace([(Таблица1)]![Поле1];"і";"*") но как заставить меняться переменную "і" скажем к примеру на "и","о" ,"а"
Как это собрать в макросе я приблизно знаю а вот как стать на поле [(Таблица1)]![Поле1] и начать поиск символа а затем перейти на поле [(Таблица1)]![Поле2] почему-то еще не догнал .
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте gartes.
"... найдет букву "І" И заменит ...", это скорее не сама задача, а инструмент для ее решения. А вот эта строка "...запрос access _a с этой таблице..." похоже и есть то ради чего...
Может "объявите" свою задачу, ради которой собираетесь что-то, где-то менять?
Евгений.
"... найдет букву "І" И заменит ...", это скорее не сама задача, а инструмент для ее решения. А вот эта строка "...запрос access _a с этой таблице..." похоже и есть то ради чего...
Может "объявите" свою задачу, ради которой собираетесь что-то, где-то менять?

Евгений.
простая база с фамилиямиTeslenko_EA писал(а):Здравствуйте gartes.
"... найдет букву "І" И заменит ...", это скорее не сама задача, а инструмент для ее решения. А вот эта строка "...запрос access _a с этой таблице..." похоже и есть то ради чего...
Может "объявите" свою задачу, ради которой собираетесь что-то, где-то менять?
Евгений.
Для того чтоб небыло ошибок в поиске при вводе созвучных букв в фамилиях
К примеру : Сидит девочка, ей надо найти Евгения
Она наберет "Евгений" ----- только на украинском будет уже Буква "Э"
Вобщем цель макроса изменить запись "ЕВГЕНИЙ" на "*ВГ*Н*Й" НУ ИЛИ ЧТОТО ПОХОЖЕЕ!!!
Скажем есть масив букв который содержит "а";"о";"э";"ы";Ну пока и хватит так вот надо их заменнить на знак "*"
Я уже разобрался как с помощью RecordSet считать данные осталось только как найти и заменить эти буквы вобщем я думаю задача не сложная!!!
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Как мы c Teslenko_EA и подозревали в базе ничего править не нужно. Нужно трансформировать входящий запрос в регулярное выражение для SELECT. Т.е на основании введённой строки строятся варианты транскрибирования и строится запрос которому удовлетворяют все эти варианты.
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте gartes.
Мне кажется источник строк Вашего рекордсета вполне можно создавать в подобной функции:а в качестве ее аргумента используйте поле ввода. Конструкция может иметь подобный вид:Table - имя Вашей таблицы
Name1 - поле по которому будет осуществляться выборка
Me.Поле1 - поле на форме в которое девочка будет вводить мое имя.
Евгений.
Мне кажется источник строк Вашего рекордсета вполне можно создавать в подобной функции:
Код: Выделить всё
Function toQuery(sArg) As String
Dim i%, s$
toQuery = "SELECT * FROM Table "
If Len(sArg & "") > 0 Then
s = "'*'"
For i = Len(sArg) To 1 Step -1
Select Case Mid(sArg, i, 1)
Case "а", "о", "э", "ы" 'список символов требующих замены
s = "'?' & " & s
Case Else
s = "'" & Mid(sArg, i, 1) & "' & " & s
End Select
Next
toQuery = toQuery & " WHERE Name1 Like " & s
End If
End Function
Код: Выделить всё
...
sSQL = toQuery(Me.Поле1) ' строка запроса
Set rs = ... ' создание и открытие рекордсета с использованием запроса sSQL
Name1 - поле по которому будет осуществляться выборка
Me.Поле1 - поле на форме в которое девочка будет вводить мое имя.

Евгений.