powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / изменение окончания у фамилии
54 сообщений из 54, показаны все 3 страниц
изменение окончания у фамилии
    #33284757
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
поставили такую задучу: есть база данных с полем FIO в которм записаны фамилии и инициалы, причем записаны как попало, например есть такие записи

1. Иванов И.И.
2. Петровой П.П.
3. Сидоров
4. Иванова Ольга Ивановна

в общем все как попало...

моя задача такая:
каим-то образом из этих бредовых записей узнать пол человека (по крайней мере я себе это так представляю) чтобы из полученных записей получить данные в именительном и родительном падеже, т.е.

Иванов И.И. ; Иванову И.И.
Петрова П.П. ; Петровой П.П.
Сидоров ; Сидорову
Иванова Ольга Ивановна ; Ивановой Ольге Ивановне

у кого-нибудь имеется мнение:
1. Вообще реально ли такое?
2. Если реально подскажите пожалуйста как можно это реализовать?

----------------
данные:
база access 2000
записей порядка 150 000

я не представляю как такое вообще можно сделать на ВБ, знаю что такое вполне решаемо на ФоксПро, а как насчет ВБ?

любые советы, мнения очень приветствуются.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33284820
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пол человека вполне возможно узнать по отчеству, проходит у большинства. У женщин окончание "на", у мужчин "ич". Я такое делал и при других окончаниях просто выводил диалог. По фамилии ничего сказать нельзя, поскольку большинство из них ничего не говорит о поле - Кравченко, Задерейчук, Акопян, Рабинович и т.д. (но такие фамилии тебя не должны беспокоить, поскольку не изменяются в любом падеже). Так что тебе я думаю стоит составить список окончаний М и Ж фамилий по падежам и на его основе что то думать о реальности. А в чем реализовывать не важно. Главное - алгоритм.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33284990
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так алгоритм - это самое главное, хорошо бы если были все записи одинаковые, тогда задача былы бы намного проще, как я писал, записи настолько разнообразны, что нельзя даже самому понять с чего начать

1. Иванов И.И.
2. Петровой П.П.
3. Сидоров

например какой должен быть алгоритм для таких записей? я что-то даже не могу представить...
точнее могу, но думаю не правильно...
во первых единственная закономерность в этих записях - это фамилия, которая всегда первая по порядку, от этого я думаю стоит отталкиваться.
потом каким-то образом нужно узнать конец слова, и проверить его окончание.
как это сделать, понятия не имею...
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285007
Если формат: Иванов А.А. - ищи позицию первого пробела и от него отнимай то количество символов, чтобы проанализировать оканчание фамилии. Если просто: Иванова - анализируй символы справа.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285056
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а помочь с кодом можете? как искать позицию пробела я не представляю...
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285075
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нарыл вот прогу на Фокс Про, она как раз такое делает, что мне нужно... как разобраться что там делается и как, языки впринципе очень похожи, и думаю что код для моей ВБшной программы будет практически таким же
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
* Изменение фамилий
pokon=Right(ALLTRIM(famcl), 3 )
DO CASE
  *позиция окончания для женского пола
  CASE pokon='вой'
     okon=AT('вой',ALLTRIM(famcl))
     FIOIP=LEFT(ALLTRIM(famcl),okon)+'а'
     replace facl_ip WITH FIOIP, polcl WITH 'ж'
  CASE pokon='ной'
    okon=AT('ной',ALLTRIM(famcl))
    FIOIP=LEFT(ALLTRIM(famcl),okon)+'а'
    replace facl_ip WITH FIOIP, polcl WITH 'ж'
   CASE pokon='кой'
    okon=AT('кой',ALLTRIM(famcl))
    FIOIP=LEFT(ALLTRIM(famcl),okon- 1 )+'кая'
    replace facl_ip WITH FIOIP, polcl WITH 'ж'
    
    *позиция окончания для мужского пола
  CASE pokon='ову'
    okon=AT('ову',ALLTRIM(famcl))
    FIOIP=LEFT(ALLTRIM(famcl),okon)+'в'
    replace facl_ip WITH FIOIP, polcl WITH 'м'
  CASE pokon='ину'
    okon=AT('ину',ALLTRIM(famcl))
    FIOIP=LEFT(ALLTRIM(famcl),okon)+'н'
    replace facl_ip WITH FIOIP, polcl WITH 'м'
  CASE pokon='еву'
    okon=AT('еву',ALLTRIM(famcl))
    FIOIP=LEFT(ALLTRIM(famcl),okon)+'в'
    replace facl_ip WITH FIOIP, polcl WITH 'м'
  CASE pokon='ому'
    okon=AT('ому',ALLTRIM(famcl))
    FIOIP=LEFT(ALLTRIM(famcl),okon- 1 )+'ий'
    replace facl_ip WITH FIOIP, polcl WITH 'м'
  
  OTHERWISE
	FIOIP=ALLTRIM(famcl)
	replace facl_ip WITH FIOIP, polcl WITH 'н'
  ENDCASE
  * Изменение имен
  pokon=Right(ALLTRIM(namecl), 1 )
  DO CASE 
    *позиция окончания для мужского пола
  CASE pokon='у'
    okon=RAT('у',ALLTRIM(namecl))
    NAMEIP=LEFT(ALLTRIM(namecl),okon- 1 )
    replace nacl_ip WITH NAMEIP, obrcl WITH obr
  CASE pokon='ю'
    okon=RAT('ю',ALLTRIM(namecl))
    NAMEIP=LEFT(ALLTRIM(namecl),okon- 1 )+'й'
    replace nacl_ip WITH NAMEIP, obrcl WITH obr
     *позиция окончания для женского пола
   CASE pokon='е'
    okon=RAT('е',ALLTRIM(namecl))
    NAMEIP=IIF(ALLTRIM(namecl)='Зое',LEFT(ALLTRIM(namecl),okon-1)+'я',LEFT(ALLTRIM(namecl),okon-1)+'а')
    replace nacl_ip WITH NAMEIP, obrcl WITH obr
 
  OTHERWISE
	NAMEIP=ALLTRIM(namecl)
	replace nacl_ip WITH NAMEIP
  ENDCASE
  
  
  * Изменение отчества клиента
  pokon=Right(ALLTRIM(otchcl), 1 )
  DO CASE
   *позиция окончания для мужского пола
   CASE pokon='у'
    okon=RAT('у',ALLTRIM(otchcl))
    OTCL_IP=LEFT(ALLTRIM(otchcl),okon- 1 )
    replace otchcl_ip WITH OTCL_IP, polcl WITH 'м', obrcl WITH obr
   *позиция окончания для женского пола
   CASE pokon='е'
    okon=RAT('е',ALLTRIM(otchcl))
    OTCL_IP=LEFT(ALLTRIM(otchcl),okon- 1 )+'а'
    replace otchcl_ip WITH OTCL_IP, polcl WITH 'ж', obrcl WITH obr
   OTHERWISE
	OTCL_IP=ALLTRIM(otchcl)
	replace otchcl_ip WITH OTCL_IP
   
   ENDCASE
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285135
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В форуме по SQL Server есть много работающих решений этой задачи.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285155
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторVisual Basic содержит две функции, позволяющие осуществлять поиск символьной строки в другой: inStr и inStrRev. Эти функции отличаются тем, что inStr осуществляет поиск с начала строки и до ее конца, а InStrRev проводит поиск в обратном направлении, то есть от конца строки к началу.

В твоем случае будет примерно так
Код: plaintext
pozition=InStr ("Иванов А.А.", " ") 
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285197
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkiadesВ форуме по SQL Server есть много работающих решений этой задачи.
ткнуть можете я не нашел...
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285230
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shady MelkiadesВ форуме по SQL Server есть много работающих решений этой задачи.
ткнуть можете я не нашел...

Ищи, ищи дальше... (C) :-)
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285245
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, сейчас прочитаю все что там есть
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33285528
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все бы хорошо, если бы не мои дурацкие записи... они же все в одной ячейке.... и фамилия, и инициалы... хотя теоритечески, наверное можно как-то циклом проверить позцию пробелов.
так наблюдается алгоритм действий...
1. проверить позиции пробелов, и тем самым разделить все что находится в одной ячейке, на 3, фамилия, имя, отчество
2. проверить последние 3 буквы окончания фамилии на предмет определния пола 0, 1, 01 женщина, мужчина, и неопределенный пол
3. заменить последние 2 буквы согласно определенному полу

думаю такой должен быть алгоритм.
кому есть что добавить?
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286082
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы еще посоветовал
1. записать фамилии, имена и отчества в разные поля таблицы, в будующем чтоб такого гемороя не было;
2. Поскольку у тебя есть и инициалы, то после первого пробела искать еще и точки;
3. Сначала поверять строку вообще на наличие пробелов.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286127
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpЯ бы еще посоветовал
1. записать фамилии, имена и отчества в разные поля таблицы, в будующем чтоб такого гемороя не было;
2. Поскольку у тебя есть и инициалы, то после первого пробела искать еще и точки;
3. Сначала поверять строку вообще на наличие пробелов.

как все это реализовать кодом? я говорю что не имею представления каким
образом работать с текстом который находится в ячейке, какие функции имеются в ВБ для работы с текстом? помогите кодом если не трудно
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286429
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, раз уж в форуме по Аксессу стоит ссылка сюда, то я сюда и пришел...

Во-первых, Иванову и Петровой - это не родительный падеж, а дательный.

Во-вторых, если даны только инициалы, то пол определить нельзя (даже по окончанию фамилии, потому что может быть мужская фамилия Скорина или женская Дарвин).

В-третьих, вот топик в Аксессе, где подробно обсуждаются все за и против и дается линк на программу, которая это делает:
http://sql.ru/forum/actualthread.aspx?tid=29283
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286444
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
shady любые советы, мнения очень приветствуются.
Так вот мнение: какой-то процент неправильных решений все равно будет, а значит будет какое-то количество возмущенных писем от клиентов, получивших письмо "Шоте Какучей" (см. по моей ссылке, 17 апр 03, 13:56). Готова ли фирма с этим мириться? Имхо, оптимальное решение - это подход Виктора Сенина (там же, 17 апр 03, 14:03).
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286448
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMpПо фамилии ничего сказать нельзя, поскольку большинство из них ничего не говорит о поле - Кравченко, Задерейчук, Акопян, Рабинович и т.д. (но такие фамилии тебя не должны беспокоить, поскольку не изменяются в любом падеже).
Это неверно. Три последних из 4 названных фамилий склоняются, если они принадлежат мужчинам. Моя фамилия - одного из этих типов, и я не очень рад, когда ее не склоняют, превращая меня в женщину.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286460
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычНу, раз уж в форуме по Аксессу стоит ссылка сюда, то я сюда и пришел...

Во-первых, Иванову и Петровой - это не родительный падеж, а дательный.

Во-вторых, если даны только инициалы, то пол определить нельзя (даже по окончанию фамилии, потому что может быть мужская фамилия Скорина или женская Дарвин).

В-третьих, вот топик в Аксессе, где подробно обсуждаются все за и против и дается линк на программу, которая это делает:
http://sql.ru/forum/actualthread.aspx?tid=29283

уважаемый Владимир Саныч, мое начальство это не волнует, что из исходных данных нельзя выдрать пол того человека который там записан, мне говорят что нужно хотя бы тех, чей пол можно определить, а эта программа у меня есть, и того что нужно она не делает...
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286475
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyмне говорят что нужно хотя бы тех, чей пол можно определить, а эта программа у меня есть, и того что нужно она не делает...
А как они решают, чей можно, а чей нет? Фамилия Овчин - это по их мнению однозначно мужская? А я учился в школе с человеком по фамилии Овчин, у которого сестра тоже была Овчин. Программа таких вещей знать не может.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286485
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя говорю что не имею представления каким
образом работать с текстом который находится в ячейке, какие функции имеются в ВБ для работы с текстом?
Как же тебе помочь. Это основы VB. Если это заказ, то называй цену. Если хочешь написать сам, то почитай учебники по VB. Могу лишь парочку на мыло кинуть.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286506
Один1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это рассылка каких-либо писем или извещенией, то печатайте Уважаемый (ая) Иванов И.И.

Потому что если вы неправильно просклоняете фамилию (а это неизбежно, по крайней мере для какой-то части записей) - это будет хуже, чем "безликое" обращение.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286546
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp авторя говорю что не имею представления каким
образом работать с текстом который находится в ячейке, какие функции имеются в ВБ для работы с текстом?
Как же тебе помочь. Это основы VB. Если это заказ, то называй цену. Если хочешь написать сам, то почитай учебники по VB. Могу лишь парочку на мыло кинуть.
нет, это не заказ, это работа, ссылки давайте, буду благодарен
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286907
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие ссылки! Если речь только о функциях для работы со строками в VB, то всё на два порядка проще, чем кажется.

instr
mid (в т.ч. для замены подстроки в строке)
left
right
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286929
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
огромное всем спасибо за советы, сейчас буду искать литературу по совету Владимир Саныча функции для работы со строками в VB, но у кого есть советы, пожалуйста пишите, я пока все-же начинающий, поэтому буду благодарен всем ответившим
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33286982
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyсейчас буду искать литературу по совету Владимир Саныча функции для работы со строками в VB
Я не советовал искать литературу!

подходящий к случаю анекдотАнгличанин спрашивает у слуги:
- Где моя шляпа?
- У Вас на голове, сэр.
- ОК, теперь я ее сам найду.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #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
изменение окончания у фамилии
    #33290626
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений1234-5 , у вас аська есть? можете проконсультировать? мой номер в профиле
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33292122
VEO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VEO
Гость
Нет аськи нету, но поробую пример зааттачить, как только свободная минутка появится.
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33294133
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень рассчитываю что минутка появится очень скоро, потому что очень срочно нужно... выручай
...
Рейтинг: 0 / 0
изменение окончания у фамилии
    #33297001
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
практически доделал. отдельное спасибо AndreyMP, благодаря его помощи, советам и подсказкам разобрался со строковыми переменными, осталось совсем немного. думаю через пару дней полностью доделаю прорамму. если кому интересно или подобное будет нужно, с удовольствием поделюсь и расскажу все что сам знаю. всем спасибо.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / изменение окончания у фамилии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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