Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/74: Рейтинг темы: голосов - 74, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 08.09.2020
Сообщений: 16

Склонение фамилий и должностей в форме пользовательскими фукциями

21.09.2020, 09:57. Показов 17355. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане

Помогите, пожалуйста, новичку с проблемой. В сети найден программный код, который бы склонял ФИО и должности сотрудников. Найдено здесь http://am.rusimport.ru/MSAccess/topic.aspx?ID=585.
В данном примере сделано через запрос, но мне это не совсем подходит. Хотелось бы, чтобы в форме при выборе значения в поле со списком, в другом поле появлялось значение просклоненного ФИО либо должности. Подскажите, пожалуйста, как эти функции приделать к полю в форме? Пример во вложении.

Спасибо.
Вложения
Тип файла: rar Пример_Склонение.rar (52.8 Кб, 38 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2020, 09:57
Ответы с готовыми решениями:

Склонение должностей
Нужно склонять должности в дательном падеже. Проблема в том что в идеале склоняться должно только первое слово в названии должности....

Не получается типовое склонение должностей
Нужна помощь. Задействовал типовой механизм склонений ФИО: СклонениеПредставленийОбъектов.ПросклонятьФИО("Иванов Иван...

Склонение Фамилий
Еще раз всем привет. Возникла еще одна проблема. Знаю есть много макросов, функций по изменению падежей Фамилий, имен и отчеств, но в моем...

54
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
21.09.2020, 11:03
Лучший ответ Сообщение было отмечено Stepashkavl как решение

Решение

Цитата Сообщение от Stepashkavl Посмотреть сообщение
Хотелось бы, чтобы в форме при выборе значения в поле со списком, в другом поле появлялось значение просклоненного ФИО либо должности.
Смотрите:
Миниатюры
Склонение фамилий и должностей в форме пользовательскими фукциями  
Вложения
Тип файла: zip Пример_Склонение_v002.zip (46.0 Кб, 91 просмотров)
1
0 / 0 / 0
Регистрация: 08.09.2020
Сообщений: 16
21.09.2020, 11:13  [ТС]
Eugene-LS - вы волшебник! Спасибо вам огромное!
0
784 / 63 / 4
Регистрация: 28.05.2015
Сообщений: 99
22.09.2020, 12:36
Посмотрите в самом конце обсуждения темы на том форуме.
Там последняя версия кода склонения ФИО и должностей
по всем падежам с формой проверки.
1
2 / 1 / 2
Регистрация: 26.08.2015
Сообщений: 96
24.09.2020, 07:54
а можно ссылку на этот конец обсуждения на том форуме? Чет не воткнул где искать

Добавлено через 2 часа 9 минут
помогите подправить код, чтобы в словах с ФИО содержащем "-" не было такого косяка:
вановой Марине -Бред-Ивановне (отсечение первой буквы и вставка лишнего "-" перед отчеством)
ванову Ивану -Бреду-Ивановичу (отсечение первой буквы, вставка лишнего "-" перед отчеством и склонение обоих слов отчества)


Visual Basic
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
'Склонение ФИО и должностей
Function SklonFIO(ByVal Slovo As String, ByVal Rod As String, ByVal Padej As String) As String
Dim i As Integer, FIO() As String, Tire() As String, j As Integer, tmp As String
    FIO = Split(Slovo, " ")
    For i = 0 To UBound(FIO)
        'Если в слове есть тире, то склоняем то что до тире и то что после
        '(Инженер-технолог, слесарь-электрик, штукатур-маляр,
        'Сухово-Кобылин, Козьма-Прудков, Козо-Полянский)
        If InStr(1, FIO(i), "-") > 0 Then
            Tire = Split(FIO(i), "-")
            For j = 0 To UBound(Tire)
                Select Case Padej
                    Case "Rod" 'Родительный (кого, чего)
                        tmp = Iskluchenie(Tire(j), Padej) 'Проверка на слова-исключения
                        If tmp = "" Then
                            SklonFIO = SklonFIO & "-" & SklonenieRod(Tire(j), Rod)
                          Else
                            SklonFIO = SklonFIO & "-" & tmp
                        End If
                    Case "Dat" 'Дательный (кому, чему)
                        tmp = Iskluchenie(Tire(j), Padej) 'Проверка на слова-исключения
                        If tmp = "" Then
                            SklonFIO = SklonFIO & "-" & SklonenieDat(Tire(j), Rod)
                          Else
                            SklonFIO = SklonFIO & "-" & tmp
                        End If
                End Select
            Next j
            SklonFIO = Mid(SklonFIO, 2)
          Else
            Select Case Padej
                Case "Rod" 'Родительный (кого, чего)
                    tmp = Iskluchenie(FIO(i), Padej) 'Проверка на слова-исключения
                    If tmp = "" Then
                        SklonFIO = SklonFIO & SklonenieRod(FIO(i), Rod) & " "
                      Else
                        SklonFIO = SklonFIO & tmp & " "
                    End If
                Case "Dat" 'Дательный (кому, чему)
                    tmp = Iskluchenie(FIO(i), Padej) 'Проверка на слова-исключения
                    If tmp = "" Then
                        SklonFIO = SklonFIO & SklonenieDat(FIO(i), Rod) & " "
                      Else
                        SklonFIO = SklonFIO & tmp & " "
                    End If
            End Select
        End If
    Next i
    SklonFIO = RTrim(SklonFIO)
End Function
Пример_Склонение_v003.zip
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
24.09.2020, 08:52
Цитата Сообщение от ibrahimveg Посмотреть сообщение
помогите подправить код, чтобы в словах с ФИО содержащем "-" не было такого косяка
Попробуйте:
Кликните здесь для просмотра всего текста
Visual Basic
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
Function SklonFIO(ByVal Slovo As String, ByVal Rod As String, ByVal Padej As String) As String
'Склонение ФИО и должностей v002 - 24.09.2020
Dim i As Integer, FIO() As String, Tire() As String, j As Integer, tmp As String
    FIO = Split(Slovo, " ")
    For i = 0 To UBound(FIO)
        'Если в слове есть тире, то склоняем то что до тире и то что после
        '(Инженер-технолог, слесарь-электрик, штукатур-маляр,
        'Сухово-Кобылин, Козьма-Прудков, Козо-Полянский)
        If InStr(1, FIO(i), "-") > 0 Then
            Tire = Split(FIO(i), "-")
            For j = 0 To UBound(Tire)
                Select Case Padej
                    
                    Case "Rod" 'Родительный (кого, чего)
                        tmp = Iskluchenie(Tire(j), Padej) 'Проверка на слова-исключения
                        If tmp = "" Then
                            SklonFIO = SklonFIO & "-" & SklonenieRod(Tire(j), Rod)
                        Else
                            SklonFIO = SklonFIO & "-" & tmp
                        End If
                    Case "Dat" 'Дательный (кому, чему)
                        tmp = Iskluchenie(Tire(j), Padej) 'Проверка на слова-исключения
                        If tmp = "" Then
                            If j > 0 Then 'Если вторая часть двойной фамилии:
                                SklonFIO = SklonFIO & "-" & SklonenieDat(Tire(j), Rod)
                            Else
                                SklonFIO = SklonFIO & SklonenieDat(Tire(j), Rod)
                            End If
                        Else
                            SklonFIO = SklonFIO & "-" & tmp
                        End If
                End Select
            Next j
          Else
            Select Case Padej
                Case "Rod" 'Родительный (кого, чего)
                    tmp = Iskluchenie(FIO(i), Padej) 'Проверка на слова-исключения
                    If tmp = "" Then
                        SklonFIO = SklonFIO & SklonenieRod(FIO(i), Rod) & " "
                      Else
                        SklonFIO = SklonFIO & tmp & " "
                    End If
                Case "Dat" 'Дательный (кому, чему)
                    tmp = Iskluchenie(FIO(i), Padej) 'Проверка на слова-исключения
                    If tmp = "" Then
                        SklonFIO = SklonFIO & SklonenieDat(FIO(i), Rod) & " "
                      Else
                        SklonFIO = SklonFIO & tmp & " "
                    End If
            End Select
        End If
    Next i
    SklonFIO = RTrim(SklonFIO)
End Function
1
2 / 1 / 2
Регистрация: 26.08.2015
Сообщений: 96
24.09.2020, 09:02
в женском поле все
а вот с мужским склоняет оба слова с "-" / например: Бреду-Ивановичу

Добавлено через 2 минуты
Если есть возможность обратите внимание на Пример_Склонение_v003.zip из предыдущего сообщения.
и если это не совсем наглеж, творительный падеж добавить можете?
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
24.09.2020, 09:08
Цитата Сообщение от ibrahimveg Посмотреть сообщение
творительный падеж добавить можете?
А времени часов пять вы мне подарите?
...
Не мучайтесь - Найдите более отлаженный вариант - этот далёк отидеала и точно не единственный - быстрее будет.
0
784 / 63 / 4
Регистрация: 28.05.2015
Сообщений: 99
24.09.2020, 09:29
вот эту строчку:
Visual Basic
1
SklonFIO = Mid(SklonFIO, 2)
поменяйте на эту:
Visual Basic
1
SklonFIO = Replace(IIf(SklonFIO Like "-*", Mid(SklonFIO, 2) & " ", SklonFIO & " "), " -", " ")
В самом первом посте Stepashkavl указал ссылку на тему форума, в конце обсуждения которой выложен последний вариант склонения по всем падежам, а не этот первоначальный и только по двум падежам, далекий от совершенства. Но в настоящее время вероятно владелец сайта, как периодически бывает, не заплатил мзду и форум пока закрыт, а может что улучшает. Через некоторое время форум появится, почти уверен.
2
2 / 1 / 2
Регистрация: 26.08.2015
Сообщений: 96
24.09.2020, 10:17
спасибо. буду контролить ап сайта, потому что не разбираясь в том что ищешь искать очень тяжко.
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
24.09.2020, 10:32
Цитата Сообщение от ibrahimveg Посмотреть сообщение
искать очень тяжко
Я бы тут посмотрел ...
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
24.09.2020, 11:03
ibrahimveg, вот нашлось НЕЧТО ...
Посмотрите - может сгодится.
Вложения
Тип файла: zip Пример_Склонение_v004.zip (41.2 Кб, 61 просмотров)
1
784 / 63 / 4
Регистрация: 28.05.2015
Сообщений: 99
24.09.2020, 12:17
Лучший ответ Сообщение было отмечено mobile как решение

Решение

По сравнению с другими Родительный падеж больших трудностей не представляет.
Но и для этого падежа в представленном примеры есть проблемы:

Цой Павел Абрахам оглы
Ревва Александр Владимирович
Соловей Илья Кузьмич
Шкворень Евгений Иванович
Куций Фридрих Семенович
Червона Лев Батькович
Берия Лаврентий Павлович
Орджоникидзе Серго
Врубель Михаил Александрович
Мамедов Полад Бюль-бюль оглы
Чаплин Чарльз Спенсер
Хемингуей Эрнест
Де Фюнес Луи
Ким Чен Ир

Лебяжья Махарам Сигизмунд кызы
Сырокомля Лия Маровна
Складовская-Кюри Мария,

которые в указанном примере на am.rusimport.ru, а также другие, учтены.
1
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
24.09.2020, 18:16
Цитата Сообщение от UUMprimor Посмотреть сообщение
Но и для этого падежа в представленном примеры есть проблемы:
Тогда возможно вам сюда :
Склонение фамилий, имен и отчеств по падежам Библиотека функций. ( + пополняемый словарь исключений)
Я не тестировал, но похоже сделано толково.
0
 Аватар для VinniPuh
9118 / 6107 / 591
Регистрация: 27.03.2013
Сообщений: 19,919
24.09.2020, 21:12
Eugene-LS, а не проще ли будет правила и всякие склонения изменить во всем мире, чем программный код писать?
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
24.09.2020, 21:32
Цитата Сообщение от VinniPuh Посмотреть сообщение
а не проще ли будет правила и всякие склонения изменить во всем мире, чем программный код писать?
Не знаю - не пробовал.
... И всё равно, возьмёт и найдётся непредусмотренное исключение, каких только фамилий не бывает.
0
2 / 1 / 2
Регистрация: 26.08.2015
Сообщений: 96
25.09.2020, 04:40
согласен. мне именно и нужно чтобы основную массу склонения упрощать. А исключения оператор подкорректирует ручками.

Добавлено через 2 минуты
честно скажу ... там мне даже читать страшно)
нужно ченить попроще, и нужны 2 падежа:
- дательный (он в принципе уже есть, еще попробую посл. версию от Вас) и
- творительный (вот этого пока не нашел.)

в случае с творительным если бы продублировать к примеру Дательный, то Фамилию в принципе вроде он бы как нужно склонял на Творительном (в женском роде с "ой" и откорректировав на "ым" в мужском). но остается проблема с Имя и Отчество, как в прочем и процесс дублирования кода "Dat" на "Tvo"

Добавлено через 23 минуты
смотрел щас базу и там убрана ссылка на "ПОЛ".
' Определяем, мужские ФИО или женские
fMan = (Right(strName3, 1) = "ч")
у меня в таблице есть поле "Пол", которое выставляется вручную. Как бы сделать чтоб оно принимало значения без ручного ввода?

Модуль склонения v004-1.zip
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
25.09.2020, 05:49
Цитата Сообщение от ibrahimveg Посмотреть сообщение
Как бы сделать чтоб оно принимало значения без ручного ввода?
Попробуйте такой функцией:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Function GenderByName(vFullName) As Variant
'Автоматическое определение пола по отчеству для большенства случаев
'Возвращает букву обозначения пола "М" или "Ж" (или ничего - если сомнения)
'es 24.09.2020 v001
'----------------------------------------------------------------
Dim sRPart$
On Error GoTo GenderByName_Err
    sRPart = Right(vFullName, 2)
    Select Case sRPart
        Case "ич": GenderByName = "М"
        Case "на": GenderByName = "Ж"
        
        Case "лы": GenderByName = "М" '-оглы = сын, -кызы – дочь
        Case "зы": GenderByName = "Ж"
    End Select
 
GenderByName_End:
    Exit Function
 
GenderByName_Err:
    Err.Clear
    Resume GenderByName_End
End Function
1
784 / 63 / 4
Регистрация: 28.05.2015
Сообщений: 99
25.09.2020, 09:52
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Тогда возможно вам сюда :
Склонение фамилий, имен и отчеств по падежам Библиотека функций. ( + пополняемый словарь исключений)
Я не тестировал, но похоже сделано толково.
Нет, там мне делать уже не чего - в той библиотеке учтено меньше нюансов. А возможность ведения словаря исключений учтена в отдельной функции кода даже в примере, указанном в первом посте темы.

Добавлено через 13 минут
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Visual Basic
1
2
3
Public Function GenderByName(vFullName) As Variant
'Автоматическое определение пола по отчеству для большенства случаев
'Возвращает букву обозначения пола "М" или "Ж" (или ничего - если сомнения)
А если пол=ничего как будет склонять ФИО?
А вот добавьте MsgBox или InputBox, которые в зависимости от ответа пользователя
определят к какому роду ФИО относится и будет ibrahimveg_у радость.

Добавлено через 13 минут
Цитата Сообщение от VinniPuh Посмотреть сообщение
Eugene-LS, а не проще ли будет правила и всякие склонения изменить во всем мире, чем программный код писать?
Компьютер с его прожками и нужен для того, чтобы даже безграмотный человек печатал грамотно. А если бы даже язык на всей Земле был один, реализация Вашего предложения было бы маловероятной: как, например, склонять ФИО европейских и американских гомосеков, которые выбрали себе не мужской, женский или средний род, а неопределенный 4-й род?
0
Эксперт MS Access
 Аватар для Eugene-LS
11200 / 5802 / 1488
Регистрация: 05.10.2016
Сообщений: 16,363
25.09.2020, 10:39
Цитата Сообщение от ibrahimveg Посмотреть сообщение
творительный (вот этого пока не нашел.)
Тема показалась мне интересной, вот собрал примерчик из найденного на просторах ...
Работают Дательный, Родительный и Творительный + есть обработка исключений.
Критика и советы приветствуются.
Миниатюры
Склонение фамилий и должностей в форме пользовательскими фукциями  
Вложения
Тип файла: zip Падежи ФИО_v002.zip (315.1 Кб, 105 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.09.2020, 10:39
Помогаю со студенческими работами здесь

Склонение имен и фамилий
Помогите с алгоритмом по "склонению" имен и фамилий? Пример: Петя Иванов - Пети Иванову и т.д. Куда копать???

Склонение фамилий по падежам
11. Вводят вопросы вида (кто, кого, кому, кем, на ком) и фамилию, например "Петренко". Ответ выдавать в виде "Петренко",...

Склонение фамилий по падежам
Вводят вопросы вида (кто, кого, кому, кем, на ком) и фамилию, например "Иванов". Ответ выдавать в виде , "Иванову",...

Склонение фамилий по падежам
Может быть сталкивался кто нить с таким макросом или программой что склоняла фамилии по разным падежам ! в инете есть но они демо версии (((

Склонение фамилий в родительный падеж
Всем привет, есть ли готовые макросы для Word которые будут склонять фамилии в род.падеж?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru