Select-Befehl richtige Schreibweise

  • VB6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Serafim87.

    Select-Befehl richtige Schreibweise

    Hallo Leute,
    hab ein "kleines" Problem mit ner Highscore-Liste. Hab hier nen Code aus dem Netz und wollt mal fragen wie ich den Select-Befehl richtig eingebe, da immer ein Fehler auftritt. "Select --> verlangt Ausdruck).

    Weis nichtmal ob ich ihn so nehmen kann, bin nämlich langsam am verzweifeln, da ich schon bestimmt ne Woche damit zubringe ne Datenbankanbindung zu erstellen und die Datenbank so abzufragen, dass nur ne Highscoreliste ausgegeben wird. Und hab kommenden Dienstag die Präsentation in der Schule.

    Hab ne Datenbankanbindung mit dem ADODC-Element erstellt, die Tabelle wird in nem DataGrid ausgegeben. Soweit funktioniert auch alles, kann Datensätze erstellen, verändern, löschen . . . . . Das bekomme ich hin und verstehs auch, aber wie ich nun ne Abrage dieser Tabelle erstelle entzieht sich meines Geistes. ;(

    Ich hab mir das so gedacht:

    Name in Textfeld eingetragen, Punkte aus dem Labelfeld übernommen und durch Command-Button in die Tabelle eingetragen -> im gleichen Control wird eine Auswahlabfrage gestartet um die Tabelle nach nach Punkten absteigend zu sortieren und nur den Rang 1.-10. wird anzeigen.


    Private Sub cmd_OK_Click()
    Dim cnn As ADODB.Connection
    Set cnn = CreateObject("Adodb.connection")
    cnn.Open "Provider=microsoft.jet.oledb.4.0, data source=& appl path &\score.mdb;"

    Dim Rst As Recordset
    ====> set Rst = cnn.Execute (select * from score order by punkte) <====

    Rst.MoveFirst

    Do While Not Rst.EOF
    Debug.Print Rst.Fields("rang,name,punkte").Value
    Rst.MoveNext
    Loop

    Rst.Close
    cnn.Close

    Ich hoffe ihr könnt mir helfen, vielleicht hab ich auch nen total falschen Ansatz.
    Achso, weis nicht ob es wichtig ist, aber der Primärschlüssel ist auf Rang gesetzt und dies ist ein Autowert.

    Danke schonmal im vorraus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Serafim87“ ()

    Ich mach das immer so (ist ein Auszug aus meiner Verbindungsklasse).
    Das Recordset "rs" muss vorher eine Instanz mit "New" bekommen.
    m_cnConnection ist natürlich die bestehende DB-Verbindung

    EDIT:
    Vielleicht ist das Problem bei dir durch ändern von
    "Dim Rst As Recordset" in "Dim Rst As ADODB.Recordset"
    behoben

    Visual Basic-Quellcode

    1. Public Function InitRecordset(rs As ADODB.Recordset, sqlString As String, Optional Writeable As Boolean = False) As Long
    2. On Error Resume Next
    3. Call rs.Close
    4. On Error GoTo onError
    5. rs.CursorLocation = adUseClient
    6. Set rs.ActiveConnection = m_cnConnection
    7. rs.CursorType = adOpenDynamic
    8. If Writeable Then
    9. rs.LockType = adLockOptimistic
    10. Else
    11. rs.LockType = adLockReadOnly
    12. End If
    13. rs.Source = sqlString
    14. Call rs.Open
    15. m_lRecordsAffected = rs.RecordCount
    16. InitRecordset = rs.RecordCount
    17. Exit Function
    18. onError:
    19. m_lastErrDescription = Err.Description
    20. m_lastErrNumber = Err.Number
    21. InitRecordset = -1
    22. End Function

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Duke“ ()