Come Ottenere la Data di inizio del mese nella Label

di il
10 risposte

Come Ottenere la Data di inizio del mese nella Label

Ciao a tutti da Maurizio
Il mio nuovo problema e questo :

In un form di Visual Studio 2022 stò tentando di eseguire un Calendario ad Oggetti 
Ora il problema che vorrei tentare di risolvere e questo :

Su questo Form ho inserito una Text che lo chiamato ( Txt_Data ) 
E una Label chiamata ( Lbl_VarData )

Poi ho scitto il seguente Codice nel Form_Load :

'Riferimento Txt_Data

1 )        Dim DataOggi As Date = Me.Txt_Data.Text & Format(Now, "dd/MM/yyyy")
        Me.Txt_Data.Text = DataOggi

E Come Riferimento alla Lbl_VarData

2 )         Dim NextTime As Date = DateAdd(DateInterval.Day, -10, DataOggi)
        Me.LbL_VarData.Text = NextTime	

E fin qui All'apparenza Sembra Funzionare Bene , perché il mio intento sarebbe quello di ottenere che :
Qualsiasi Data io possa inserire nella ( Txt_Data ) nella ( Lbl_VarData ) dovrebbe comparire la data dell'inizio del mese 
Come ad Esmpio : Se nella text io riporto la Data di oggi che è  ( 11/01/2023 ) 
Nella Label dovrebbe essere riportata la Data ( 01/01/2023 )

Ora con la chiamata Funzione 2 - della Label ( Lbl_VarDate ) se io avvio il programma, tutto funziona liscio come l'olio.
Perché con la funzione ( DateAdd(DateInterval.Day, -10, DataOggi) ottengo proprio questo.

Però : 
E qui sorge il problema , Se io nella text ( Txt_Data ) cambio la data riportata prima con un altra data , come ad esempio :
( 11/02/2023 ) che corrisponderebbe al mese di Febbraio 
Il Programma si ferma e mi invia questo tipo di Errore come questo :

Ora vorrei sapere il Perché !
E come io possa farlo funzionare nel verso giusto tutto qui .
Grazie sin da ora per tutto l'aiuto che vorrete darmi in merito 
Saluti da Maurizio.

10 Risposte

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Nel messaggio d'errore c'è scritto che tenti di usare una stringa del tipo

    “11/02/202311/01/2023”

    Quando modifichi la data nel textbox sei sicuro che hai cancellato la precedente data?

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Ciao Oregon 
    Ascolta ho provato a Fare Come mi hai suggerito tu 
    Ma la Cosa Continua a non funzione
    Pertanto ho pensato di Postarti il File Completo
    Se vuoi darci un occhiata , lo puoi scaricare tranquillamente da questo link :

    https://app.box.com/s/z041fp4iraffx06e25uxrtalqqc6slh5

    Ciao e Buona Serata da Maurizio

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Ma che dovrebbe succedere? Io cambio data e non succede proprio nulla.

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Ciao Oregon He….!
    Sta proprio in questo la mia domanda e Desiderio
    In quanto io vorrei che :

    1) Avvio il form 

    2) Come vedi tutti dati inseriti da codice si riversano nelle varie Label , e fin qui tutto ok

    3) Quello che non riesco ad ottenere da qui in avanti e questo : 
    Se Noti Nella text viene riportata la data odierna 
    mentre nella Label (LBL_VarData) viene riportata la data del l'inizio del mese 
    Come da esempio avevo scritto che se io ho nella text la data ( 12/01/2023 )
    Nella label ( VarData ) : Viene Riportata la Data Dell'inizio Del mese che e scritta in questo modo ( 01/01/2023 ) e fin qui tutto ok !
    Il problema però sorge quando da questo momento in avanti , se io volessi cambiare data nella Text e volessi scrivere ( 12/02/2023
    Nella Label ( VarData ) verrebbe scritta da qui in avanti la data riportata nella (Text) e non 
    ( 01/02/2023 ) come da inizio mese !
    Tutto qui…!
    Il resto delle Celle che dovrebbero comporre il Calendario 
    E chiaro che senza questa tipo di funzione , io non posso andare avanti 
    Mentre sia con il VB6 che con un form del VBA di excel ; Non dico che sia stato un gioco da ragazzi.
    Ma tutto cio lo risolto egregiamente ed è funzionante ancora oggi
    meno che con il VS 2022 tutto qui .
    Ciao e Buona Giornata 

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Guarda che non funziona neanche all'avvio del programma perché tu calcoli l'inizio mese togliendo 10 giorni da oggi ed evidentemente non può funzionare. E questo vale sia per il VB6 che per il VBA, non c'entra nulla VB.NET … è proprio sbagliato il modo di impostare gli eventi e il codice.

    Devi creare una Sub che aggiorni la Label a partire dal contenuto della Textbox e poi richiami la Sub nella

    Form_Load

    e nella

    Txt_Data_TextChanged

    Attualmente esegui nel codice nella

    LbL_VarData_Click

    che non serve

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Ciao Oregon - Scusami Per L'attesa ma tra il mio lavoro e Questo VS in tutte le sue Parti Ho trovato molto difficile riuscire a mettere tutti i Pezzi al proprio posto.Detto questo: Ora penso Di Essere riuscito a fare quasi tutto; Tranne che dove ti ho Evidenziato nella mia Routine.

    Che e questa :

    Public Class Form1

        Dim YrNum As Long, MonthNum As Long, DayNum As Long, MonthDays As Integer, StartNum As Integer

        Dim StartDate As Date, SelectedDate As Date, ButtonNum As Integer, CurMonth As Boolean

        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

            MonthNum += 1

            If MonthNum = 13 Then

                YrNum = YrNum + 1

                MonthNum = 1

            End If

            StartDate = 1 & "/" & MonthNum & "/" & YrNum

            UpDateDisplay()

        End Sub

        Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

            StartDate = StartDate.AddYears(1)

            YrNum = StartDate.Year

            UpDateDisplay()

        End Sub

        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

            StartDate = StartDate.AddYears(-1)

            YrNum = StartDate.Year

            UpDateDisplay()

        End Sub

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            Me.Txt_Data.Text = ""

            Me.LbL_VarData.Text = ""

            YrNum = Now.Year

            DayNum = Now.Day

            MonthNum = Now.Month - 1 ' meno 1 perché verrà incrementato da ButtMESEpiu_Click

            StartDate = Today

            Me.Txt_Data.Text = "Oggi " & StartDate

            Me.Lbl_AnnoEstratto.Text = Format(StartDate, "yyyy")

            Me.Lbl_NumMeseEstratto.Text = Format(StartDate, "MF")

            Me.Lbl_Mese.Text = ToUppercaseFirstLetter(Format(StartDate, "MMMM"))

            Me.Button2_Click(Button2, New EventArgs)

        End Sub

        Private Sub Cella_Click(sender As Object, e As EventArgs)

            sender.ForeColor = Color.Red

            SelectedDate = sender.Text & "/" & MonthNum & "/" & YrNum

            SwitchBack()

            ButtonNum = sender.tag

        End Sub

        Public Function ToUppercaseFirstLetter(ByVal Text As String) As String

            If Text = "" Then Return Text

            Dim array() As Char = Text.ToCharArray

            array(0) = Char.ToUpper(array(0))

            Return array

        End Function

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

            MonthNum -= 1

            If MonthNum = 0 Then

                YrNum = YrNum - 1

                MonthNum = 12

            End If

            StartDate = 1 & "/" & MonthNum & "/" & YrNum

            UpDateDisplay()

        End Sub

        Sub UpDateDisplay()

            StartNum = DateAndTime.Weekday(StartDate, FirstDayOfWeek.Monday) - 1 ' Domenica = 6, Lunedi = 0

            MonthDays = DateTime.DaysInMonth(YrNum, MonthNum)

            If DateTime.DaysInMonth(YrNum, 2) = 29 Then Me.Txt_AnnoBisestile.Text = "Bisestile" Else Me.Txt_AnnoBisestile.Text = ""

            Dim X As Integer

            If MonthNum = Now.Month And YrNum = Now.Year Then

                CurMonth = True

            Else

                CurMonth = False

            End If

            Me.Lbl_Mese.Text = ToUppercaseFirstLetter(Format(StartDate, "MMMM"))

            For X = 0 To StartNum + MonthDays - 1

                me.Cella1.Text = X - MonthDays + 1

            Next X

            Me.LbL_VarData.Text = StartDate

        End Sub

        Sub SwitchBack()

            'Cella(ButtonNum).ForeColor = Color.DarkBlue ' ripristino colore

            Me.Lbl_Mese.Text = SelectedDate.ToLongDateString

            Me.Txt_AnnoBisestile.Text = "Tot Giorni = " & SelectedDate.DayOfYear.ToString

            Me.LbL_VarData.Text = SelectedDate.DayOfWeek.ToString

        End Sub

    End Class

    Quello che ti ho evidenziato ed e quello per qui Desidererei una Mano 
    E quello che io Sto Tentando di Voler mettere Nella ( Cella1 ) il numero Corrispondente Del mese precedente che so per certo che è il ( 26 ) che era di Lunedi
    Cosi facendo posso poi proseguire più facilmente per raggiunge la Domenica (1) che corrisponde poi All'inizio di questo mese 2023.

    In più Sempre che io non ti stia chiedendo troppo : Saresti anche cosi gentile da spiegarmi nella Realta come io possa anche solo per un numero 

    Poi io chiaramente lo indirizzo poi per tutti gli altri 
    Come Nascondere i Numeri che in questo momento non Servono; In quanto non fanno parte per il Calcolo Di Questo Mese
    Io lo imparato a fare su Excel e sul VB6 
    Ma non ci Riesco con il VS
    Grazie
    Saluti sinceri da Maurizio

    E Questo e Quanto
    Sia In VBA che con il VS 2022

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Maurizio…

    - dopo un bel po' di tempo rispondi cambiando completamente argomento e domanda (e come sai questo non si fa in una discussione in un forum)

    - è sempre difficilissimo seguire quello che scrivi, non ne capisco il senso in italiano mi dispiace

    E poi se dici

    Io lo imparato a fare su Excel e sul VB6 
    Ma non ci Riesco con il VS

    fammi vedere come faresti in VB6 perchè ti mostro che non è affatto tanto diverso con VBNET (VS non è un linguaggio). 

    Ma fallo presto, prima che puoi perché se rispondi tra giorni io non ricordo di cosa si parlava e tutti diventa più difficile. 

    P.S. fra l'altro, qui

    http://m.pierotofy.it/p/forum/16/1068276-come_risolvere_il_problema_del_me_ho_form_che_sia_per_dare_il_via_libera_al_mio_calendario_ad_oggetti_p1/

    in cui avevi scritto per lo stesso codice, ti avevano dato una soluzione completa che potevi studiare!

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Ciao Oregon non ti incavolare sempre per un non nulla.

    1) io posso capire che non si chiede ad altri le stesse informazioni che ho rivolto a te 

    Sempre che non siano state richieste a te in un secondo momento.

    In più io ti avevo scritto che di questo programma vs 2022 per me è completamente nuovo pertanto non né capisco nulla del suo funzionamento e del suo gestore le cose , anche le più banali , in quanto e completamente diverso dal semplice Vba e il vb6.

    E le mie immagini lo testimoniano!

    2) io posso comprende che tutti voi date gli aiuti a gratis e nel modo che lo ritenete più opportuno .

    Però quando sin dall'inizio ti chiedo di aiutarmi in quanto per me questo programma mi è difficile da capire, ma è pur sempre vero che da qualche parte bisognerà sempre poté incominciare.

     E tu mi scrivi solo questo Cito  :

    Devi creare una Sub che aggiorni la Label a partire dal contenuto della Textbox e poi richiami la Sub nella

    Form_Load

    e nella

    Txt_Data_TextChanged

    Attualmente esegui nel codice nella

    LbL_VarData_Click

    che non serve

    Allora Io mi domando : Ma arrivati a questo punto : Se per te questo e una forma di aiuto !

    Io ho fortemente dei dubbi che tu lo voglia fare

    Almeno nei miei confronti.

    Io reputo un Aiuto quando tu mettendoti nei miei panni: Mi avessi potuto far vedere nel concreto nel suo insieme ho nel parziale una sorta di concretezza scritta.

    Senza lasciare ad un po ero ignorante in materia come me.

    Tutto il resto dell'onere di capire e di risolvere il tutto.

    Come poi in parte grazie all'aiuto di sltri ho poi fatto.

    Tutto qui.

    Comunque non importa

    Va bene cosi 

    Di tutto ciò ne posso anche fare a meno .

    Sinceri saluti e buona Serata da Maurizio

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Io non mi incavolo e mai per un nonnulla.

    Allora … io ti ho dato un aiuto sulla prima domanda e sull'errore che avevi evidenziato. 

    Dopo giorni hai cambiato domanda senza neanche dire come era finita la questione e ora ci torni su lamentandoti di non aver ricevuto la pappa pronta.

    Concretezza per te è scrivere il codice al posto tuo, cosa impossibile e che non farei comunque perchè non ritengo sia un aiuto utile.

    Pappa pronta che hai fra l'altro ricevuto su un altro sito.

    Neanche quando ti ho proposto di farmi vedere il codice vb6 con cui avresti risolto lo hai fatto…

    Facciamo così, io mi fermo qui questa volta. Attendi altre risposte da altri utenti.

  • Re: Come Ottenere la Data di inizio del mese nella Label

    Ciao Oregon Scusami se ti scrivo solo ora per rispondere alle tue affermazioni fatte nel post precedente ; Ma non riuscivo più a trovare il mio file Del Calendario Scritto con il VB6
    E visto che io mi ritengo una persona seria, malgrado i miei mille difetti 
    Ti porgo il mio Calendario scritto con il VB6 !

    Lo puoi scaricare da questo link : 
    https://app.box.com/s/krusng0lkifekpwst5xrgv36dedkl6so

    Detto questo : So che a volte e difficile capire il mio modo di scrivere

    Però vedi neppure (Di Pietro ) pur essendo un magistrato ; Pertanto Pluri Laureato 
    Se lo senti parlare alla fine del discorso ; Ti cadono le braccia.
    Figuriamoci io che da sempre sono abituato a parlare tutti i giorno con molte persone
    Come posso esprimere dei concetti che solo voi Programmatori riuscite ad esprimere.
    Vedi Oregon : Tu hai studiato per diventare programmatore
    Io sono nato Autodidatta
    Pertanto se parlo di queste cose con una persona che è vicina a me!
    Riesco a farmi capire tra gesti e parole 
    in caso contrario, mi rimane sempre difficile spiegare quello che all'apparenza non conosco ; Tutto qui .

    Però mi diletto a programmare ogni sorta di pensiero personale; Sin dagli anni Ottanta
    Quando si usava ancora il Comodors Big 20 - ho lo Spectrum ZX 2 
    Pertanto ho incominciato a studiare sui libri dal (DOS - GWBasic) - Con le prime uscite dei primi sistemi operativi anche con il (C) con le api di Windows
    Per poi approdare al (Basic - Visual Basic 6.0 - e solo negli anni 2000 sono approdato al VBA
    E attualmente sono Approdato al Visual Studio 2022 - semplicemente per il fatto che ho comperato sia il pc Desktop che il pc LapTop  con sistemi operativi a 64 Bit
    Ho dovuto abbandonare il mio vecchio VB6.0 che funziona solo a 32 Bit.
    Tutto qui 
    Pertanto oggi come oggi devo rifare tutto da capo 
    Però torno a ripetere : Non è che sia a digiuno di tutto 
    E solo che trovo difficile entrare nell'ottica di questo modo di interagire con il VS 2022
    Lo trovo molto complicato anche per fare le semplici cose
    Figuriamoci poi quando dovessi mettermi li e fare delle cose inserendo le Api di Windows
    Che grazie a quelle ero riuscito a creare dei Form Circolari che per me andavano benissimo Per Ricreare dei Orologi Analogici per il desktop.
    un po come si vedeva sotto forma di Gadget nel sistema Operativo Windows 7/8
    Ma questa e tutta un altra storia.
    Ciao e Alla Prossima.
    Divertiti con il mio Calendario - All'epoca ci avevo messo l'anima per crearlo in questo modo .
    Ciao 

Devi accedere o registrarti per scrivere nel forum
10 risposte