Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    Aiuto per le date

    Ciao a tutti...
    sono un neo utilizzatore di visual basic
    e ho riscontrato una piccola difficoltà...
    sto realizzando un programmino che, dopo che io ho inserito, la data odierna e quella di nascita, dovrebbe dirmi il segno zodiacale.. e quanti anni ( e giorni) ha l'utente ... :master:
    premetto che le date di nascita degli utenti ho predisposto di inserirle in un vettore, di modo che fino a quando nn kiudo il programma rimangono in memoria...
    ora il problema vero e proprio è quello dei segni zodiacali... e quello degli anni... non so proprio come fare.. so che dovrebbe esserci una funzione tipo dateAdd... ma sono ancora un neonato... dunque avrei bisogno di aiuto.
    grazie a tutti

    ps contattatemi pure su msn messnger:
    best_370@hotmail.com
    ---------------------------
    visitate il mio sito

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Di quale versione di Visual Basic stiamo parlando?
    Comunicamela così correggo il titolo.

    Ripassa il Regolamento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Prova questo codice:

    codice:
    Public Sub DifferenzaDate(DI As Date, DF As Date)
    
    Dim ggDI As Integer
    Dim mmDI As Integer
    Dim aaDI As Integer
    
    Dim ggDF As Integer
    Dim mmDF As Integer
    Dim aaDF As Integer
    
    Dim gg As Integer
    Dim mm As Integer
    Dim aa As Integer
    
    Dim mmAntDF As Integer
    
    Dim ggMM(11) As Integer
    
        ggMM(0) = 31
        ggMM(1) = 28
        ggMM(2) = 31
        ggMM(3) = 30
        ggMM(4) = 31
        ggMM(5) = 30
        ggMM(6) = 31
        ggMM(7) = 31
        ggMM(8) = 30
        ggMM(9) = 31
        ggMM(10) = 30
        ggMM(11) = 31
    
        aaDI = Year(DI)
        mmDI = Month(DI)
        ggDI = Day(DI)
    
        aaDF = Year(DF)
        mmDF = Month(DF)
        ggDF = Day(DF)
    
        aa = aaDF - aaDI
        mm = mmDF - mmDI
        gg = ggDF - ggDI
    
        If mm < 0 Then
            mm = 12 + mm
            aa = aa - 1
        End If
    
        If gg < 0 Then
            mmAntDF = mmDF - 1
            If mmAntDF = 0 Then
                mmAntDF = 12
            End If
            gg = ggMM(mmAntDF - 1) - ggDI + ggDF
            If mm > 0 Then
                mm = mm - 1
            Else
                aa = aa - 1
                mm = 11
            End If
        End If
    
        GGMMAA(0) = gg
        GGMMAA(1) = mm
        GGMMAA(2) = aa
    
    End Sub

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    in vb6 c'era datediff non potrebbe andare bene ????

  5. #5

    allora...

    la versione che ho io di visual basic è la 6 (in inglese se può interessare )
    cmq
    io inizialmente, dall'alto della mia ignoranza ho provato a fare una cosa del tipo:
    codice:
    Dim prova As Date   'general
    Dim ciccio As Date
    
    Private Sub cmd_clik_Click()   'al click di command 2
    Dim diff As Date
    prova = InputBox("inserisci la data odierna!")
    txt_Giorni = prova - ciccio
    End Sub
    
    Private Sub Command1_Click()  'al click di command1
    
    ciccio = InputBox("inserisci la tua data di nascita")
    txt_k = ciccio
    End Sub
    'in txt_k ci va a finire la data di nascita
    ' in txt_Giorni ci vanno a finire i giorni che intercorrono tra la data di nascita e quella odierna
    e come risultato, ottenevo i giorni...
    ora: io Datediff non lo so usare... ho scaricato un esempio dal sito html ma sinceramente ci ho capito poco...
    codice:
    Private Sub Command1_Click()
        On Error GoTo GestoreErrori:
        Label3.Caption = "Differenza: " & DateDiff("d ", Text1.Text, Text2.Text) & " giorni"
        Exit Sub
    GestoreErrori:
        MsgBox "Si è verificato un errore; controllare il formato delle date digitate e riprovare.", vbExclamation, Me.Caption
        Text1.SetFocus
    End Sub
    La D, per esempio, cosa significa?
    on error goTo, serve per?
    scusate la mia ignoranza, xò vorrei imparare le cose che non so!
    Grazie!!

    ps contattatemi pure su msn messnger:
    best_370@hotmail.com
    ---------------------------
    visitate il mio sito

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    io sono riuscito a realizzare questa routine... a prima vista sembra funzionare... testala un po'

    codice:
    Dim Anni As Integer
    Dim Giorni As Integer
    Dim DataIniziale As Date
    Dim DataFinale As Date
    Dim DataTemp As Date
    
    DataIniziale = "01/01/1940"
    DataFinale = Date  ' calcola l'età ad oggi
    
    DataTemp = DataIniziale
    Anni = Year(DataFinale) - Year(DataIniziale)
    Mesi = Month(DataFinale) - Month(DataIniziale)
    If Mesi < 0 Then
        Anni = Anni - 1
        Mesi = 12 + Mesi
    End If
    
    DataTemp = DateAdd("m", Mesi, DataIniziale)
    DataTemp = DateAdd("yyyy", DateDiff("yyyy", DataIniziale, DataFinale), DataIniziale)
    Giorni = DateDiff("d", Day(DataTemp) & "/" & Month(DataFinale) & "/" & Year(DataFinale), DataFinale)
    If Giorni < 0 Then
        Giorni = DateDiff("y", DataFinale, DateAdd("m", 1, DataFinale)) + Giorni
        Mesi = Mesi - 1
        If Mesi < 0 Then
            Anni = Anni - 1
            Mesi = 12 + Mesi
        End If
    End If
    
    MsgBox "Hai " & Anni & " Anni, " & Mesi & " Mesi e " & Giorni & " Giorni"
    Boolean

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    La D, per esempio, cosa significa?
    se ricordo bene calcola la differenza in giorni da una data e l'altra .

    on error goTo, serve per?

    on error goto serve in caso di errore di redirezionare il flusso di codice ad un gestore di errori ( in vb6 etichette ),in questo caso GestoreErrori:.

  8. #8

    For Boolean

    Ti ringrazio tanto, adesso sperimento il codice che mi hai fornito... cmq a prima vista mi sembra perfetto!!!
    cmq vorrei chiederti ancora una cosa... se nn è troppo disturbo.
    io nel frattempo ho provato a sperimentare, trovando una piccola soluzione.. che comunque nn so se è proprio giusta. (ho provato ad applicare alcune regole di matematica finanziaria, anche se così facendo non tengo conto degli anni bisestili in maniera corretta.)
    potresti dargli un'occhiata e dirmi cosa ne pensi?
    Accetto critiche di buon grado , penso che sl così posso imparare bene!
    ti ringrazio tanto. ti passo qui sotto il codice.
    codice:
     
    Dim nasc As Date
    Dim today As Date
    Dim eta As Date
    Dim nomisegni(1 To 12) As String
    Dim segni(1 To 12) As Date
    Dim i As Integer
    
    
    Private Sub cmd_eta_Click()
    Dim temp1, temp2 As Double
    Dim prova As Integer
    
        txt_anni.Text = DateDiff("yyyy", nasc, today)
        txt_mesi.Text = DateDiff("m", nasc, today) - (txt_anni * 12)
        txt_giorni.Text = DateDiff("d", nasc, today) / 365
        temp1 = (txt_giorni - txt_anni) * 12
        temp2 = (temp1 - txt_mesi) * 365 / 12
        prova = Int(temp2)
        txt_giorni.Text = prova
        cmd_eta.Enabled = False
        cmd_today.Enabled = False
    
    End Sub
    
    Private Sub cmd_inserisci_Click()
        nasc = InputBox("inserisci la tua data di nascita")
        txt_nasc.Text = nasc
        cmd_today.Enabled = True
        cmd_zody.Enabled = True
    End Sub
    
    Private Sub cmd_today_Click()
        today = Format(Now, "dd/mm/yyyy")
        txt_today.Text = today
        cmd_eta.Enabled = True
    End Sub
    
    Private Sub cmd_zody_Click()
    Dim j As Integer
    
        For j = 1 To 12
            If (nasc >= segni(j)) & (nasc <= segni(j + 1)) Then
                txt_zody.Text = nomisegni(j)
            End If
        Next j
    End Sub
    
    Private Sub form_load()
       nomisegni(1) = "Ariete"  'quest'ultimo pezzo serve per poi trovare
       nomisegni(2) = "Toro"    'il segno zodiacale dell'utente, sapendo
       nomisegni(3) = "Gemelli" 'la data di nascita... sl che non riesco
       nomisegni(4) = "Cancro"  'bene a fare i confronti tra date xkè 
       nomisegni(5) = "Leone"   'in quella di nascita ho gli anni, nelle altre no.
       nomisegni(6) = "Vergine"
       nomisegni(7) = "Bilancia"
       nomisegni(8) = "Scorpione"
       nomisegni(9) = "Saggitario"
       nomisegni(10) = "Capricorno"
       nomisegni(11) = "Acquario"
       nomisegni(12) = "Pesci"
          
       segni(1) = 21 / 3
       segni(2) = 21 / 4
       segni(3) = 21 / 5
       segni(4) = 22 / 6
       segni(5) = 23 / 7
       segni(6) = 24 / 8
       segni(7) = 23 / 9
       segni(8) = 23 / 10
       segni(9) = 23 / 11
       segni(10) = 22 / 12
       segni(11) = 21 / 1
       segni(12) = 20 / 2
    End Sub
    Cosa ne pensi?
    Devo trovare una maniera per ricavare il segno zodiacale, avevo pensato a una cosa del tipo
    codice:
    For j = 1 To 12
            If (nasc >= segni(j)) & (nasc <= segni(j + 1)) Then
                txt_zody.Text = nomisegni(j)
            End If
        Next j
    SOLTANTO che non funziona, credo perchè in Nasc ho una data del tipo 13/4/88
    in segni(j) ho una data del tipo 23/11
    dunque nn riesce a fare il confronto .. c'è mica qualche modo, per riuscire a farlo? un modo per dire, controlla se i mesi e i giorni che ci sono in una variabile sono compresi in questo intervallo?
    Grazie

    ps contattatemi pure su msn messnger:
    best_370@hotmail.com
    ---------------------------
    visitate il mio sito

  9. #9
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    per trovare il segno prova ad usare questa Function:

    codice:
    Function SegnoZodiacale(DataNascita As Date) As String
        
        Dim NomiSegni(11)
        Dim Segni(11)
        
        NomiSegni(0) = "Acquario"
        NomiSegni(1) = "Pesci"
        NomiSegni(2) = "Ariete"
        NomiSegni(3) = "Toro"
        NomiSegni(4) = "Gemelli"
        NomiSegni(5) = "Cancro"
        NomiSegni(6) = "Leone"
        NomiSegni(7) = "Vergine"
        NomiSegni(8) = "Bilancia"
        NomiSegni(9) = "Scorpione"
        NomiSegni(10) = "Saggitario"
        NomiSegni(11) = "Capricorno"
        
        Segni(0) = "21/1"
        Segni(1) = "20/2"
        Segni(2) = "21/3"
        Segni(3) = "21/4"
        Segni(4) = "21/5"
        Segni(5) = "22/6"
        Segni(6) = "23/7"
        Segni(7) = "24/8"
        Segni(8) = "23/9"
        Segni(9) = "23/10"
        Segni(10) = "23/11"
        Segni(11) = "22/12"
    
        For K = 0 To 11
            If K < 11 Then
                DataRif1 = Segni(K) & "/" & Year(DataNascita)
                DataRif2 = Segni(K + 1) & "/" & Year(DataNascita)
                If CDate(DataNascita) >= CDate(DataRif1) And _
                   CDate(DataNascita) < CDate(DataRif2) Then
                        SegnoZodiacale = NomiSegni(K)
                        Exit For
                End If
            Else
                SegnoZodiacale = NomiSegni(K)
                Exit For
            End If
        Next K
    
    End Function
    la puoi usare così:

    codice:
    txt_zody.Text = SegnoZodiacale(DataNascita)
    dove la variabile DataNascita, ovviamente, contiene la data di cui ti interessa sapere il segno corrispondente.

    Boolean

  10. #10

    grassie

    grazie, adesso provo vedere il codice che mi hai passato...
    ho un little domanda...
    ma il codice che mi hai passato, potrei usarlo direttamente quando l'utente fa clic sul bottone, senza duque creare la function?
    io di funzioni ne so qualcosina xkè le ho viste studiando (a scuola... dunque puoi ben capire come) Turbo C.
    Qui funziona nello stesso modo, dunque mi basta fare copia incolla del tuo codice, o devo prima creare qualche bottone dove poi inserire il codice che mi hai dato?
    ......
    adesso che ci penso... :master:
    codice:
    Function SegnoZodiacale(DataNascita As Date) As String
    DataNascita, è la stessa variabile del codice che mi hai fatto vedere prima? xkè io, modificandolo leggermente, ho cambiato il nome della variabile, dunque se nn erro dovrei usare lo stesso nome che io ho attribuito alla tua variabile DataNascita...
    Grazie, io intanto fo delle prove


    Boolean... certo che 6 molto bravo in visual... potrei disturbarti, chiedendoti di insegnarmi qualchecosina
    grazie

    ps contattatemi pure su msn messnger:
    best_370@hotmail.com
    ---------------------------
    visitate il mio sito

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.