Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: VB6 e dateadd

  1. #1

    VB6 e dateadd

    Intanto i miei saluti a tutti i partecipanti, sono capitato qui inseguendo una discussione su google di 10 anni fa relativa alla funzione dateAdd.
    Ho una perplessita', stavo aggiornando il mio programma che gestisce la lettura dei contatori elettrici in automatico e memorizza i dati in un database.
    Alla fine del mese il primo giorno successivo memorizza i consumi mensili.
    Io volendo richiamare questi consumi in certo periodo ho scritto:

    dim datainiz, datafine, j as date
    datainiz = cdate(text1.text) ' text box
    datafini = cdate(text2.text) ' seconda text box
    se scrivo :
    for j = datainiz to datafine step DateAdd("d",1,j)

    va tutto bene, il mio programma estrae i dati giorno per giorno, pero' se voglio i dati al primo del mese e scrivo:
    text1.text = "01/02 2016" text2.text = " 01/07/2016"

    for j = datainiz to datafine step DateAdd("m",1,j)

    non aumenta di un mese ma al primo giro esce o1/02/2016, poi 03/03/2016, poi 03/04/2016, poi 04/05/2016.
    in pratica aumenta di 31 giorni ogni ciclata si disallinea con la data giusta e non capisco perche', avendo letto ovunque che l'intervallo "m" agisce sui mesi e non sui giorni. Ho anche provato su una form vuota ed effettivamente incrementa il mese.

    ciao a tutti michele

  2. #2
    sei sicuro del formato della data? magari potrebbe semplicemente trattarsi di una inversione giorno/mese (italiano/anglosassone)

  3. #3
    la funzione Cdate la sistema, e poi quando unilizzo dateadd("d",1,
    funziona benissimo.
    E' il mese che mi scompensa

  4. #4
    Quote Originariamente inviata da micheler Visualizza il messaggio
    la funzione Cdate la sistema, e poi quando unilizzo dateadd("d",1,
    funziona benissimo.
    E' il mese che mi scompensa
    non ho capito

  5. #5
    Quote Originariamente inviata da optime Visualizza il messaggio
    non ho capito
    se scrivo text1.text = "01/12/2015" e' una stringa non una data e se la confronto con una data su un DB ricevo un errore.
    se scrivo
    dim mia_data as Date
    mia_data = "01/12/2015"

    e' una data ma molto probabilmente se la confronto con una data di un DB continuo a ricevere errore.

    aiuta la funzione Cdate che normalizza la mia data con quella del DB

    mia_data = Cdate(mia_data) e funziona.
    quindi il formato della data e' a posto.

    SIcuramentre ho incasinato qualcos'altro.
    ciao michele

  6. #6
    forse conviene che ti trovi l'intervallo in giorno con datediff e poi con quello imposti il ciclo

    codice:
    intervallo=DateDiff("d", DataInizio, DataFine)
    For i=1 To intervallo
       miaData=DateAdd("d", i, DataInizio)
    Next

  7. #7
    cosi funziona
    Private Sub Command1_Click()
    Dim data1, data2, j As Date
    data1 = CDate("01/01/2016")
    data2 = CDate("01/12/2016")
    j = data1
    Do While j < data2

    j = DateAdd("m", 1, j)
    Text1.Text = Text1.Text & j & vbCrLf
    Loop

    End Sub

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da micheler Visualizza il messaggio
    cosi funziona
    Ed è così che devi fare ... magari impostando tutte le variabili come date

    Dim data1 As Date, data2 As Date, j As Date

    La DateAdd restituisce una nuova data non un intervallo da usare nella Step
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Infatti l'intervallo era sempre di 31 giorni fisso e immutabile

    Si le variabili le ho impostate : Dim data1, data2, j As Date

    ciao e grazie

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Sbagliato. Come le dichiari tu solo la j è di tipo Date, le prime due sono Variant.

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.