vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Geburstage 
Autor: ERBRU
Datum: 26.01.22 18:26

ich versuche mit der Abfrage eine Liste nach aktuellen Geburstagen in der aktuellen Woche passt noch nicht

wer kann da helfen ?


   Private Sub Anzahl_Ereignisse()
        Dim von_Datum = Today.AddDays(7)
 
        If Me.ListenDB.Geburtstagsliste.Rows.Count = 0 Then Return
        ' Abfrage
        Dim AbfrageG As System.Data.EnumerableRowCollection(Of _
          GeburtstagslisteRow)
        AbfrageG = From Reihe In Me.ListenDB.Geburtstagsliste
                   Where Reihe.RowState <> DataRowState.Deleted AndAlso _
                     Reihe.IsGeburtstagNull = False AndAlso _
                   Reihe.Geburtstag = von_Datum _
     Select Reihe
        Dim anzahlDatensaetze As Integer = AbfrageG.Count
        If anzahlDatensaetze <> 1 Then
            MessageBox.Show(String.Concat(anzahlDatensaetze.ToString & "" & _
              "Aktuelle Geburstage"))
 
        Else
            MessageBox.Show(String.Concat(anzahlDatensaetze.ToString & "" & _
              "Aktueller Geburstag"))
 
        End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: HenryV
Datum: 27.01.22 08:44

Mit dieser Funktion kannst du die Anzahl Tage von heute bis zum nächsten Geburtstag ermitteln
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: ERBRU
Datum: 27.01.22 12:45

Danke HenryV,

habe es nun so gemacht! wenn jemand eine schönere Variante hat bitte senden, die Geburstage sollen in eine neue Liste Geburtstage: Heute, Morgen und Übermorgen

geht das auch ?

 Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles _
   Button2.Click
        For Each rwKontakt In ListenDB.Geburtstagsliste
            Dim NL As String = Environment.NewLine
            ''-----------------------------------------------------------------_
              ---------
            Dim nextBirthday = GetNextBirthDay(rwKontakt.Geburtstag)
            Dim xx = DateTime.Now
            Dim heute As DateTime = New DateTime(xx.Year, xx.Month, xx.Day)   ' 
            ' Datum ohne Zeit
            Dim geburtstagskind As DateTime = New DateTime(heute.Year, _
              nextBirthday.Month, nextBirthday.Day)  ' das selbe Jahr
 
            Select Case (geburtstagskind.Subtract(heute).Days)
                Case 0 : MessageBox.Show("Heute hat, " & rwKontakt.Vorname & "," & _
                  "" & rwKontakt.Nachname & NL _
                         & "Geburtstag", "Info!", MessageBoxButtons.OK, _
                         MessageBoxIcon.Information)
                Case 1 : MessageBox.Show("Morgen hat, " & rwKontakt.Vorname & _
                ", " & rwKontakt.Nachname & NL _
                         & "Geburtstag", "Info!", MessageBoxButtons.OK, _
                         MessageBoxIcon.Information)
                Case 2 : MessageBox.Show("Übermorgen hat, " & rwKontakt.Vorname _
                & ", " & rwKontakt.Nachname & NL _
                         & "Geburtstag", "Info!", MessageBoxButtons.OK, _
                         MessageBoxIcon.Information)
            End Select
 
        Next
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: HenryV
Datum: 28.01.22 15:42

Deine Variante könnte auch so aussehen
Dim TxtWann As String() = New String() {"Heute", "Morgen", "Übermorgen"}
 
For Each rwKontakt In ListenDB.Geburtstagsliste
    Dim diffDOY As Integer = New Date(Date.Now.Year, _
      rwKontakt.Geburtstag.Month, rwKontakt.Geburtstag.Day).DayOfYear - _
      Date.Now.DayOfYear
    If diffDOY < 3 AndAlso diffDOY >= 0 Then
        MessageBox.Show(TxtWann(diffDOY) & " hat " & rwKontakt.Vorname & " " & _
          rwKontakt.Nachname & "Geburtstag", "Info!", MessageBoxButtons.OK, _
          MessageBoxIcon.Information)
    End If
Next
Zitat:

die Geburstage sollen in eine neue Liste Geburtstage: Heute, Morgen und Übermorgen
geht das auch ?

Ja sollte gehen. Aber wie soll die Liste den aussehen?
Gibt es eine oder drei neue Listen?
Welchen Daten-Type der Liste möchtest du? (DataTable, Array, List(of), ...)
Welche Daten soll in die Liste? (Name, Geburtstag, ...)

Hier einmal ein Code-Grundgerüst
For Each rwKontakt In ListenDB.Geburtstagsliste
	Dim diffDOY As Integer = New Date(Date.Now.Year, rwKontakt.Geburtstag.Month, _
  rwKontakt.Geburtstag.Day).DayOfYear - Date.Now.DayOfYear
	Select Case diffDOY
		Case 0 : 'Hier Liste für Heute befüllen
		Case 1 : 'Hier Liste für Morgen befüllen
		Case 2 : 'Hier Liste für Übermorgen befüllen
		Case Else
	End Select
Next
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: ERBRU
Datum: 28.01.22 17:52

Hallo HenryV

fast habe das mal ausprobiert, hat nicht ganz funktioniert ich speichere das Datum als String

darum bringt er mir den Fehler, Month ist kein Member von String, Day ist kein Member von String ...

Schade

Die Liste soll tatsächlich so aussehen:

Bernd, hat Heute Geb
Hans, hat Morgen Geb
usw.

es sollen nicht drei Fenster aufpoppen

   Dim TxtWann As String() = New String() {"Heute", "Morgen", "Übermorgen"}
 
        For Each rwKontakt In ListenDB.Geburtstagsliste
            Dim diffDOY As Integer = New Date(Date.Now.Year, _
                                              rwKontakt.Geburtstag.Month, _
                                              rwKontakt.Geburtstag.Day).DayOfYe_
                                              ar - _
                                              Date.Now.DayOfYear
            If diffDOY < 3 AndAlso diffDOY >= 0 Then
 
                MessageBox.Show(TxtWann(diffDOY) & " hat " & rwKontakt.Vorname _
                  & " " & _
                  rwKontakt.Nachname & "Geburtstag", "Info!", _
                  MessageBoxButtons.OK, _
                  MessageBoxIcon.Information)
            End If
        Next
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: HenryV
Datum: 31.01.22 12:44

Dann musst du den String zuerst in ein Datum konvertieren.
Der einfache Weg ist mit CDate(), der sichere Weg ist mit Parsen
Dim NextBDaysListe As New List(Of String)
Dim TxtWann As String() = New String() {"heute", "morgen", "übermorgen"}
For Each rwKontakt In ListenDB.Geburtstagsliste
    Dim NextGebDatum As Date = CDate(rwKontakt.Geburtstag) 'String zu Date 
    ' konvertierung
    Dim diffDOY As Integer = New Date(Date.Now.Year, NextGebDatum.Month, _
      NextGebDatum.Day).DayOfYear - Date.Now.DayOfYear
    If diffDOY < 3 AndAlso diffDOY >= 0 Then
        NextBDaysListe.Add(rwKontakt.Vorname & " " & rwKontakt.Nachname & " hat" & _
          "" & TxtWann(diffDOY) & "Geburtstag")
    End If
Next
MessageBox.Show(String.Join(Environment.NewLine, NextBDaysListe), "Info!", _
  MessageBoxButtons.OK, MessageBoxIcon.Information)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: ERBRU
Datum: 31.01.22 14:42

Danke HenryV,

ich habe es so probiert, hat auch funktioniert

 Dim _birthday As Date = Convert.ToDateTime( _
   rwKontakt.Geburtstag).ToShortDateString
habe mich für deine Variante entschieden.

Danke!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: Manfred X
Datum: 31.01.22 16:23

Hallo!

Interessant.
Du erzeugst einen String aus einem DateTime-Wert,
um den auf eine DATE-Variable zuzuweisen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: ERBRU
Datum: 31.01.22 16:28

mir viel halt nichts anderes ein, wie gesagt die Variante HenryV funktioniert
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: effeff
Datum: 31.01.22 18:41

Wo kommt Deine Liste eigentlich her? Aus einer Datenbank? Dann kannst Du diese doch direkt nach einem Datum abfragen...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: ERBRU
Datum: 01.02.22 11:26

Hallo effeff

Datum abfragen ?

die Daten kommen aus einer Datatable, Dataset

die Liste sieht doch Dank HenryV gut aus oder ?

ich hätte Sie gern anders sortiert gehabt, aber ok

alle Heute
Jan
Karl
usw.
alle morgen
Frank
Maria
usw.
alle übermorgen


https://www.directupload.net/file/d/6446/ibqd8hlo_png.htm
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geburstage 
Autor: effeff
Datum: 01.02.22 14:26

//die Daten kommen aus einer Datatable, Dataset//

Und wo kommen die Daten nun wieder her? Doch aus einer Datenbank? Was hindert Dich an einer weiteren Abfrage, die Du dann von mir aus wieder in Dein DataSet einbindest?

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel