Avatar billede jensen363 Forsker
11. september 2007 - 09:46 Der er 15 kommentarer og
2 løsninger

Adskil opdel streng

Jeg har følgende tekststrenge, som jeg gerne vil have adskilt i tre kolonner i en ny tabel

(1) Tekst
(1.1) Tekst
(1.1.1) Tekst
(2) Tekst
(2.1) Tekst
(2.1.1) Tekst
(2.1.2) Tekst

Ønsket opdeling :

Level ID  Tekst
1    (1)  Tekst
2    (1.1)  Tekst
3    (1.1.1)  Tekst
1    (2)  Tekst
2    (2.1)  Tekst
3    (2.1.1)  Tekst
3    (2.1.2)  Tekst

How to do ?
Avatar billede Slettet bruger
11. september 2007 - 09:51 #1
Kan du ikke gøre noget med at len og str, så du tæller indtil ")" og alt efter resultatet sætter det ønskede level. Dvs. 3=level 1, 5=level 2 og 7=level 3!~)
Avatar billede jensen363 Forsker
11. september 2007 - 09:53 #2
Eksempel ???
Avatar billede supertekst Ekspert
11. september 2007 - 10:46 #3
Inspiration:
Sub adskil()
Dim level, id, tekst

Const t1 = "(1) Tekst"
Const t2 = "(1.1) Tekst"
Const t3 = "(1.1.1) Tekst"
Const T4 = "(2) Tekst"
Const T5 = "(2.1) Tekst"
Const T6 = "(2.1.1) Tekst"
Const T7 = "(2.1.2) Tekst"

    opdel t1, level, id, tekst
    opdel t2, level, id, tekst
    opdel t3, level, id, tekst
    opdel T4, level, id, tekst
    opdel T5, level, id, tekst
    opdel T6, level, id, tekst
    opdel T7, level, id, tekst
End Sub
Private Sub opdel(t0, level, id, t1)
Dim p
Rem optæl antal punktummer
    level = 1
   
    For f = 1 To Len(t0)
        If Mid(t0, f, 1) = "." Then
            level = level + 1
        Else
            If Mid(t0, f, 1) = ")" Then
                p = f
            End If
        End If
    Next f
   
    id = Left(t0, p)
    t1 = Mid(t0, p + 1)
End Sub
Avatar billede jensen363 Forsker
11. september 2007 - 11:14 #4
Supertekst > den er jeg ikke helt med på

Mit eksempel ( antal linier er stærkt simplificeret )... i den endelige udgave kan der være adskillige tusinde linier, ... jeg skal vel ikke oprette det tilsvarende antal constanter ????
Avatar billede jensen363 Forsker
11. september 2007 - 11:21 #5
I excel kan jeg ved hjælp af SEARCH() identificere placeringen af ")" ... hvordan gøres det i ACCESS ????
Avatar billede Slettet bruger
11. september 2007 - 11:50 #6
Jeg mente forresten inStr ikke str, men her er en function!~)

Private Sub SetLevel_Click()
Dim r As DAO.Recordset, a As Integer
Set r = Me.Recordset
With r
.MoveFirst
Do Until .EOF
a = InStr(1, Me.Tekst, ")", vbTextCompare)

Select Case a
Case 3
Me.Level = 1
Case 5
Me.Level = 2
Case 7
Me.Level = 3
End Select

Me.Id = Left(Me.Tekst, a)
Me.Tekst = Mid(Me.Tekst, a + 2)

.MoveNext
Loop
End With
End Sub
Avatar billede supertekst Ekspert
11. september 2007 - 11:58 #7
Nej selvfølgelig ikke - feltet skal overføres til sub-rutinen "opdel".
Const'erne var får at illustrere dine eksempler.
Avatar billede jensen363 Forsker
11. september 2007 - 13:58 #8
Ok, got it ...

InStr gjorde forskellen, men jeg mener at Supertekst også fortjener point, så lig venligts et svar :-)
Avatar billede jensen363 Forsker
11. september 2007 - 14:23 #9
Øv ... spg ikke helt ok alligevel

(1.10) = 6
(10.1.1) = 8
Avatar billede supertekst Ekspert
11. september 2007 - 14:41 #10
Det får du så..
Avatar billede jensen363 Forsker
11. september 2007 - 14:45 #11
Supertekst > jeg tror mere din version er brugbar, men kræver lige lidt forklaring for jeg kan ikke få det til at virke :-(
Avatar billede jensen363 Forsker
11. september 2007 - 14:56 #12
Jeg har denne SQL til at gøre det meste ( F1 = tekst ):

SELECT InStr([F1]," ") AS SP,
Left([F1],[SP]) AS [RCTS ID],
Mid([F1],([SP]+1),500) AS [RCTS DESCRIPTION]
FROM qryRCTS_UNION
WHERE (((qryRCTS_UNION.F1) Like "(*"));

Så jeg mangler reelt "kun" at identificere Level 1, 2 og 3 på baggrund af RCTS ID
Avatar billede supertekst Ekspert
11. september 2007 - 15:35 #13
Hvis denne funktion kaldes - med RCTS ID som parameter

Private function FindLevel(RCTS)
    FindLevel = 1
   
    For f = 1 To Len(RCTS)
        If Mid(RCTS, f, 1) = "." Then
            FindLevel = FindLevel + 1
        End If
    Next f
End Function
Avatar billede jensen363 Forsker
11. september 2007 - 16:48 #14
Supertekst > Jeg prøver i morgen :-)
Avatar billede supertekst Ekspert
11. september 2007 - 17:53 #15
ok
Avatar billede jensen363 Forsker
12. september 2007 - 08:38 #16
I hjalp begge med løsningen ... håber fordelingen er ok :-)
Avatar billede supertekst Ekspert
12. september 2007 - 08:58 #17
Ok m/tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester