|
|
|
| Подскажите, как можно разбить текстовое поле.
Имеется следующие поле:
ФИО: Иванов Иван Иванович – сварщик
Нужно получить:
ФАМИЛИЯ: Иванов
ИМЯ: Иван
ОТЧЕСТВО: Иванович
ДОЛЖНОСТЬ: сварщик | |
|
| |
|
|
|
| http://hiprog.com/index.php?option=com_content&task=view&id=454 | |
|
| |
|
|
|
| Спасибо!
Простите, а как мне теперь натравить ету функцию на таблицу с целью разбить её?
'Функция Чтения части составной строки (т.е. строки, состоящей как-бы из нескольких "ячеек")
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 | |
|
| |
|
|
|
| какова конечная цель?
разделить эту строку и получить новые поля с новыми значениями? или просто для вывода в форме? | |
|
| |
|
|
|
| Имеется таблица состоящая из одного поля – ФИО с должностью. Надо получить таблицу, где все данные были бы распределены по своим местам – Фамилия в Фамилии и т.д. | |
|
| |
|
|
|
| Если структура всех строка такая ка вы написали, исходная таблица называется 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;
|
| |
|
| |
|
|
|
| Большое спасибо! Очень помогло. | |
|
| |
|