Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
ВнизПечать справок Найти похожие ветки
← →
Инна (2008-04-04 20:22) [0]Есть БД студентов, ФИО написаны как Иванов Иван Иванович, нужно чтобы печаталась справка автоматически заполняя ФИО, меняя окончания (например справка Дана Иванову Ивану Ивановичу.....). Можно ли так сделать?
← →
Германн © (2008-04-04 20:38) [1]
> Инна (04.04.08 20:22)
>
> Есть БД студентов, ФИО написаны как Иванов Иван Иванович,
> нужно чтобы печаталась справка автоматически заполняя ФИО,
> меняя окончания (например справка Дана Иванову Ивану Ивановичу.
> ....). Можно ли так сделать?
>
Добавить в таблицу ещё одно поле, в которое внести ФИО в виде Иванову Ивану Ивановичу.
← →
easy © (2008-04-04 20:43) [2]
showmessage(stringreplace("Иванов Иван Иванович"," ","у ",[rfreplaceall])+"у");
вот только Иванову Ирину Ивановну куда девать? :|
← →
easy © (2008-04-04 20:45) [3]или Приходько Петра?
← →
Сергей М. © (2008-04-04 21:15) [4]Бедный-бедный студент Су Ху !
← →
Johnmen © (2008-04-04 21:24) [5]А Донг По?
← →
Сергей М. © (2008-04-04 21:30) [6]Не соображу - ему в каком падеже неуютно ?)
← →
Сергей М. © (2008-04-04 21:32) [7]А... понял)
Ему любой падеж по)
← →
Простой (2008-04-08 21:26) [8]Прочитай эту статью http://www.delphikingdom.com/asp/viewitem.asp?catalogid=412 "Склонение фамилий, имен и отчеств по падежам Библиотека функций".
Скачай библиотечку, скачай примеры использования. Очень мощная библиотека. Использую давно, устраивает для твоего вопроса на все 100%.
Удачи
← →
Игорь Шевченко © (2008-04-08 22:47) [9]Простой (08.04.08 21:26) [8]
Охотно верю, что статья неплохая.
Но функцию с именем GetFullAppointmentPadeg я не буду использовать никогда. Потому что как вы лодку назовете, так она и поплывет.
← →
Германн © (2008-04-09 00:36) [10]
> Игорь Шевченко © (08.04.08 22:47) [9]
Эт точно!
Не, ну блин. Либо только транслит, либо только английский.
Тело содрогалось в судорогах в течение минуты (как минимум) после прочтения имени сей функции. Сколько будет в будущем рецидивов таких судорог пока даже представить трудно. :)
Как вспомнишь, так вздрогнешь. (с) Народная мудрость.
← →
clickmaker © (2008-04-09 09:50) [11]/* Возвращает склоненные имя, фамилию, отчество.
@Case - падеж: 0 - именительный, 1 - винительный, 2 - дательный, 3 -
родительный */
create procedure Employee_GetFullNameEx
(
@Object_ID int,
@Case smallint,
@Value varchar(255) out
)
as begin
set nocount on
declare @RetCode int, @Name varchar(64), @FirstName varchar(64),
@Patronymic varchar(64), @Gender char(1), @Len int, @Ending varchar(4)
-- Именительный
if @Case = 0
begin
exec @RetCode = Employee_GetFullName @Object_ID, @Value out
end else begin
select @Name = Name, @FirstName = FirstName, @Patronymic = Patronymic,
@Gender = Gender
from Employee where Object_ID = @Object_ID
-- Винительный
if @Case = 1
begin
-- Мужики
if @Gender = "М"
begin
select @Len = len(@Name)
select @Ending = substring(@Name, @Len-1, 2)
select @Ending =
(case
when @Ending in ("ий","ой") then "ого"
when @Ending = "ец" then (case when substring(@Name, @Len-2,
1)="и" then "йца" else "ца" end)
when @Ending = "ко" then "ко"
when @Ending = "ок" then "ка"
else (case when substring(@Ending, 2, 1) in ("ь","й") then
substring(@Ending, 1, 1)+ "я"
when substring(@Ending, 2, 1) = "а" then @Ending
else @Ending + "а" end)
end)
select @Name = substring(@Name, 1, @Len-2) + @Ending
if @FirstName is not null
begin
select @Len = len(@FirstName)
select @Ending = substring(@FirstName, @Len, 1)
select @Ending =
(case
when @Ending in ("й","ь") then "я"
when @Ending = "я" then "ю"
else @Ending + "а"
end)
select @FirstName = substring(@FirstName, 1, @Len-1) + @Ending
end
if @Patronymic is not null
begin
select @Patronymic = @Patronymic + "а"
end
-- Тетки
end else begin
select @Len = len(@Name)
select @Ending = substring(@Name, @Len-1, 2)
select @Ending =
(case
when @Ending in ("ва","на") then substring(@Ending, 1, 1) + "у"
when @Ending = "ая" then "ую"
else @Ending
end)
select @Name = substring(@Name, 1, @Len-2) + @Ending
if @FirstName is not null
begin
select @Len = len(@FirstName)
select @Ending = substring(@FirstName, @Len, 1)
select @Ending =
(case
when @Ending = "а" then "у"
when @Ending = "я" then "ю"
else @Ending
end)
select @FirstName = substring(@FirstName, 1, @Len-1) + @Ending
end
if @Patronymic is not null
begin
select @Patronymic = substring(@Patronymic, 1, Len(@Patronymic)-1) + "у"
end
end
select @Value = @Name + isnull(SPACE(1) +@FirstName, "") +
isnull(SPACE(1) + @Patronymic, "")
end else
-- Дательный
if @Case = 2
begin
-- Мужики
if @Gender = "М"
begin
select @Len = len(@Name)
select @Ending = substring(@Name, @Len-1, 2)
select @Ending =
(case
when @Ending in ("ий","ой") then "ому"
when @Ending = "ец" then (case when substring(@Name, @Len-2,
1)="и" then "йцу" else "цу" end)
when @Ending = "ко" then "ко"
when @Ending = "ок" then "ку"
else (case when substring(@Ending, 2, 1) in ("ь","й") then
substring(@Ending, 1, 1)+ "ю"
when substring(@Ending, 2, 1) = "а" then @Ending
else @Ending + "у" end)
end)
select @Name = substring(@Name, 1, @Len-2) + @Ending
if @FirstName is not null
begin
select @Len = len(@FirstName)
select @Ending = substring(@FirstName, @Len, 1)
select @Ending =
(case
when @Ending in ("й","ь") then "ю"
when @Ending = "я" then "е"
else @Ending + "у"
end)
select @FirstName = substring(@FirstName, 1, @Len-1) + @Ending
end
if @Patronymic is not null
begin
select @Patronymic = @Patronymic + "у"
end
-- Тетки
end else begin
select @Len = len(@Name)
select @Ending = substring(@Name, @Len-1, 2)
select @Ending =
(case
when @Ending in ("ва","на") then substring(@Ending, 1, 1) + "ой"
when @Ending = "ая" then "ой"
else @Ending
end)
select @Name = substring(@Name, 1, @Len-2) + @Ending
if @FirstName is not null
begin
select @Len = len(@FirstName)
select @Ending = substring(@FirstName, @Len, 1)
select @Ending =
(case
when @Ending in ("а","я") then
(case when substring(@FirstName, @Len-1, 1) = "и" then "и" else
"е" end)
else @Ending
end)
select @FirstName = substring(@FirstName, 1, @Len-1) + @Ending
end
if @Patronymic is not null
begin
select @Patronymic = substring(@Patronymic, 1, Len(@Patronymic)-1) + "е"
end
end
select @Value = @Name + isnull(SPACE(1) +@FirstName, "") +
isnull(SPACE(1) + @Patronymic, "")
end else
-- Родительный
begin
-- Мужики
if @Gender = "М"
begin
select @Len = len(@Name)
select @Ending = substring(@Name, @Len-1, 2)
select @Ending =
(case
when @Ending in ("ий","ой") then "ого"
when @Ending = "ец" then (case when substring(@Name, @Len-2,
1)="и" then "йца" else "ца" end)
when @Ending = "ко" then "ко"
when @Ending = "ок" then "ка"
else (case when substring(@Ending, 2, 1) in ("ь","й") then
substring(@Ending, 1, 1)+ "я"
when substring(@Ending, 2, 1) = "а" then @Ending
else @Ending + "а" end)
end)
select @Name = substring(@Name, 1, @Len-2) + @Ending
if @FirstName is not null
begin
select @Len = len(@FirstName)
select @Ending = substring(@FirstName, @Len, 1)
select @Ending =
(case
when @Ending in ("й","ь") then "я"
when @Ending = "я" then "ю"
else @Ending + "а"
end)
select @FirstName = substring(@FirstName, 1, @Len-1) + @Ending
end
if @Patronymic is not null
begin
select @Patronymic = @Patronymic + "а"
end
-- Тетки
end else begin
select @Len = len(@Name)
select @Ending = substring(@Name, @Len-1, 2)
select @Ending =
(case
when @Ending in ("ва","на") then substring(@Ending, 1, 1) + "ой"
when @Ending = "ая" then "ой"
else @Ending
end)
select @Name = substring(@Name, 1, @Len-2) + @Ending
if @FirstName is not null
begin
select @Len = len(@FirstName)
select @Ending = substring(@FirstName, @Len, 1)
select @Ending =
(case
when @Ending = "а" then "ы"
when @Ending = "я" then "и"
else @Ending
end)
select @FirstName = substring(@FirstName, 1, @Len-1) + @Ending
end
if @Patronymic is not null
begin
select @Patronymic = substring(@Patronymic, 1, Len(@Patronymic)-1) + "ы"
end
end
select @Value = @Name + isnull(SPACE(1) +@FirstName, "") +
isnull(SPACE(1) + @Patronymic, "")
end
end
return @RetCode
end
← →
Ega23 © (2008-04-09 09:53) [12]
> clickmaker © (09.04.08 09:50) [11]
Как интересно...
← →
Jeer © (2008-04-09 10:02) [13]Это сколько ж надо было выкурить и чего:)
← →
brother (2008-04-09 10:41) [14]про [11] жесть, интересно, работет без глюков? ) тестить пока за ненадобностью, но вот реализация....
← →
clickmaker © (2008-04-09 10:51) [15]
> жесть, интересно, работет без глюков?
да нет, конечно. Вообще не работает. Просто настроение такое сегодня
← →
Kolan © (2008-04-09 10:58) [16]> Но функцию с именем
Наверно автору не понравился перевод (case)…
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c