Opgelost Resultaat van sorteren niet juist

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Cor de Snor

Gebruiker
Lid geworden
27 okt 2001
Berichten
64
Beste lezer(es), ik ben een muziekdatabase aan het bouwen en heb reeds de songtitels van 2 LP's ingevoerd. Als ik het formulier open om te kijken staan de titels niet juist gesorteerd maar wat ik ook doe ik krijg het niet correct. Wat doe ik fout?
 

Bijlagen

  • Database1.zip
    39,1 KB · Weergaven: 1
Sorteren zou niet je grootste probleem moeten zijn :). Maar het is simpel op te lossen. Je hebt al een paar knoppen met code, zie ik, dus ik denk dat je onderstaande code wel onder het label Titel kan hangen:
Code:
Private Sub Bijschrift16_Click()
    With Me
        If .OrderBy = "[Titel]" Then
            .OrderBy = "[Titel] Desc"
        ElseIf .OrderBy = "[Titel] Desc" Then
            .OrderBy = "[Titel]"
        Else
            .OrderBy = "[Titel]"
        End If
        .OrderByOn = True
    End With
End Sub
Hiermee heb je aan één formulier genoeg, want het label werkt nu als knop om oplopend of aflopend te reageren.
 
Overigens is het nogal logisch dat je sortering niet klopt; kijk maar eens goed wat er écht in de rijen staat Zo is de titel "I'm Walkin'" niet écht die tekst. In werkelijkheid staat er dit: " I'm Walkin'". En ja, dan komt die tekst uiteraard boven "Blueberry Hill" te staan bij sorteren. Ik zou dus eerst het veld Titel opschonen (spaties eruit).
 
Ik zie dat in mijn vorige tekst de spaties door de editor nog waren verwijderd ook; in werkelijkheid waren het er minstens 10. Dat zie je zelf heel simpel door in zo'n 'slecht gesorteerd' veld te gaan staan, en op <Shift>+<F2> te drukken. Dan zie je dus wat er wérkelijk in het veld staat, inclusief de spaties.
Die spaties zijn dan, op hun beurt, weer geen échte spaties, maar ASCII teken 9. Normaal gesproken kun je met een query spaties verwijderen door de functie Trim([Titel]) er op los te laten. Maar die doet bij jou dus niks. Er moest een behoorlijk ingewikkelde functie aan te pas komen om dat te fixen. In bijgaande db heb ik dan ook e.e.a. verwerkt.
Verder zie je dat er nog maar één formulier is, omdat je op dat ene formulier alles kan doen qua sortering. Ik heb daarvoor overigens twee labels gebruikt, omdat het wel fijn is om in het label te zien of je oplopend of aflopend sorteert. Ook een relatief simpele oplossing, vind ik :).

Hier in ieder geval de functie om de lastige spaties te wissen:
Code:
Sub UpdateTitels()
Dim rs As DAO.Recordset
Dim txt As String, ori As String, i As Integer, j As Integer

    Set rs = CurrentDb.OpenRecordset("Songtitel")
    With rs
        Do While Not .EOF
            If Asc(Left(.Fields(1), 1)) < 65 Then
                ori = .Fields(1).Value
                txt = ""
                j = 1
                Do Until Asc(Mid(.Fields(1), j, 1)) >= 65
                    j = j + 1
                    Exit Do
                Loop
                For i = j To Len(.Fields(1))
                    txt = txt & IIf(Mid(.Fields(1), i, 1) < 65, " ", Mid(.Fields(1), i, 1))
                Next i
                txt = Trim(txt)
                .Edit
                .Fields(1).Value = txt
                .Update
            End If
            .MoveNext
        Loop
    End With
    MsgBox "Alle records aangepast!"
End Sub
 

Bijlagen

  • Database1.zip
    35 KB · Weergaven: 1
Beste OctaFish, bedankt voor je duidelijke reactie. Nog even voor de duidelijkheid, ik had 2 formulieren geplaatst als voorbeeld voor de sorteerfuncties. Ondertussen liet het me niet los en ben nog verder gaan zoeken en kwam tot de ontdekking dat de oorzaak zat in de manier van kopieren en plakken van de titels uit Wikipedie, nu nog even uitzoeken wat de juiste manier voor het plakken is.
 
Het is de vraag of dat de handigste manier is. Ik lees zelf muziekbestanden uit via MP3Tag, en in Access kun je metadata uit bestanden uitlezen en inlezen in tabellen. Sowieso heb je nu een macro die de geplakte teksten opschoont, dus je hóeft je werkwijze niet te veranderen.

En ja, ik heb één formulier verwijderd, want dat is nu overbodig omdat je kunt sorteren in één formulier :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan