SQL Nächsten Termin auslesen

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von mikeb69.

    SQL Nächsten Termin auslesen

    Hey Leute :)

    ich bin in SQL noch ein ziemlicher Bob... :D
    Ich habe ein Panel mit Labels, indem der nächste Termin angezeigt wird^^.
    So, nach Datum auslesen klappt ja.
    Aber nach der Uhrzeit nicht...

    Wie schaffe ich es dann auch noch nach der Uhrzeit auszulesen?
    Ich habe mir so gedacht ich nehme alle Datensätze mit einem Reader raus, die das näheste Datum beinhalten.
    Danach überprüfe ich auf die näheste Uhrzeit, auch mit einem Reader.

    Aber wie schaff ich des? Bin bisher schonmal so weit gekommen.. (Funktioniert)
    Wie gesagt, bin Neuling:

    Spoiler anzeigen


    VB.NET-Quellcode

    1. Try
    2. Dim strSQL As String
    3. Dim con As New SqlConnection
    4. Dim cmd As SqlCommand
    5. Dim reader As SqlDataReader
    6. strSQL = "Select TOP 1 * from Termine order by Datum"
    7. con = New Data.SqlClient.SqlConnection(AB.UserConnectionString)
    8. con.Open()
    9. cmd = New SqlCommand(strSQL, con)
    10. reader = cmd.ExecuteReader
    11. If reader.HasRows Then
    12. reader.Read()
    13. Me.textbox_TerminDatum.Text = reader("Datum").ToString.Trim
    14. Me.textbox_TerminKurzinfo.Text = reader("Komplettbeschreibung").ToString.Trim
    15. Me.textbox_TerminMitarbeiter.Text = reader("Mitarbeiter").ToString.Trim
    16. Me.textbox_TerminPrioritaet.Text = reader("Priorität").ToString.Trim
    17. Me.textbox_TerminUhrzeit.Text = reader("Uhrzeit").ToString.Trim
    18. Else
    19. Me.textbox_TerminDatum.Text = "-"
    20. Me.textbox_TerminKurzinfo.Text = "-"
    21. Me.textbox_TerminMitarbeiter.Text = "-"
    22. Me.textbox_TerminPrioritaet.Text = "-"
    23. Me.textbox_TerminUhrzeit.Text = "-"
    24. End If
    25. reader.Close()
    26. cmd.Dispose()
    27. con.Close()
    28. con.Dispose()
    29. Catch ex As Exception
    30. MessageBox.Show(ex.Message)
    31. End Try



    Würde mich echt freuen wenn ihr helfen könntet^^.
    Danke für eure Hilfe.

    Mfg

    Skype

    SQL-Abfrage

    1. SELECT * FROM `termin` WHERE `datum` >= NOW() AND `Uhrzeit` >= NOW() ORDER BY `datum`, `Uhrzeit` ASC LIMIT 1


    Wobei es hierbei einfacher wäre wenn Datum + Uhrzeit in einer Spalte sind

    SQL-Abfrage

    1. SELECT * FROM `termin` WHERE `datumzeit` >= NOW() ORDER BY `datumzeit` ASC LIMIT 1
    Mhm. Weil ich dachte das er funktioniert. =o
    Aber bei mir kommt eine Fehlermeldung beim einlesen. "NOW wird nicht als integrierte Funktion erkannt" =(

    Edit: sry, die exakte Fehlermeldung ist: "'NOW' wird nicht als Name einer integrierten Funktion erkannt."
    Musste selbst mal suchen wie die aktuelle Zeit in deiner SQL Version auslesen kannst. Ansonsten über die Zeit von VB machen, geht ja auch. Normal nutze ich aber lieber die Zeit des SQL Servers als die des Clienten, weil die ja falsch sein könnte und dann die Abfrage nicht richtige Ergebnisse liefert.
    Hallo Skype,

    dann bau dir doch deinen String so dass du die VB Funktion

    VB.NET-Quellcode

    1. now
    verwenden kannst.

    Wie meinst du das, ob das in einer WindowsForm läuft?

    Greife ich auf eine MSSQL DB zu, geschieht das immer mittels ASP.NET
    Deshalb die Frage.

    Gruss

    mikeb69
    @mike: wie ich in einen meiner Posts schon erwähnte ist es nicht ratsam die Zeit des Clienten zu nehmen, würde man am Client das Datum umstellen, würde der falsche Datensatz aus der Datenbank geholt.
    Gut da es sich hierbei im eine lokale DB handelt käme es aufs selbe heraus, aber allgemein würd ich in der Hinsicht scohn sauber Programmieren. Ich bin mir sicher dass auch MSSQL Funktionen bereitstellt die die aktuelle Zeit ausgeben können. Leider habe ich momentan kein MSSQL Server wo ich sowas testen könnte.
    Also, wie gesagt. Ich habe keinen Plan was der Unterschied zwischen MySQL und MSSQL. Ich weiss nichtmal, womit ich da eigentlich programmiere aber ich kann auf jeden fall die Basics xD.
    Ich weiss nur, das ich einen Microsoft SQL Server 2008 R2 habe, und mir da auch die Datenbanken erstelle. Alles per VB Code. Mit create usw.

    Spoiler anzeigen


    VB.NET-Quellcode

    1. Sub NaechsterTermin()
    2. Dim Zeit As String
    3. Dim Stunde As String
    4. Dim Minute As String
    5. If Now.Hour < 10 Then
    6. Stunde = "0" & Now.Hour.ToString
    7. Else
    8. Stunde = Now.Hour
    9. End If
    10. If Now.Minute < 10 Then
    11. Minute = "0" & Now.Minute.ToString
    12. Else
    13. Minute = Now.Minute
    14. End If
    15. Zeit = Stunde & ":" & Minute
    16. Try
    17. Dim strSQL As String
    18. Dim con As New SqlConnection
    19. Dim cmd As SqlCommand
    20. Dim reader As SqlDataReader
    21. strSQL = "SELECT TOP 1 * FROM Termine WHERE Datum >= " _
    22. & Now.Date.ToString.Replace(" 00:00:00", "") & " AND Uhrzeit >= " _
    23. & Zeit & " ORDER BY Datum, Uhrzeit"
    24. con = New Data.SqlClient.SqlConnection(AB.UserConnectionString)
    25. con.Open()
    26. cmd = New SqlCommand(strSQL, con)
    27. reader = cmd.ExecuteReader
    28. If reader.HasRows Then
    29. reader.Read()
    30. Me.textbox_TerminDatum.Text = reader("Datum").ToString.Trim
    31. Me.textbox_TerminKurzinfo.Text = reader("Komplettbeschreibung").ToString.Trim
    32. Me.textbox_TerminMitarbeiter.Text = reader("Mitarbeiter").ToString.Trim
    33. Me.textbox_TerminPrioritaet.Text = reader("Priorität").ToString.Trim
    34. Me.textbox_TerminUhrzeit.Text = reader("Uhrzeit").ToString.Trim
    35. Else
    36. Me.textbox_TerminDatum.Text = "-"
    37. Me.textbox_TerminKurzinfo.Text = "-"
    38. Me.textbox_TerminMitarbeiter.Text = "-"
    39. Me.textbox_TerminPrioritaet.Text = "-"
    40. Me.textbox_TerminUhrzeit.Text = "-"
    41. End If
    42. reader.Close()
    43. cmd.Dispose()
    44. con.Close()
    45. con.Dispose()
    46. Catch ex As Exception
    47. MessageBox.Show(ex.Message)
    48. End Try
    49. End Sub




    Habe es jetzt mal so versucht, jedoch kommt eine Fehlermeldung, das meine Syntax falsch ist.
    Fehlermeldung:

    "Falsche Syntax in der Nähe von '.2012' "

    Wenn ich Debugge, schaut mein strsql so aus:

    SELECT TOP 1 * FROM Termine WHERE Datum >= 15.02.2012 AND Uhrzeit >= 10:23 ORDER BY Datum, Uhrzeit

    Danke für eure Geduld mit mir :((
    Ein Datum muss unter Hochkomme (') sein.

    SQL-Abfrage

    1. SELECT TOP 1 * FROM Termine WHERE Datum >= '02/15/2012' AND Uhrzeit >= '10:23' ORDER BY Datum, Uhrzeit


    obwohl ich mir nicht sicher bin ob eine Uhrzeit alleine funktioniert.
    Ansonsten

    SQL-Abfrage

    1. SELECT TOP 1 * FROM Termine WHERE Datum >= '02/15/2012' AND Uhrzeit >= '02/15/2012 10:23:00' ORDER BY Datum, Uhrzeit


    wie oben bereits erwähnt ist getdate() aktuelle Systemuhrzeit + Datum

    In deinem Fall wenn ich es richtig verstehe was du ausgeben willst

    SQL-Abfrage

    1. SELECT TOP 1 * FROM Termine WHERE Datum >= getdate() ORDER BY Datum, Uhrzeit


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten