kolom splitsen

Status
Niet open voor verdere reacties.

jonathan57

Gebruiker
Lid geworden
30 jul 2010
Berichten
5
Hallo,

Ik heb een tabel met enkele kolommen, één van deze kolommen waar een naam, een klantnummer, een artikelnummer en een prijs instaat deze zou moeten opsplitst worden. Deze tabel staat in acces.

voorbeeld van 1 veld

Joske De Smedt
EDZ999[J4L4K54LSDF35JK35K35]
Cat Prize: 399,90€

Zoals u ziet worden er 3 types gegeven gesplitst door een return in een veld een het klantnummer en het artikelnummer door een "["teken

Dus dit moet dan zo worden:
naam: Joske De Smedt
klantnummer: EDZ999
artikelnummer: J4L4K54LSDF35JK35K35
Prijs: 399,90€

kan iemand hier misschien met helpen?
 
Op voorwaarde dat de gegevens altijd exact op dezelfde manier worden aangeleverd, kun je met de volgende functie de gegevens splitsen:
Code:
Private Function SplitsTekst()
Dim Tekst As String
Dim i As Integer, x As Integer
Dim s() As String
Dim sNaam As String, sKlant As String, sArtikel
Dim iPrijs As String
With CurrentDb.OpenRecordset([B][COLOR=red]"Test"[/COLOR][/B])
    If .RecordCount > 0 Then
        .MoveFirst
        Do While Not .EOF
            Tekst = .Fields([B][COLOR=green]"Tekst"[/COLOR][/B]).Value
            If InStr(1, Tekst, Chr(13) & Chr(10)) > 0 Then
                s = Split(Tekst, Chr(13) & Chr(10))
            End If
            sNaam = s(0)
            If InStr(1, s(1), "[") > 0 Then
                sKlant = Left(s(1), InStr(1, s(1), "[") - 1)
                sArtikel = Mid(s(1), InStr(1, s(1), "[") + 1, InStr(1, s(1), "]") - InStr(1, s(1), "[") - 1)
                x = 1
                Do While Not IsNumeric(Mid(s(2), x, 1))
                    x = x + 1
                Loop
                Do While IsNumeric(Mid(s(2), x, 1)) Or Mid(s(2), x, 1) = ","
                    iPrijs = iPrijs & Mid(s(2), x, 1)
                    x = x + 1
                Loop
            End If
            .Edit
            .Fields([B][COLOR=blue]"Naam"[/COLOR][/B]).Value = sNaam
            .Fields([B][COLOR=blue]"Klantnummer"[/COLOR][/B]) = sKlant
            .Fields([B][COLOR=blue]"Artikelnummer"[/COLOR][/B]) = sArtikel
            .Fields([B][COLOR=blue]"Prijs"[/COLOR][/B]) = iPrijs
            .Update
            .MoveNext
        Loop
    End If
End With
    
End Function
Deze code roep je op een formulier aan met een knop:
Code:
Private Sub cmdTest_Click()
    SplitsTekst
End Sub
In dit voorbeeld moet je de rode naam vervangen door de naam van de tabel die je gebruikt. Groen is de naam van het veld met de oorspronkelijke waarde, en rood zijn de nieuwe veldnamen die je in de tabel moet aanmaken voor de gesplitste gegevens.
 
Laatst bewerkt:
alvast bedankt voor de hulp maar ik heb dit aan gepast zodat deze code de juiste namen gebruikt en in een module geplakt maar elke keer als ik deze laat lopen blokkeert hij. énig idee hoe dat dat komt.
 
Waar loopt hij vast? En welke melding krijg je dan?
 
ik heb alles in module geplakt en aangepast als ik op play duw loopt acces en vb vast (programma reageert niet)
 
Hierbij een werkend voorbeeld.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan