Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - erster Dateneintrag aus Datenbank "verschwindet"


Lyn - Mo 08.10.18 12:57
Titel: erster Dateneintrag aus Datenbank "verschwindet"
Hi,

ich versuche es mal aufs Wesentliche runter zu brechen.
Ich habe einen Select, der über >= und <= mir nur eine bestimmte Datumsauswahl geben soll. (Select ist in der Datenbank getestet, da funktioniert alles)
Ich speichere meine Daten in einem Objekt und bilde eine Liste aus diesen Objekten. Und ohne erklärlichen Grund "klaut" er mein Startdatum.
Ich wähle z.B. 3 Tage inklusive Start- und Enddatum aus und auf SQL Seite klappt es, dass er mir das ausgibt, aber auf C# Seite plötzlich nicht.
Da wählt er erst den nächsten Tag nach dem Startdatum aus und das Enddatum, aber nicht mein eigentliches erstes Datum wie gesagt.
Da müssten dann 3 Einträge stehen in meiner Liste und es sind nur 2. Ich spreche auch direkt Index [0] an und da steht ohne besonderen Grund dann halt erst der 2. Tag.
Mein Startdatum wird ignoriert.
Der Select funktioniert in der Datenbank genau so, wie er sollte.
Und es gibt auch keinen offensichtlichen Syntaxfehler in meinem c# Code.
Meine Variablen, die das gewünschte Start- und Enddatum speichern funktionieren auch so weit.

Hat Jemand Ideen, woran es liegen könnte und was ich noch spezifisch überprüfen könnte?
Wären gerade zu viele relevante Codestellen, weswegen ich jetzt Schwierigkeiten hätte, das alles hier reinzukopieren.

Vielleicht kennt Jemand trotzdem ein ähnliches Problem? :S

Lg Lyn


Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet (überflüssige Zeilenumbrüche entfernt).
Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mo 08.10.2018 um 13:25


Ralf Jansen - Mo 08.10.18 13:05

Zitat:
Hat Jemand Ideen, woran es liegen könnte und was ich noch spezifisch überprüfen könnte?
Wären gerade zu viele relevante Codestellen, weswegen ich jetzt Schwierigkeiten hätte,
das alles hier reinzukopieren.


Debug den Code. Schaue dir den Inhalt deiner Variablen zur Laufzeit an und gleich das mit deinen Erwartungen ab.
Z.b. solltest du dir genau dein Start/EndDatum ansehen. Du wärst nicht der Erste der übersieht das ein DateTime auch immer eine Time enthält.

Ansonsten wenn die Codebasis zu komplex ist das Problem in einer weniger komplexen Beispielanwendung nachstellen und uns diese hier zur Verfügung stellen.


Palladin007 - Mo 08.10.18 13:09

Zitat:
Wären gerade zu viele relevante Codestellen, weswegen ich jetzt Schwierigkeiten hätte, das alles hier reinzukopieren.


Das ist aber häufig schon die halbe Arbeit zur Lösung des Problems.
Bevor Du nicht weißt, wo das Problem ist, wirst Du es auch nicht lösen können und wenn Du weißt, wo es liegt, kannst Du es auch hier herein kopieren ;)

Du solltest daher durch den Code debuggen und in regelmäßigen Abständen schauen, wie viele Items in der Liste sind, bis zu dem Punkt, wo es angezeigt wird. Hilfreich sind da die Watches von Visual Studio. Wenn Du dann einen Punkt erreichst, wo nicht mehr drei, sondern nur zwei Items in der Liste sind, weißt Du genau, wo Du suchen musst.
Außerdem solltest Du dir Start- und End-Zeitpunkt in den Daten anschauen, es passiert recht schnell, dass man die Uhrzeit (inklusive Millisekunden) nicht beachtet. Hier könnte die Date-Property von DateTime helfen, beachte aber, dass das in LINQ to SQL nur teilweise funktioniert.



Und da war Ralf schneller


Lyn - Mo 08.10.18 13:39

Der Fehler war im Select, so viel war mir vorher klar. Es gab nur keinen Hinweis, warum.
Da er auf SQL Seite prima funktioniert hat und über C# er plötzlich mein Startdatum ignoriert hat.
Da ich es überhaupt nicht erklären konnte, wäre mir nur in Sinn gekommen "alles" hier reinzukopieren.
Da der Fehler sich doch in irgendwelchen Daten laden Methoden verstecken müsse, so dachte ich.

Ende vom Lied: der Hinweis mit der Uhrzeit hat es gebracht...
Ich habe die Zeit tatsächlich ignoriert..
In meiner Datenbank Tabelle sind die Einträge alle mit 0 Uhr verzeichnet und der Datetimepicker liest die "jetzt" Uhrzeit, weswegen er (logischer Weise) das Datum mit 12 Uhr irgendwas nicht gefunden hat... *hust*
Völlig übersehen, vergessen zu berücksichtigen mit der Uhrzeit..

Dankeschön :)))


Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet (überflüssige Zeilenumbrüche entfernt).


Palladin007 - Mo 08.10.18 14:02

Tipp:

DateTime.Today [https://docs.microsoft.com/en-us/dotnet/api/system.datetime.today?view=netframework-4.7.2#System_DateTime_Today]

Falls Du es noch nicht kanntest