Datumsabfragen aus DS oder DT

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 38 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    Datumsabfragen aus DS oder DT

    Hallo

    Ich bin mit meinem Project nun schon weit gekommen. Nun möchte ich meine Datums-Blätter-Funktion umsetzen.
    Der Code unten funktioniert soweit nur weiß ich nicht wie ich nun die entsprechenden Daten aus dem DS DT ( siehe Bild ) ... herrausbekomme.
    Am Ende steht eine Access 2003 DB, wenn das wichtig ist.

    Hoffe ihr könnt mir helfen.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. #Region "Monatssauswahl"
    2. Private Sub btn_prevMonth_Click(sender As Object, e As EventArgs) Handles btn_monthprev.Click
    3. End Sub
    4. Private Sub btn_nextMonth_Click(sender As Object, e As EventArgs) Handles btn_monthnext.Click
    5. End Sub
    6. Private Sub ButtonClicks_Click(sender As System.Object, e As System.EventArgs) Handles btn_monthprev.Click, btn_monthnext.Click
    7. lbl_selected_month.Visible = True
    8. Select Case True
    9. Case sender Is btn_monthnext
    10. Money.int_counter += 1
    11. ' das Datum für die SQL oder... Abfrage
    12. Money.dat_date = Format$(DateAdd("M", Money.int_counter, Now), "MM.yyyy")
    13. 'ab hier nur für die Anzeige
    14. Money.lbldatum = Format$(DateAdd("M", Money.int_counter, Now), "MMMM.yyyy")
    15. lbl_month.Text = Money.lbldatum
    16. lbl_selected_month.Text = "Daten für Monat: " & Money.lbldatum
    17. Case sender Is btn_monthprev
    18. Money.int_counter -= 1
    19. ' das Datum für die SQL oder... Abfrage
    20. Money.dat_date = Format$(DateAdd("M", Money.int_counter, Now), "MM.yyyy")
    21. 'ab hier nur für die Anzeige
    22. Money.lbldatum = Format$(DateAdd("M", Money.int_counter, Now), "MMMM.yyyy")
    23. lbl_month.Text = Money.lbldatum
    24. lbl_selected_month.Text = "Daten für Monat: " & Money.lbldatum
    25. End Select
    26. End Sub
    27. #End Region

    Bilder
    • Datum-1.jpg

      78,51 kB, 1.000×447, 86 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Öhm. Was konkret is'n Money.lblDatum in dieser Codezeile? Ein Label, wie der Name vermuten lässt? Ein String? Etwas ganz anderes? Und was beherbergt Money.int_counter? Der Name gibt nicht viel her.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Moin moin

    so habe den Code etwas geändert und 2 Bilder angehangen in der Hoffnung es ist verständlicher.

    Habe nun eine Abfrage gemacht siehe Bild 3 aber es wird dabei nichts angezeigt.

    Spoiler anzeigen

    Das ist das Datumsformat wie ich es aus DT DS ... auslesen möchte. So steht es in der DB: " 18.01.2022 " und ich möchte " 01.2022 " oder " 12.2021 " usw. auslesen

    VB.NET-Quellcode

    1. Money.SQL_date = Format$(DateAdd("M", Money.int_month, Now), "MM.yyyy")


    VB.NET-Quellcode

    1. #Region "Monatssauswahl"
    2. Private Sub btn_prevMonth_Click(sender As Object, e As EventArgs) Handles btn_monthprev.Click
    3. End Sub
    4. Private Sub btn_nextMonth_Click(sender As Object, e As EventArgs) Handles btn_monthnext.Click
    5. End Sub
    6. Private Sub ButtonClicks_Click(sender As System.Object, e As System.EventArgs) Handles btn_monthprev.Click, btn_monthnext.Click
    7. lbl_selected_month.Visible = True
    8. Select Case True
    9. Case sender Is btn_monthnext
    10. Money.int_month += 1
    11. ' das Datum für die SQL oder... Abfrage
    12. Money.SQL_date = Format$(DateAdd("M", Money.int_month, Now), "MM.yyyy")
    13. Me.VorgaengeTableAdapter.FillByMonth(Me.MyMds.Vorgaenge, CType(Money.SQL_date, Date?))
    14. ' dient nur für die Anzeige auf der GUI
    15. lbl_month.Text = Format$(DateAdd("M", Money.int_month, Now), "MMMM.yyyy")
    16. lbl_selected_month.Text = "Daten für Monat: " & lbl_month.Text
    17. Case sender Is btn_monthprev
    18. Money.int_month -= 1
    19. ' das Datum für die SQL oder... Abfrage
    20. Money.SQL_date = Format$(DateAdd("M", Money.int_month, Now), "MM.yyyy")
    21. Me.VorgaengeTableAdapter.FillByMonth(Me.MyMds.Vorgaenge, CType(Money.SQL_date, Date?))
    22. ' dient nur für die Anzeige auf der GUI
    23. lbl_month.Text = Format$(DateAdd("M", Money.int_month, Now), "MMMM.yyyy")
    24. lbl_selected_month.Text = "Daten für Monat: " & lbl_month.Text
    25. End Select
    26. End Sub
    27. #End Region





    @ErfinderDesRades
    Ich versuche gerade dein " Filter-Ausdrücke mit PlaceHoldern " anzuwenden. Ich komme damit nicht weiter. ;(
    Erbitte Hilfe

    Bilder
    • lbl_month.Text.jpg

      12,13 kB, 186×55, 335 mal angesehen
    • lbl_selected_month.jpg

      18,08 kB, 260×129, 328 mal angesehen
    • sqlabfrage-1.jpg

      125 kB, 984×639, 67 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    @ErfinderDesRades

    Habe das nun abgeschaltet. Resultat:
    Kein Datum funktioniert mehr

    VB.NET-Quellcode

    1. Public Function gettime() As String
    2. Dim MyDate = Date.Today : Dim strDay As String : Dim strToday As String
    3. strDay = Format$(MyDate, "dddd")
    4. strToday = MyDate.ToString("dd MMMM yyyy", CultureInfo.CreateSpecificCulture("de-DE"))
    5. Return strDay & ", " & strToday
    6. End Function

    Die KeyPress mit

    VB.NET-Quellcode

    1. Select Case Asc(e.KeyChar) : Case 48 To 57, 44, 8
    funktioniert nicht mehr usw....

    Ich frage mich, wenn das alles nicht zu .Net gehört warum ist das dann immer Standartmäßig eingebunden?
    Jetzt ist wieder Tage von Arbeit für die Katz und ich bin nicht weiter gekommen ;(
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Dim MyDate = Date.Now (heutiges Datum inkl. Uhrzeit etc.)
    Dim Day = MyDate.Day (nur der Tag, geht auch mit Monat, Jahr etc.)
    Dim Today = MyDate.Date (heutiges Datum ohne Uhrzeit)

    Amelie schrieb:

    Ich frage mich, wenn das alles nicht zu .Net gehört warum ist das dann immer Standartmäßig eingebunden?

    Weil du vermutlich den Generalimport für VB noch in deinem Projekt drinne hast.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Amelie schrieb:

    Ich frage mich, wenn das alles nicht zu .Net gehört warum ist das dann immer Standartmäßig eingebunden?
    Das fragt sich jeder.
    Der Urheber dieses Fehl-Designs konnte leider bislang nicht dingfest gemacht werden, daher gibt es dazu nur Hypothesen:
    Bosheit, Dummheit, Ignoranz, Inkompetenz, Machtkämpfe, Intrigen, ...

    ErfinderDesRades schrieb:

    Bosheit, Dummheit, Ignoranz, Inkompetenz, Machtkämpfe, Intrigen, ...


    Ich als jemand der amerikanischen Unternehmen immer weniger vertraut sage, Geld machen wie auch Datensammelwut fände ich erwähnenswert. PerfWatson2.exe(gehört zum Studio) sammelt sehr sehr viele Daten, die US-Regierung will schon wissen welcher Programmierer wozu fähig ist, bzw. kann mit Hilfe von MS auffällige frühzeitig identifizieren(sowhl im negativen wie auch positiven Sinn), möglicherweise bevor denen klar ist was MS mit den gesammelten Daten machen könnte.

    Da wäre es doch schade gewesen wenn VB-Classic Programmierer eine andere Sprache gelernt hätten und ein Konkurenzprodukt nehmen(im schlimmsten Fall auf Linux für Windows programmieren), weil der Umstieg auf NET FW ähnlich schwer gewesen wäre. Daher vermutlich auch die mehr als nur großzügige VS CE, bzw. früher die Express. Gratis ist die VS CE nicht wirklich, man gibt eine Menge von sich preis.

    (Nein ich trage keinen Aluhut)

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Takafusa“ ()

    @ErfinderDesRades

    Habe nun den alten VB Ballst so gut ich konnte entfernt. Nun komme ich aber einfach nicht weiter.
    Irgendwo hängst und ich weis nicht weiter. Beim googlen kommt man immer nur auf die alten Versionen von Add... so wie ich es vorher hatte.


    In der Class

    VB.NET-Quellcode

    1. Public MyDate As Date = Date.Now
    2. Public Function gettime() As String
    3. Dim strDay As String : Dim strToday As String
    4. strDay = MyDate.ToString("dddd")
    5. strToday = MyDate.ToString("dd MMMM yyyy", CultureInfo.CreateSpecificCulture("de-DE"))
    6. Return strDay & ", " & strToday
    7. End Function
    8. Public SQL_date As String = Date.Now.ToString("MM.yyyy")


    In der Form

    VB.NET-Quellcode

    1. Private Sub ButtonClicks_Click(sender As System.Object, e As System.EventArgs) Handles btn_monthprev.Click, btn_monthnext.Click
    2. lbl_selected_month.Visible = True
    3. Select Case True
    4. Case sender Is btn_monthnext
    5. Money.int_month += 1
    6. ' das Datum für die SQL
    7. Dim aktlmonth = Money.SQL_date
    8. Dim nextmonth As Date = CDate(Money.SQL_date).AddMonths(Money.int_month)
    9. Dim nextmonth2 As String = nextmonth.ToString("MM.yyyy")
    10. ' dient nur für die Anzeige auf der GUI
    11. Dim lblmonth As String = nextmonth.ToString("MMMM yyyy")
    12. lbl_month.Text = lblmonth
    13. lbl_selected_month.Text = "Daten für Monat: " & lbl_month.Text


    Und nun komm ich nicht mit meiner Abfrage weiter.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    Inwieweit kommst Du nicht weiter? Du bekommst für heute (18.01.2022) folgende Daten:
    nextmonth = "01.2022"
    nextmonth2 = "02.2022"
    "An Deine DB die Abfrage Du musst noch schicken."
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed

    Genau das dahinsenden bekomme ich nicht hin.
    So wie auf dem Bild beschrieben habe ich ein YT-vid gesehen nur das klappte bei mir nicht. habe immer nur leer DGV bekommen.
    Habe den Tableadapter um eine SQL Selectabfrage erweitert usw..


    VB.NET-Quellcode

    1. Private Sub testform_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. 'TODO: Diese Codezeile lädt Daten in die Tabelle "MyMds.Vorgaenge". Sie können sie bei Bedarf verschieben oder entfernen.
    3. Me.VorgaengeTableAdapter.Fill(Me.MyMds.Vorgaenge)
    4. End Sub
    5. Private Sub FillByMonthToolStripButton_Click(sender As Object, e As EventArgs) Handles FillByMonthToolStripButton.Click
    6. Try
    7. Me.VorgaengeTableAdapter.FillByMonth(Me.MyMds.Vorgaenge, New System.Nullable(Of Date)(CType(DatumToolStripTextBox.Text, Date)))
    8. Catch ex As System.Exception
    9. System.Windows.Forms.MessageBox.Show(ex.Message)
    10. End Try
    11. End Sub


    Mit exaktem Datum bekomme ich dein Datensatz angezeigt Bild 3
    Bilder
    • sqlabfrage-1.jpg

      125 kB, 984×639, 57 mal angesehen
    • sqlabfrage-2.jpg

      44,13 kB, 828×379, 60 mal angesehen
    • sqlabfrage-3.jpg

      70,66 kB, 753×561, 66 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    Und was ist, wenn Du einen Vorgang am 01.11.2021 hast? Es heißt ja: Datum = ?. Da New System.Nullable(Of Date)(CType(DatumToolStripTextBox.Text, Date)) (WTF 8| ) ja wohl den 01.11.2021 zurückgibt, würden auch nur Vorgänge im DGV angezeigt werden, die für dieses Datum gelistet sind. Anders ausgedrückt: Ich glaube kaum, dass Deine Monat-Jahr-Abfrage so klappen kann. Da musst Du wohl eher mit einer Art Contains arbeiten. Also wo Datum diesen Teiltext enthält. Wobei sich mir die Frage, was die DB da als Vergleich akzeptiert, wenn es dort als Datum gespeichert wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Aber wieso denn seltsamerweise? 11.2021 ist ja kein Datum. Dann macht aber die CType-Anweisung daraus ein Datum: 01.11.2021. Und dann wird in der DB geschaut, welche Vorgänge dieses Datum haben. Tada: Gas/Strom vom 01.11.2021! Alles logisch.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Das heißt, dass Du Deine Abfrage an die DB anders aufstellen musst, weil die bisherige so nicht aus genannten Gründen funktioniert. Wie allerdings, weiß ich nicht, ich arbeite nicht aktiv mit DBs, daher kann ich auch nicht helfen, wie eine "Zeitraum"abfrage funktioniert.

    @Amelie: Mit welchem DB-Abfragecode hat es denn geklappt, dass der komplette November angezeigt wurde?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Der komplette bzw alles Datensätze aus z.B. 11.2021 wird ja nicht angezeigt.

    Den nutze ich jetzt

    SQL-Abfrage

    1. ​SELECT ID, Kat_ID, Zahl_ID, Datum, Beschreibung, Summe, MwSt, EA_ID FROM Vorgaenge WHERE (Datum =?) Order By ID


    Hatte anstelle von " = " auch mal mit LIKE versucht aber ohne erfolg.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Von SQL hab ich keine Ahnung, aber was ist damit:

    SQL-Abfrage

    1. SELECT ID, Kat_ID, Zahl_ID, Datum, Beschreibung, Summe, MwSt, EA_ID FROM Vorgaenge WHERE Datum BETWEEN #11/01/2021# AND #11/30/2021# Order By ID

    bzw.

    SQL-Abfrage

    1. SELECT ID, Kat_ID, Zahl_ID, Datum, Beschreibung, Summe, MwSt, EA_ID FROM Vorgaenge WHERE Datum BETWEEN '2021-11-01' AND '2021-11-30' Order By ID

    Klappt das erstmal?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.