powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / изменение окончания у фамилии
25 сообщений из 54, страница 2 из 3
изменение окончания у фамилии
    #33287030
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For i = 1 To rs_fio.RecordCount
pozition = InStr("n_pok", " ")
sel$ = Mid$(sel$, 3, NumLeft%)

If a = sel$ Like "'ова'" Then
cnn.Execute "update tempDB set m='1'"
Else: cnn.Execute "update tempDB set m='0'"
End If
Next i

скажите пожалуйста, где ошибка? все записи метятся 0, хотя окончания в поле n_pok на ОВА имеются. только не надо пинать ногами...
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287277
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, не
a = sel$ Like "'ова'"
а
sel$ Like "'*ова'"
Во-вторых, я почему-то не вижу команду перехода с записи на запись... Хотя верю, что она там есть.
В-третьих, я не понимаю, что такое tempDB и как оно синхронизируется с этим рекордсетом.
В-четвертых, по этому алгоритму фамилии Казанова, Корова, Сова всегда будут женскими.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287330
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. позицию первого пробела в строке я нашел правильно? и 3 символа в лево будут проверяться правильно?
tempDB - это временная таблица, в которой есть 40 строк, она пока просто для экспериментов Владимир Саныч может быть Вы скажите как себе представляете решение моей проблемы? я что-то тоже не уверен что у меня все правильно подвязывается...
а насчет вашего четвертого пункта, то это не мои проблемы, а начальства, моя задача на данный момент определена, а остальное не мои проблемы. очень надеюсь на Вашу помощь
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287394
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyт.е. позицию первого пробела в строке я нашел правильно? и 3 символа в лево будут проверяться правильно?
Ой... Нет-нет. Я эту программу вообще не очень понимаю. Там куча переменных, которые обозначают непонятно что. Например, NumLeft.

Кроме того, обращение InStr("n_pok", " ") выдаст 0, потому что в строке "n_pok" нет пробелов. В общем, если надо проверить, что перед первым пробелом стоят буквы "ова", то я бы сделал так:

pozition=instr(XXX," ")
if pozition>0 then
if left(XXX,pozition-1) like "*ова" then
...
end if
end if

shadytempDB - это временная таблица, в которой есть 40 строк, она пока просто для экспериментов
То есть проверяем одну строку, а апдейт делаем во всех сорока? И так 40 раз?

А команды перехода на другую запись, похоже, все-таки нету...

Короче, проход по рекордсету обычно делают так:

do until rs_fio.eof
...
rs_fio.movenext
loop

Итого примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
do until rs_fio.eof
    pozition=instr(XXX," ")
    if pozition> 0  then
        if left(XXX,pozition- 1 ) like "*ова" then
            rs_fio.edit
            rs_fio!m= 1 
            rs_fio.update
        end if
    end if
    rs_fio.movenext
loop
где XXX - то поле, где видит фио.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287395
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...т.е. где сидит фио.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287440
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч, во первых большое Вам спасибо за помощь и надеюсь что Вы мне поможете и в дальнейшем
Код: plaintext
rs_fio.edit
вроде бы рекордсет не поддерживает такой метод, может быть нужно как-то по другому действовать...
да и...
Код: plaintext
 if left(XXX,pozition- 1 ) like "*ова" then
, -1 это позиция курсора на одну позицию влево? если да, то наверное следует перейти на 3 позиции влево?
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287449
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет edit - если это рекордсет ADO, то я просто не помню синтаксис. Пусть кто-нибдь подскажет.

Насчет 3 позиций - имеется в виду вот что:
Код: plaintext
Иванова М.И.
пробел найден в позиции 8, значит само слово Иванова имеет длину 7, вот его мы и проверяем, кончается ли оно на "ова".
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287586
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идиоты.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287593
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpИдиоты.
И Вам добрый вечер.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287727
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpИдиоты.
очень развернутый ответ... по делу лучше бы что-нибудь посоветовали
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287785
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
2 sandy
Я не знаю до чего ты дошел и может у тебя уже все получилось, но я бы для начала сделал так:
Расплитил все на разные поля |Фам|Им|От| (ф-я Split)
делать пришлось бы в два этапа(сплитить), но далее по таким данным легче определять пол.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33287793
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ-четвертых, по этому алгоритму фамилии Казанова, Корова, Сова всегда будут женскими.
А кроме алгоритма еще если так Казанова И.П. - то никогда не определишь who is who.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288001
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпо делу лучше бы что-нибудь посоветовали
Да Вам уже сказали и не раз, что по фамилии пол определить НЕВОЗМОЖНО .
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288035
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpДа Вам уже сказали и не раз, что по фамилии пол определить НЕВОЗМОЖНО.
Невозможно, но не всех фамилий, это же зависит от того какие у него данные.
90% сделает - уже хорошо.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288042
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp
Да Вам уже сказали и не раз, что по фамилии пол определить НЕВОЗМОЖНО .
если б вы читали внимательнее, то увидели б, что задача немного изменилась и теперь нужно определить пол у тех, у кого его можно определить очевидным образом, например Иванов, заканчивается на "нов", соответственно мужчина, Петрова, заканчивается на "ова" соответственное женщина, остальные - пол не определн, записи считаются неликвидными и в рассылке не принимают участия. если фамилий с определенным полом будет 20, 30, 50% - это тоже результат и очень хороший, я не требую 90% точности в определении пола.
если у вас есть дельный совет то пожалуйста, предлагайте.
на данный же момент, я воспользуюсь советом Евгений1234-5 , сначала разделю на 3 колонки одну, правда пока не получается...
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288102
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyИванов, заканчивается на "нов", соответственно мужчина, Петрова, заканчивается на "ова" соответственное женщина
Это неверно, примеры см. выше.

Но поскольку это вообще головная боль начальства, то здесь можно продолжать обсуждать задачу, смирившись с тем, что она решается неверно.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288144
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычНо поскольку это вообще головная боль начальства, то здесь можно продолжать обсуждать задачу, смирившись с тем, что она решается неверно.
ну неверно, пусть будет неверно, главное чтоб решалось в принципе.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288278
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторну неверно, пусть будет неверно, главное чтоб решалось в принципе.Ну если надо пустить пыль в глаза начальнику, так и говорил бы.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288329
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp , ну так что поможешь?
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288787
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему бы и не помочь. Можешь в асю стучать 237822510
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33288823
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений1234-5, че-то ни как не могу разобраться с функцией split, подскажи, как ты себе представляешь разделение одной строки на 3..
я попытался так:
Код: plaintext
1.
2.
3.
4.
5.
6.
Do Until rs_fio.EOF
    n_pok = rs_fio("n_pok")
    pozition = Split(n_pok, " ")
    cute$ = Left(pozition +  1 , "*")
    rs_fio("family") = cute$
    rs_fio.MoveNext
Loop
не получается... cute$ = Left(pozition, "*") здесь ругается на несоответствие типов... т.е. как же ему сказать что все что после пробела нужно воткнуть в "family" ?
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33289133
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Split - это не позиция!
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33289739
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ф-я Split(ТвояСтрока, "разделитель")
Для начала это пробел
Пишем

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim str

str=Split("Иванов Иван Сергеевич", " ")

Теперь str будет не просто переменной, а массивом:

str( 0 )="Иванов"
str( 1 )="Иван"
str( 2 )="Сергеевич"

Для определения верхней границы используй Ubound(str)
Результат пиши в таблицу.

Теперь второй этап если строка "Иванов И.С."
:)
Вобщем базу надо приводить к виду:
ФамИмОтИвановИСИвановИванСергеевич

ЗЗЗЫ База большая ? А то просто сгруппировать фамилии и если их не много, ручками проставить МО и ЖЭ
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33289830
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
база 150 000 записей, но по предложенному методу очень медленно все выполняется..
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33290501
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторбаза 150 000 записей, но по предложенному методу очень медленно все выполняется..
Сколько ? Если цель сделать это один раз - вопрос времени стоять не должен... ?

ЗЫ
По вопросу о скорости:
Характер задачи:
разбить ФИО на три поля
то же с адресом + разобратся где тут(там) улицы микр. и квартала.
Все это на рекордсете с занесением результата в соседение поля.
Машина P4 2.8 ГГц, 1 гиг Озу
первый файл 116 тыс. зап.
второй - 223 тыс. зап.
специально не замерял, но меньше 15 мин. работаит это точно.
Access XP sp3
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / изменение окончания у фамилии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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