Brauche mal hilfe zu MSFlexGrid

  • VB6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Gast.

    Brauche mal hilfe zu MSFlexGrid

    ich habe in Access eine Tabelle erstellt und lasse sie mir über VB6 in DAO ausgeben
    Ich lasse mir in Listbox1 Albumtitel ausgeben und bei Klick auf einen Eintrag lasse ich mir in einen MSFlexGrid Titel , Laufzeit und Interpret dazu ausgeben.Mein Problem ist das er die Titel nach Alphabet und nicht in der Reihenfolge wie Sie in der Access Tabelle stehen. Wie erreiche ich es das die Titel nach der Reihenfolge wie sie in der Access Tabelle stehen ? hier mein Code

    <pre> Private Sub Form_Load()
    Set db = DBEngine.OpenDatabase(App.Path & "\Musik.mdb")
    Set Rs = db.OpenRecordset("Album")
    Set Rs = db.OpenRecordset("SELECT DISTINCT Albumtitel FROM Album WHERE Musikart Like 'Sampler' ORDER BY Albumtitel", dbOpenDynaset)
    List1.Clear
    Do While Not Rs.EOF
    List1.AddItem Rs.Fields("Albumtitel").Value

    Rs.MoveNext

    Loop

    End Sub

    Private Sub List1_Click()
    Set db = DBEngine.OpenDatabase(App.Path & "\Musik.mdb")
    Set Rs = db.OpenRecordset("Titel")
    Set Rs = db.OpenRecordset("SELECT Distinct Titel,Länge,Interpret FROM Titel WHERE Albumtitel= '" & List1.List(List1.ListIndex) & "'")

    ' Wurden Daten zurückgegeben?

    If Not (Rs.EOF) Then

    ' Ja, Anzahl ermitteln

    Rs.MoveLast: Rs.MoveFirst



    ' FlexGrid bearbeiten

    With Me.MSFlexGrid1

    ' Zeilenzahl setzen

    .FixedCols = 1

    .Cols = .FixedCols + Rs.Fields.Count



    ' Zeilenzahl setzen

    .FixedRows = 1

    .Rows = .FixedRows + Rs.RecordCount



    ' Alle Datensätze durchlaufen

    For lngRow = .FixedRows To Rs.RecordCount + .FixedCols - 1

    ' Alle Spalten durchlaufen

    For lngCol = 0 To Rs.Fields.Count - 1

    ' Ist der Wert Null?

    If (IsNull(Rs.Fields(lngCol).Value)) Then

    ' Ja, nix eintragen

    .TextMatrix(lngRow, .FixedCols + lngCol) = vbNullString

    Else

    ' Nein, Wert eintragen

    .TextMatrix(lngRow, .FixedCols + lngCol) = Rs.Fields(lngCol).Value

    End If

    Next lngCol



    ' Datensatz-Nummer eintragen

    .TextMatrix(lngRow, .FixedCols - 1) = lngRow



    ' Nächster Datensatz

    Rs.MoveNext

    Next lngRow



    ' Alle Spaltennamen setzen

    For lngCol = 0 To Rs.Fields.Count - 1

    .TextMatrix(.FixedRows - 1, .FixedCols + lngCol) = Rs.Fields(lngCol).Name

    Next lngCol

    End With

    End If



    ' Abfrage schließen

    Rs.Close



    ' Datenbank schließen

    End Sub
    </pre>

    Cu Big Boy
    Hi,

    Daten in einer Datenbank, egal welches System

    H A B E N bei der Speicherung der Daten K E I N E Ordnung. Eine Ordnung kannst du erst durch eine Abfrage mit dem SQL Zusatz "ORDER BY feldname" herstellen.

    Wenn du in Access eine Tabelle in der Datenansicht öffnest bekommst du eine Anzeige auf Basis einer Abfrage sortiert nach Primärschlüssel, oder aber auch nicht.

    Gruß, Jenny