Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбить текстовое поле (2003)
 
 автор: awstr   (17.07.2007 в 11:32)   личное сообщение
 
 

Подскажите, как можно разбить текстовое поле.
Имеется следующие поле:
ФИО: Иванов Иван Иванович – сварщик
Нужно получить:
ФАМИЛИЯ: Иванов
ИМЯ: Иван
ОТЧЕСТВО: Иванович
ДОЛЖНОСТЬ: сварщик

  Ответить  
 
 автор: osmor   (17.07.2007 в 11:50)   личное сообщение
 
 

http://hiprog.com/index.php?option=com_content&task=view&id=454

  Ответить  
 
 автор: awstr   (17.07.2007 в 12:11)   личное сообщение
 
 

Спасибо!
Простите, а как мне теперь натравить ету функцию на таблицу с целью разбить её?


'Функция Чтения части составной строки (т.е. строки, состоящей как-бы из нескольких "ячеек")
Public Function GetStringPart(ByVal strWholeString As String, _
ByVal strPartNumber As Long, _
ByVal strDivider As String) As String

' strWholeString - значение всей исходной строки
' strPartNumber - порядковый номер "ячейки" строки
' strDivider - разделитель "ячеек" (может быть произвольное количество символов), если разделитель не будет соответствовать реальному разделителю в строке, то функция будет считать всю строку за 1-ую ячейку

If strDivider = "" Or strPartNumber <= 0 Then GetStringPart = "": Exit Function:
Dim first As Long
Dim last As Long
Dim part As Long
part = 1
first = 1
last = 1
If strWholeString <> "" Then
If InStr(1, strWholeString, strDivider) <> 1 Then
strWholeString = strDivider & strWholeString
part = 0
End If
Do Until part = strPartNumber
first = InStr(last, strWholeString, strDivider, vbBinaryCompare) + Len(strDivider)
last = InStr(first, strWholeString, strDivider, vbBinaryCompare)
part = part + 1
If last = 0 Then Exit Do
Loop
Else
GetStringPart = ""
Exit Function
End If
If part = strPartNumber Then
If last = 0 Then
GetStringPart = Mid(strWholeString, first)
Else
GetStringPart = Mid(strWholeString, first, last - first)
End If
End If
End Function

  Ответить  
 
 автор: osmor   (17.07.2007 в 12:16)   личное сообщение
 
 

какова конечная цель?
разделить эту строку и получить новые поля с новыми значениями? или просто для вывода в форме?

  Ответить  
 
 автор: awstr   (17.07.2007 в 12:26)   личное сообщение
 
 

Имеется таблица состоящая из одного поля – ФИО с должностью. Надо получить таблицу, где все данные были бы распределены по своим местам – Фамилия в Фамилии и т.д.

  Ответить  
 
 автор: osmor   (17.07.2007 в 20:58)   личное сообщение
 
 

Если структура всех строка такая ка вы написали, исходная таблица называется tblFOI, а поле в нет называется fio, то если выполнить следующий запрос в результате получится таблица tblNEW с нужными полями.

SELECT Left([fio],InStr(1,[fio]," ")-1) AS LastName, Mid([fio],InStr(1,[fio]," ")+1,InStr(InStr(1,[fio]," ")+1,[fio]," ")-InStr(1,[fio]," ")-1) AS FirstName, Mid([fio],InStr(InStr(1,[fio]," ")+1,[fio]," ")+1,InStr(InStr(1,[fio]," - "),[fio]," ")-InStr(InStr(1,[fio]," ")+1,[fio]," ")-1) AS MiddleName, Right([fio],Len([fio])-InStr(1,[fio]," - ")-2) AS Prof INTO tblNEW
FROM tblFIO;

  Ответить  
 
 автор: awstr   (18.07.2007 в 09:02)   личное сообщение
 
 

Большое спасибо! Очень помогло.

  Ответить  
 
 автор: час   (18.07.2007 в 09:06)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList