|
|
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. поставили такую задучу: есть база данных с полем FIO в которм записаны фамилии и инициалы, причем записаны как попало, например есть такие записи 1. Иванов И.И. 2. Петровой П.П. 3. Сидоров 4. Иванова Ольга Ивановна в общем все как попало... моя задача такая: каим-то образом из этих бредовых записей узнать пол человека (по крайней мере я себе это так представляю) чтобы из полученных записей получить данные в именительном и родительном падеже, т.е. Иванов И.И. ; Иванову И.И. Петрова П.П. ; Петровой П.П. Сидоров ; Сидорову Иванова Ольга Ивановна ; Ивановой Ольге Ивановне у кого-нибудь имеется мнение: 1. Вообще реально ли такое? 2. Если реально подскажите пожалуйста как можно это реализовать? ---------------- данные: база access 2000 записей порядка 150 000 я не представляю как такое вообще можно сделать на ВБ, знаю что такое вполне решаемо на ФоксПро, а как насчет ВБ? любые советы, мнения очень приветствуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2005, 20:33:00 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Пол человека вполне возможно узнать по отчеству, проходит у большинства. У женщин окончание "на", у мужчин "ич". Я такое делал и при других окончаниях просто выводил диалог. По фамилии ничего сказать нельзя, поскольку большинство из них ничего не говорит о поле - Кравченко, Задерейчук, Акопян, Рабинович и т.д. (но такие фамилии тебя не должны беспокоить, поскольку не изменяются в любом падеже). Так что тебе я думаю стоит составить список окончаний М и Ж фамилий по падежам и на его основе что то думать о реальности. А в чем реализовывать не важно. Главное - алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2005, 22:32:58 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
так алгоритм - это самое главное, хорошо бы если были все записи одинаковые, тогда задача былы бы намного проще, как я писал, записи настолько разнообразны, что нельзя даже самому понять с чего начать 1. Иванов И.И. 2. Петровой П.П. 3. Сидоров например какой должен быть алгоритм для таких записей? я что-то даже не могу представить... точнее могу, но думаю не правильно... во первых единственная закономерность в этих записях - это фамилия, которая всегда первая по порядку, от этого я думаю стоит отталкиваться. потом каким-то образом нужно узнать конец слова, и проверить его окончание. как это сделать, понятия не имею... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 08:13:38 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Если формат: Иванов А.А. - ищи позицию первого пробела и от него отнимай то количество символов, чтобы проанализировать оканчание фамилии. Если просто: Иванова - анализируй символы справа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 08:24:30 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
а помочь с кодом можете? как искать позицию пробела я не представляю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 08:52:00 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
нарыл вот прогу на Фокс Про, она как раз такое делает, что мне нужно... как разобраться что там делается и как, языки впринципе очень похожи, и думаю что код для моей ВБшной программы будет практически таким же Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 09:02:35 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
В форуме по SQL Server есть много работающих решений этой задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 09:28:32 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
авторVisual Basic содержит две функции, позволяющие осуществлять поиск символьной строки в другой: inStr и inStrRev. Эти функции отличаются тем, что inStr осуществляет поиск с начала строки и до ее конца, а InStrRev проводит поиск в обратном направлении, то есть от конца строки к началу. В твоем случае будет примерно так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 09:38:45 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
MelkiadesВ форуме по SQL Server есть много работающих решений этой задачи. ткнуть можете я не нашел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 09:58:56 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
shady MelkiadesВ форуме по SQL Server есть много работающих решений этой задачи. ткнуть можете я не нашел... Ищи, ищи дальше... (C) :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 10:11:07 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
спасибо, сейчас прочитаю все что там есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 10:14:39 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
все бы хорошо, если бы не мои дурацкие записи... они же все в одной ячейке.... и фамилия, и инициалы... хотя теоритечески, наверное можно как-то циклом проверить позцию пробелов. так наблюдается алгоритм действий... 1. проверить позиции пробелов, и тем самым разделить все что находится в одной ячейке, на 3, фамилия, имя, отчество 2. проверить последние 3 буквы окончания фамилии на предмет определния пола 0, 1, 01 женщина, мужчина, и неопределенный пол 3. заменить последние 2 буквы согласно определенному полу думаю такой должен быть алгоритм. кому есть что добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 11:39:22 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Я бы еще посоветовал 1. записать фамилии, имена и отчества в разные поля таблицы, в будующем чтоб такого гемороя не было; 2. Поскольку у тебя есть и инициалы, то после первого пробела искать еще и точки; 3. Сначала поверять строку вообще на наличие пробелов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 14:15:11 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
AndreyMpЯ бы еще посоветовал 1. записать фамилии, имена и отчества в разные поля таблицы, в будующем чтоб такого гемороя не было; 2. Поскольку у тебя есть и инициалы, то после первого пробела искать еще и точки; 3. Сначала поверять строку вообще на наличие пробелов. как все это реализовать кодом? я говорю что не имею представления каким образом работать с текстом который находится в ячейке, какие функции имеются в ВБ для работы с текстом? помогите кодом если не трудно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 14:28:18 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Ну, раз уж в форуме по Аксессу стоит ссылка сюда, то я сюда и пришел... Во-первых, Иванову и Петровой - это не родительный падеж, а дательный. Во-вторых, если даны только инициалы, то пол определить нельзя (даже по окончанию фамилии, потому что может быть мужская фамилия Скорина или женская Дарвин). В-третьих, вот топик в Аксессе, где подробно обсуждаются все за и против и дается линк на программу, которая это делает: http://sql.ru/forum/actualthread.aspx?tid=29283 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:12:31 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
P.S. shady любые советы, мнения очень приветствуются. Так вот мнение: какой-то процент неправильных решений все равно будет, а значит будет какое-то количество возмущенных писем от клиентов, получивших письмо "Шоте Какучей" (см. по моей ссылке, 17 апр 03, 13:56). Готова ли фирма с этим мириться? Имхо, оптимальное решение - это подход Виктора Сенина (там же, 17 апр 03, 14:03). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:16:20 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
AndreyMpПо фамилии ничего сказать нельзя, поскольку большинство из них ничего не говорит о поле - Кравченко, Задерейчук, Акопян, Рабинович и т.д. (но такие фамилии тебя не должны беспокоить, поскольку не изменяются в любом падеже). Это неверно. Три последних из 4 названных фамилий склоняются, если они принадлежат мужчинам. Моя фамилия - одного из этих типов, и я не очень рад, когда ее не склоняют, превращая меня в женщину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:18:12 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Владимир СанычНу, раз уж в форуме по Аксессу стоит ссылка сюда, то я сюда и пришел... Во-первых, Иванову и Петровой - это не родительный падеж, а дательный. Во-вторых, если даны только инициалы, то пол определить нельзя (даже по окончанию фамилии, потому что может быть мужская фамилия Скорина или женская Дарвин). В-третьих, вот топик в Аксессе, где подробно обсуждаются все за и против и дается линк на программу, которая это делает: http://sql.ru/forum/actualthread.aspx?tid=29283 уважаемый Владимир Саныч, мое начальство это не волнует, что из исходных данных нельзя выдрать пол того человека который там записан, мне говорят что нужно хотя бы тех, чей пол можно определить, а эта программа у меня есть, и того что нужно она не делает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:22:56 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
shadyмне говорят что нужно хотя бы тех, чей пол можно определить, а эта программа у меня есть, и того что нужно она не делает... А как они решают, чей можно, а чей нет? Фамилия Овчин - это по их мнению однозначно мужская? А я учился в школе с человеком по фамилии Овчин, у которого сестра тоже была Овчин. Программа таких вещей знать не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:31:47 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
авторя говорю что не имею представления каким образом работать с текстом который находится в ячейке, какие функции имеются в ВБ для работы с текстом? Как же тебе помочь. Это основы VB. Если это заказ, то называй цену. Если хочешь написать сам, то почитай учебники по VB. Могу лишь парочку на мыло кинуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:36:25 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Если это рассылка каких-либо писем или извещенией, то печатайте Уважаемый (ая) Иванов И.И. Потому что если вы неправильно просклоняете фамилию (а это неизбежно, по крайней мере для какой-то части записей) - это будет хуже, чем "безликое" обращение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 16:47:32 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
AndreyMp авторя говорю что не имею представления каким образом работать с текстом который находится в ячейке, какие функции имеются в ВБ для работы с текстом? Как же тебе помочь. Это основы VB. Если это заказ, то называй цену. Если хочешь написать сам, то почитай учебники по VB. Могу лишь парочку на мыло кинуть. нет, это не заказ, это работа, ссылки давайте, буду благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 17:03:39 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
Какие ссылки! Если речь только о функциях для работы со строками в VB, то всё на два порядка проще, чем кажется. instr mid (в т.ч. для замены подстроки в строке) left right ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 20:09:06 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
огромное всем спасибо за советы, сейчас буду искать литературу по совету Владимир Саныча функции для работы со строками в VB, но у кого есть советы, пожалуйста пишите, я пока все-же начинающий, поэтому буду благодарен всем ответившим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 20:57:29 |
|
||
|
изменение окончания у фамилии
|
|||
|---|---|---|---|
|
#18+
shadyсейчас буду искать литературу по совету Владимир Саныча функции для работы со строками в VB Я не советовал искать литературу! подходящий к случаю анекдотАнгличанин спрашивает у слуги: - Где моя шляпа? - У Вас на голове, сэр. - ОК, теперь я ее сам найду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 23:35:41 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33286546&tid=2167099]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 411ms |

| 0 / 0 |
