Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Возврат первых букв имени и отчества Добавлено: 10.12.07 16:13  

Автор вопроса:  alexfor
Привет Всем!
В таблице бд есть поле name, в которое пишется: Иванов Иван Иванович. Для определенной процедуры необходимо сформировать этот name в таком виде: Иванов И.И. и поместить в другое поле.
Заранее спасибо!

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 10.12.07 20:45
а на чем? на vb что ли?
Const str As String = "Иванов Иван Иванович"
Dim fName(1 To 3) As Long

fName(1) = InStr(1, str, " ";) - 1 'Фамилия
fName(2) = InStr(1, str, " ";) + 1 'Имя
fName(3) = InStrRev(str, " ";) + 1 'Отчество

Debug.Print Mid(str, 1, fName(1)) & " " & Mid(str, fName(2), 1) & "." & Mid(str, fName(3), 1) & "."

Ответить

Номер ответа: 2
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #2 Добавлено: 11.12.07 09:06
мона еще так
Const str As String = "Иванов Иван Иванович"
Dim fName(1 To 3) As Long

fName(1) = Split(str, " ";)(0) 'Фамилия
fName(2) = Split(str, " ";)(1) 'Имя
fName(3) = Split(str, " ";)(2) 'Отчество

Debug.Print Mid(str, 1, fName(1)) & " " & Mid(str, fName(2), 1) & "." & Mid(str, fName(3), 1) & "."

Ответить

Номер ответа: 3
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #3 Добавлено: 11.12.07 09:07
тьфу debug.print забыл поправить
в общем в массиву будут первые буквы Ф.И.О.

Ответить

Номер ответа: 4
Автор ответа:
 alexfor



Вопросов: 28
Ответов: 68
 Профиль | | #4 Добавлено: 11.12.07 09:17
Забавно, а если в таблице не одна тысяча записей?

Ответить

Номер ответа: 5
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #5
Добавлено: 11.12.07 10:26
>Забавно, а если в таблице не одна тысяча записей?

Тогда имело смысл разносить фио в базе по трем полям?

Ответить

Номер ответа: 6
Автор ответа:
 alexfor



Вопросов: 28
Ответов: 68
 Профиль | | #6 Добавлено: 11.12.07 10:52
Привет, да именно так надо и делать, БД создана ранее, не мной, нужно как-то выйти из положения

Ответить

Номер ответа: 7
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #7 Добавлено: 11.12.07 11:12
добавь в бд нужные колонки и проведи процедуру один раз

немного погодишь, зато все будет гут

Ответить

Номер ответа: 8
Автор ответа:
 alexfor



Вопросов: 28
Ответов: 68
 Профиль | | #8 Добавлено: 11.12.07 11:21
Сенькс, попробую разбить

Ответить

Номер ответа: 9
Автор ответа:
 alexfor



Вопросов: 28
Ответов: 68
 Профиль | | #9 Добавлено: 11.12.07 11:22
, хотя может как-то копать от пробелов?

Ответить

Номер ответа: 10
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #10 Добавлено: 11.12.07 11:38
Первый ответ чем не устраивает?

Ответить

Номер ответа: 11
Автор ответа:
 AL



Вопросов: 7
Ответов: 21
 Профиль | | #11 Добавлено: 11.12.07 16:34
Вот такая хрень на SQL (ORACLE). Может не оч. рационально, но зато работает!!


select substr(ИМЯ,1,instr(ИМЯ,' ',1,1)-1) || ' ' || substr(ИМЯ,instr(ИМЯ,' ',1,1)+1,1) || '. ' ||substr(substr(ИМЯ,instr(ИМЯ,' ',1,1)+1),instr(substr(ИМЯ,instr(ИМЯ,' ',1,1)+1),' ',1,1)+1,1) || '.'
 from ТАБЛИЦА

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 12.12.07 02:19
Да, я что-то протупил) astoro прав я думаю. Хотя я лично не знаю как быстрее. Может Split очень медленный..
Только вот использовать его 3! раза эт уж точно чересчур))
Const str As String = "Иванов Иван Иванович"
Dim fName() As String
fName = Split(str, " ";)
Debug.Print fName(0) & " " & Left(fName(1), 1) & "." & Left(fName(2), 1) & "."

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам