Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.04;
Скачать: CL | DM;

Вниз

Печать справок   Найти похожие ветки 

 
Инна   (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)&#133



Страницы: 1 вся ветка

Текущий архив: 2008.05.04;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
2-1207540343
Armond
2008-04-07 07:52
2008.05.04
TChart


2-1207582041
Artin
2008-04-07 19:27
2008.05.04
Несколько раюочих столов в Windowse. Как в Линуксе.


2-1207638630
MKS_
2008-04-08 11:10
2008.05.04
сбросить modal


15-1205857837
Ega23
2008-03-18 19:30
2008.05.04
А народ гребёт бабло


10-1143450022
msgipss
2006-03-27 13:00
2008.05.04
Использование свойства Calculation com сервера Excel