Abfahrzeiten Bus aus Datenbank darstellen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Abfahrzeiten Bus aus Datenbank darstellen

    Ich möchte ein kleines Programm auf einem alten Windows Tablet laufen lassen, das mir zeigt in wie viel Minuten der nächste Bus fährt.
    Ich habe aber gerade nicht mal einen Ansatz. Da sich der Fahrplan 2x im Jahr ändert möchte ich ihn in einer Datenbank haben. Dort soll er in Abhängigkeit von Wochentag und Uhrzeit ausgelesen werden.
    Wie sollte ich das am besten angehen?
    Man(n) kann auch ohne Hunde leben, aber es lohnt nicht (Heinz Rühmann)
    Hey,

    stellt den der Busbetreiber die Daten online bereit? Und wenn ja, ein LInk wäre gut, dann kann man mal schauen!
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    How to turn OPTION STRICT ON
    Why OPTION STRICT ON
    Danke schon mal für eure Antworten.
    Die Daten stehen online nur als PDF zur Verfügung, das hilft mir wohl nicht wirklich.



    Eventuell könnte ich eine EXCEL Tabelle als Grundlage nehmen? Die wäre auch leicht zu pflegen.
    Man(n) kann auch ohne Hunde leben, aber es lohnt nicht (Heinz Rühmann)
    Zum Bleistift: swwv.de/wp-content/uploads/adn…fahrplanauskunft-2-29.pdf

    Ich denke das hilft gar nicht weiter, welchen Fahrplan der OP genau meint. Denn der OP hat auch einen Teil der Legende verschwiegen.
    Daher würde ich denken, es reicht aus sich auf diese Aussage zu beziehen:
    Ich möchte ein kleines Programm ... laufen lassen, das mir zeigt in wie viel Minuten der nächste Bus fährt.
    .
    @Skino Es sieht mir so aus, dass Du Dir ein eigenes Format machen musst.
    Das einfachste wäre natürlich, die Abfahrtzeiten direkt als Liste(n) von DateTime-Instanzen abzulegen und dann z.B. als XML abzuspeichern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    als Liste(n) von DateTime-Instanzen
    Über die gesamte Gültigkeit des Fahrplans?
    Halte ich nicht für so gut.
    Ich würde mir in drei Listen (werktags, samstags, sonntags) nur die jeweiligen Zeiten speichern.

    Oder hattest du das mit Liste(n) so gemeint?

    Wenn dann alles läuft, wird noch eine zusätzliche Herausforderung die Einbindung eines Feiertagskalenders.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    so gemeint?
    Ja.
    Klar, dass wir dann nur die Time-Komponente der DateTime-Instanz verwenden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Mit iText7 kann man zwar schon an folgende Daten kommen:

    Quellcode

    1. 5 15 35 57 5
    2. 6 17 37 57 15 45 6
    3. 7 17 37 57 15 45 7
    4. 8 17 37 57 15 45 08 8
    5. 9 17 37 57 15 37 57 08 9
    6. 10 17 37 57 17 37 57 08 10
    7. 11 17 37 57 17 37 57 08 11
    8. 12 17 37 57 17 37 57 09 45 12
    9. 13 17 37 57 17 37 57 15 45 13
    10. 14 17 37 57 17 37 57 15 45 14
    11. 15 17 37 57 17 37 57 15 45 15
    12. 16 17 37 57 17 37 57 15 45 16
    13. 17 17 37 57 15 45 15 45 17
    14. 18 17 37 57 15 45 15 18
    15. 19 17 45 15 45 08 19
    16. 20 25 15 08 20
    17. 21 08 08 08 21
    18. 22 08 08 08 22
    19. 23 08 08 08 23
    20. 0 08 0
    21. 1 1

    Und dann kann man ausklamüsern, dass bei jedem Minutenzeitsprung ein Wechsel von Mo-Fr -> Sa -> So/Feiertag vorgenommen wird. Darauf könnte man dann was basteln, aber da ist evtl. viel Unsicherheit dabei. Das mit den Feiertagen sehe ich unproblematisch. Es gibt einen Haufen feste Feiertage und für die beweglichen gibt es die Formel nach Spencer. Ich würd das auch mit nem tDS machen. Obwohl. Ggf. könnte man auf eine Speicherung auch komplett verzichten und jedes Mal die PDF einlesen. Dauert bei mit ca. 1 Sekunde.
    Die Daten aus der PDF manuell per copy&paste extrahieren hingegen funktioniert bei mir nicht. Das gibt Datensalat. Zwar mit Glasnudeln, aber für eine effektive Nutzung zu durcheinander.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Hi,

    man kann schon mit iText bestimmte Regionen aus der .pdf auslesen und somit verwechslungen mit Montag-Freitag, Samstag, Sonntag ausmerzen. Jedoch hat man dann ein neues Problem. Es geht die Information verloren, dass z. B. am Samstag um 5 Uhr kein Bus fährt. Ich hab das jetzt die letzte Stunde versucht zu lösen, stoße aber immer auf ein neues Problem. .pfds zu parsen ist meist rechter Rotz in meinen Augen. Auch die .pdf einfach mit Copy und Paste zu verarbeiten ist nicht zielführend. Ich geb mich hier geschlagen... Falls es noch jemand interessiert und weitermachen will....

    VB.NET-Quellcode

    1. Imports iTextSharp.text.pdf
    2. Imports iTextSharp.text.pdf.parser
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Dim x As New PdfReader("schedule.pdf")
    6. Dim r As New util.RectangleJ(20, 130, 200, 400)
    7. Dim f As RenderFilter() = {New RegionTextRenderFilter(r)}
    8. Dim s As New FilteredTextRenderListener(New LocationTextExtractionStrategy(), f)
    9. Dim result As String = PdfTextExtractor.GetTextFromPage(x, 1, s)
    10. End Sub
    11. End Class


    wobei man beachten muss, dass x1 und y1 im Rectangle die linke untere Ecke und x2, y2 die rechte obere Ecke ist. Auch läuft y von unten nach oben. Ich habe noch iText5 verwendet....
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    How to turn OPTION STRICT ON
    Why OPTION STRICT ON
    Wow, ihr hängt euch ganz schön rein. Vielen Dank.
    Ich könnte die Daten aber auch einfach abschreiben und gegebenen Falls anpassen.
    Dann wäre der Aufwand überschaubarer.
    Auch wenn ich dann immer noch nicht weiss wie weiter.
    Was wäre denn das optimale Format für die Daten?
    Man(n) kann auch ohne Hunde leben, aber es lohnt nicht (Heinz Rühmann)

    Skino schrieb:

    Ich könnte die Daten aber auch einfach abschreiben und gegebenen Falls anpassen.
    Ich dachte, dass wir programmieren, um zu automatisieren. Nuja.
    Wie es weitergeht: Du packst die ausgelesenen/abgeschriebenen Zeiten in 3 List(Of Date), wie RfG und petaod schon schrieben: Für normale Tage, Samstage, Sonn-/Feiertage. Wenn Du dann mit dem Bus fahren willst, ermittelst Du, an was für einem Tag Du Dich befindest. Dazu nimmst Du z.B. Date.Today.DayOfWeek, um den Wochentagindex rauszubekommen. Und dann brauchst Du noch eine Liste von Feiertagen, damit Du Deinem Programm klarmachen kannst: heute ist Feiertag, schau in der Feiertag-Abfahrtzeiten-Tabelle nach. Dann lässt Du das Programm nach der von jetzt aus nächsten Abfahrtzeit schauen, Minutendifferenz zu jetzt berechnen, diese anzeigen lassen, fertig.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Skino schrieb:

    Was wäre denn das optimale Format für die Daten?
    Du machst Dir eine Liste in einer Klasse, die die Uhrzeiten der Abfahrten enthält und serialisierst diese Klasse mit XML.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!