|
|
|
| Есть такая трабра есть поле с данными такого вида - C67, DT4, KA1, XZW8
надо создать запрос чтобы он разделл эту строку по полям типа
поле1 = C67
поле2 = DT4
поле3 = KA1
поле4 =XZW8
Моск вспател ужо думать.
Первое значение получил
c1: IIf(Len([data]![CodesEquipment])>0;IIf(InStr([data]![CodesEquipment];",")>0;Left(Trim([data]![CodesEquipment]);InStr([data]![CodesEquipment];",")-1);[data]![CodesEquipment]);"null")
Но это гемор | |
|
| |
|
|
|
| Если длина составляющих подстрок варьируется,
можно сделать VBA функцию,
в которой Split-ом разбить исходную строку на куски по запятой,
а затем LTrim-ом убрать лишние пробелы.
Функцию вызывать в запросе.
Если длина составляющих подстрок постоянна, можно MID-ом резать на подстроки. | |
|
| |
|
|
|
| Каким образом, передовать в функцию и получать обратно данные?
я пока делаю так
c1: IIf(InStr(Trim([CodesEquipment]);",")>0;InStr(Trim([CodesEquipment]);",");"null")
c2: InStr([c1]+1;Trim([CodesEquipment]);",")
c3: InStr([c1]+[c2]+1;Trim([CodesEquipment]);",")
c4: InStr([c3];Trim([CodesEquipment]);",")
d1: IIf([c1]>0;Mid([CodesEquipment];1;[c1]-1);[CodesEquipment])
d2: IIf([c2]>0;Mid([CodesEquipment];[c1]+1;[c2]-[c1]-1);Mid([CodesEquipment];[c1]+1;IIf([c1]>0;Len([CodesEquipment])-[c1];"null")))
d3: Mid([CodesEquipment];[c2]+1;[c3]-[c2]-1) | |
|
| |
|
|
|
| К примеру, функция для сплита строки из Max 5 частей:
Public Function GetPart(Part As Integer, FullString) As String
Dim var, i As Integer
Static strArr(1 To 5) As String
If Part = 1 Then
Erase strArr
If Not IsNull(FullString) Then
var = Split(FullString, ",")
For i = 0 To UBound(var)
strArr(i + 1) = LTrim(var(i))
Next i
End If
End If
GetPart = strArr(Part)
End Function
|
В запросе типа так:
SELECT
t1.ItemID,
GetPart(1,t1.ItemValue) AS Part1,
GetPart(2,t1.ItemValue) AS Part2,
GetPart(3,t1.ItemValue) AS Part3,
GetPart(4,t1.ItemValue) AS Part4,
GetPart(5,t1.ItemValue) AS Part5
FROM t1
|
| |
|
| |
|
|
|
| Спасибо огромное оказывается все так просто. У мну просто голова болит уже над вб шаманить ибо только закончил с загрузкой из екселя в базу | |
|
| |