Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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)&#133



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

Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.009 c
3-1196665593
Alice
2007-12-03 10:06
2008.05.04
распарсить в БД


2-1207510572
cyber-pilot
2008-04-06 23:36
2008.05.04
Работа с файлами


6-1185712732
malyar
2007-07-29 16:38
2008.05.04
idtcpserver посылка пакетов всем подключенным клиентам


15-1206475079
Real
2008-03-25 22:57
2008.05.04
Worms


15-1205743389
REA
2008-03-17 11:43
2008.05.04
GPS перехват





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский