Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нестрогое соответствие / 16 сообщений из 16, страница 1 из 1
09.07.2005, 16:22:01
    #33158055
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Здравствуйте.
Подскажите пожалуйста кто нибудь.

есть рекордсет Rs.Adodb.recordset
с фамилиями, Rs("Fio")
есть переменная Famil

Как мне отфильтровать Fio, так что бы отображались не только
Famil=Rs("Fio"), но и Famil приблизительно равет Rs("Fio").

"Иванов"="Ивонов" истина, или "Иванов" = "Ива но-в" истина.
Или может быть есть связь в SQL по нестрогому совпадению записей?
Подойдут любые варианты.
Спасибо.
...
Рейтинг: 0 / 0
09.07.2005, 17:11:22
    #33158070
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Это то что сразу в голову приходит сделать.
Ищет только по первым символам.
Всех проблем не решает.
Таких как скажем, пропущена вторая или первая буква, или очепятка
в первых "T" буквах и т.д.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim T As Integer 'точность проверки
Dim strA As String 'В этой строке ищем
Dim strB As String 'Строка которую ищем

T =  5 

strA = "Иванов"
strB = "Иван-ов"

For i =  1  To Len(strB) - T +  1 
MsgBox strB

If InStr( 1 , strA, strB) Then MsgBox "Да" Else MsgBox "Нет"
strB = Mid(strB,  1 , Len(strB) -  1 )

Next

Наверняка такие задачи решали многие кто работает с базами.
Подскажите пожалуйста.
...
Рейтинг: 0 / 0
09.07.2005, 22:32:40
    #33158145
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
если база - на SQL Server, то поискать на форуме SQL Server по ключевому слову "SOUNDEX" - сама эта функция с русским языком нифига не работает, но там были примеры самописных ХП
если база - Access, то писать свою функцию на VBA
вот еще этой теме...
...
Рейтинг: 0 / 0
10.07.2005, 01:27:00
    #33158175
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Спасибо за ссылку, но база Access.
...
Рейтинг: 0 / 0
10.07.2005, 10:16:24
    #33158217
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Читал про это кажется на Исходниках,т.е. www.sourse.ru или на vbrussion
не помню точно но тема такая была и код хороший приводили. Походи,поищи.
...
Рейтинг: 0 / 0
10.07.2005, 15:05:00
    #33158282
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Пока не могу найти ничего похожего, если будет ссылка напишите пожалуйста.
...
Рейтинг: 0 / 0
10.07.2005, 17:44:26
    #33158330
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Andrey13Пока не могу найти ничего похожего, если будет ссылка напишите пожалуйста.
Дык на форуме по sql'ю и поискать по SOUNDEX, а затем Перевести T-SQL в VBA - функции-то по работе с текстом по-большей части стандартные.
...
Рейтинг: 0 / 0
11.07.2005, 13:47:44
    #33159339
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Andrey13"Иванов"="Ивонов" истина, или "Иванов" = "Ива но-в" истина.
Или может быть есть связь в SQL по нестрогому совпадению записей?
Подойдут любые варианты.См. синтаксис LIKE
...
Рейтинг: 0 / 0
11.07.2005, 16:00:55
    #33159703
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Processor Вы не правы! Если б все было так просто как like. Вам же НАГЛЯДНО
пример с Ивановым привели:
автор"Иванов" = "Ива но-в" истина.
Не ужели не понятно что like тут не к месту.
...
Рейтинг: 0 / 0
11.07.2005, 16:53:06
    #33159847
Azart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Код: plaintext
1.
2.
strB = "Ива н-ов"
strB = Replace(strB, "-", "")
strB = Replace(strB, " ", "")
А дальше юзаем LIKE.
Как пример: авторLike '%Ив%'
...
Рейтинг: 0 / 0
11.07.2005, 17:35:53
    #33159955
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Да Вы что!!! А если "Ивенов" или "Иванков", тогда как?
Вот, кое что нашел на vbrussion. Привожу как есть:
Нечёткое сравнение строк
Автор: Gennady V. Alimov
Часто сталкивался с проблемой, когда нужно сравнивать строки, полученные из разных источников, которые имеют свою точку зрения на вопросы предоставления данных написание, грамотность, очепятки и т.д.). Например, "ул. Лёни Голикова" и "ул.Лени Голикава" в чём-то похожие названия, и хотелось бы как то это выразить. Данные пример как раз и служит для таких целей.
Выдает результат в виде числа от 0 до 1. Чем оно больше - тем больше схожесть строк.

Размер: 7 КБайт Добавлено: 22 августа 2003
...
Рейтинг: 0 / 0
11.07.2005, 20:41:57
    #33160223
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Спасибо, помоему то что нужно!!!. Сейчас попробую.
AndreyMp, я твой должник.
...
Рейтинг: 0 / 0
11.07.2005, 20:59:41
    #33160236
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Проблема была такая:
Из банка приходили сведения об оплате, где фамилии и адреса были
набиты от балды (без исполбзования справочника, и не имели уникального ключа). Банк подцепить мой справочник почемуто не мог.
Теперь сегодня банк стал терять клиентов и зашевелился, и AndreyMp
помог. Теперь я даже выбирать могу как лучше сделать.


Работает, теперь можно сравнивать, если скажем
Compare(strA, strB, 5)>0.5
то запихивать в комбо, а там оператор уже будет выбирать
из десятка фамилий правильную, а если
Compare(strA, strB, 5)=1 то вопрос вообще снимается.

Спасибо Gennady V. Alimov, и AndreyMp.
...
Рейтинг: 0 / 0
12.07.2005, 12:37:50
    #33161088
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
AndreyMpProcessor Вы не правы! Если б все было так просто как like. Вам же НАГЛЯДНО
пример с Ивановым привели:
автор"Иванов" = "Ива но-в" истина.
Не ужели не понятно что like тут не к месту.1. "Иванов" = "Ива но-в" истина. - это предел абстракции для объяснения цели.
Цель (истина-ложь) в таком виде может быть достигнута на малом количестве паттернов.
В более общем виде Вы, напр., приводите ссылку на Gennady V. Alimov, использовавшего критерий fuzzy logic.
Решение же принимает чаще всего оператор из отображаемого , предварительно отфильтрованного множества записей
на основе других соображений .
И сокращение отображаемого множества есть первая цель при создании интерфейса (неявно следует из темы топика).
Мне пришлось решать аналогичную задачу при визуализации подмножества записей из справочника контрагентов.
В частности, фамилию "КОЛОДЯЖНЫЙ" один из юзеров, ничтоже сумняшеся, упорно писал как "кАлАдяжный".
И LIKE, используемый в хранимой процедуре , спокойно выбирал записи, похожие на '%[КK][AOАО]Л[AOАО]%'
Если записи дополнительно обрабатываются и на клиенте , можно повысить качество распознавания, не теряя скорости реакции системы
на ввод символов с клавиатуры.
...
Рейтинг: 0 / 0
12.07.2005, 17:57:58
    #33162093
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Спасиьо Processor.
Почитаю о Like подробней. Пока не понятно что значит
'%[КK][AOАО]Л[AOАО]%', а именно квадратные скобки. И на основании чего вы формировали именно накое условие?
...
Рейтинг: 0 / 0
14.07.2005, 12:38:33
    #33165617
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестрогое соответствие
Andrey13Почитаю о Like подробней. Пока не понятно что значит
'%[КK][AOАО]Л[AOАО]%', а именно квадратные скобки.А сейчас, после прочтения синтаксиса LIKE, понятно?
Квадратные скобки - не главное .
А вот повторение сиволов, в них заключённых, на самом деле - не повторение!
По крайней мере, это заметно по начертаниям литер КK.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нестрогое соответствие / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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