Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Errore handle in una conversione di data da secondi a giorno,ore,minuti

    Salve,

    devo convertire la differenza di date, calcolata in secondi, in giorni,ore,minuti. Ho fatto questo:

    codice:
    <%
    '**************************************************************
    '******************CALCOLO TEMPO RESIDUO***********************
    '**************************************************************
    
    Dim TempoResiduo
    Dim Scad
    Dim Oggi
    
    Scad = (RsAnnuncio.Fields.Item("scadenza").Value)
    Oggi = Now()
    
    TempoResiduo = DateDiff("s" , Oggi , Scad)
    
    
    '************************FINE CALCOLO**************************
    
    
    
    %>
    <%
    
    '**************************************************************
    '******************FUNZIONE DI CONVERSIONE***********************
    '**************************************************************
    
    Function SplitSec(pNumSec)
      Dim d, h, m, s
      Dim h1, m1
    
      d = int(pNumSec/86400)
      h1 = pNumSec - (d * 86400)
      h = int(h1/3600)
      m1 = h1 - (h * 3600)
      m = int(m1/60)
      s = m1 - (m * 60)
    
      SplitSec = cStr(d) & "," & cStr(h) & "," & cStr(m) & "," & cStr(s)
    End Function
    
    '************************FINE CONVERSIONE**************************
    
    %>
    
    
    <%
    MyTime = split(SplitSec(TempoResiduo),",")
    %>

    Mi restituisce questo errore:

    Oggetto risposta, ASP 0106 (0x80020005)
    È stato individuato un tipo di dati privo di handle.

    Mi da lo stesso errore anche se al posto di TempoResiduo metto un numero qualsiasi.

    Dove ho sbagliato??
    Qualcuno potrebbe darmi qualche suggerimento, please.

    Grazie e Buona giornata a tutti
    BigDaniel

  2. #2
    per prima cosa, se stampi TempoResiduo visualizzi un valore corretto?

    ora guardo il resto (ma in genere per trovare l'errore si cerca di visualizzare tutto passo passo )

    EDIT: prova a stampare a video myTime prima di fare lo split()
    MyTime = SplitSec(TempoResiduo)
    http://igr4mbo.altervista.org (piano piano)

    "Abbiamo costruito un sistema che ci persuade a spendere il denaro che non abbiamo in cose che non necessitiamo per creare impressioni che non dureranno su persone che non ci interessano" cit.

  3. #3
    Grazie per la risposta.

    Si, ho provatio con TempoResiduo e stampa un valore corretto.

    Ho provato a stampare MyTime, come hai detto tu, e lo fa, solo che il risultato è sballato. Dovrebbero essere 25 giorni + ore, minuti e secondi più o meno, solo che me ne da 450 di giorni
    BigDaniel

  4. #4
    Originariamente inviato da bigdaniel
    Grazie per la risposta.

    Si, ho provatio con TempoResiduo e stampa un valore corretto.

    Ho provato a stampare MyTime, come hai detto tu, e lo fa, solo che il risultato è sballato. Dovrebbero essere 25 giorni + ore, minuti e secondi più o meno, solo che me ne da 450 di giorni
    probabilmente la funzione SplitSec() è errata, il che ti comporta un errore di handle mancante con lo split

    EDIT:
    in genere io faccio così

    sec=pnumsec mod 60
    min1=(pnumsec-sec)/60
    min=min1 mod 60
    ora1=(min1-min)/60
    ora=ora1 mod 24
    giorno=(ora1-ora)/24
    http://igr4mbo.altervista.org (piano piano)

    "Abbiamo costruito un sistema che ci persuade a spendere il denaro che non abbiamo in cose che non necessitiamo per creare impressioni che non dureranno su persone che non ci interessano" cit.

  5. #5
    Non ho capito, scusa
    BigDaniel

  6. #6
    devi rivedere la funzione SplitSec() e trovare l'errore
    http://igr4mbo.altervista.org (piano piano)

    "Abbiamo costruito un sistema che ci persuade a spendere il denaro che non abbiamo in cose che non necessitiamo per creare impressioni che non dureranno su persone che non ci interessano" cit.

  7. #7
    Ma la riga dell'errore qual'è?
    xxx

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Cambia il nome alla variabile... per qualche arcana ragione non gli piace MyTime

    Edit: no... come non detto

    Edit2: ho riscritto tutto e l'errore non me lo da piu'
    codice:
    <%
    '**************************************************************
    '******************CALCOLO TEMPO RESIDUO***********************
    '**************************************************************
    
    Dim TempoResiduo
    Dim Scad
    Dim Oggi
    
    ' Scad = (RsAnnuncio.Fields.Item("scadenza").Value)
    
    Scad = DateAdd("D",1,Now())
    Scad = DateAdd("H",2,Scad)
    Scad = DateAdd("N",3,Scad)
    Scad = DateAdd("S",4,Scad)
    
    Oggi = Now()
    
    TempoResiduo = DateDiff("s" , Oggi , Scad)
    
    
    '************************FINE CALCOLO**************************
    
    
    
    %>
    <%
    
    '**************************************************************
    '******************FUNZIONE DI CONVERSIONE***********************
    '**************************************************************
    
    Function SplitSec(pNumSec)
      Dim d, h, m, s
      Dim h1, m1
    
      d = int(pNumSec/86400)
      h1 = pNumSec - (d * 86400)
      h = int(h1/3600)
      m1 = h1 - (h * 3600)
      m = int(m1/60)
      s = m1 - (m * 60)
    
      SplitSec = cStr(d) & "," & cStr(h) & "," & cStr(m) & "," & cStr(s)
    End Function
    
    '************************FINE CONVERSIONE**************************
    
    %>
    
    
    <%
    MyTime = split(SplitSec(TempoResiduo),",")
    %>
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Grazie a tutti per le risposte. Ora funziona regolarmente.

    Solo che adesso mi ritrovo con questo problema e non so proprio da dove cominciare.

    Il risultato che mi dà è, ad esempio, 52,13,23,54 (giorni, ore, minuti, secondi) E fin qui è tutto OK
    Solo che avrei la necessità di formattarlo in questo modo:

    52 giorni, 13 ore, 23 minuti, 15 secondi

    Qualche suggerimento, per favore

    Grazie e buona settimana a tutti
    BigDaniel

  10. #10
    Risolto:

    codice:
     SplitSec = cStr(d) & " Giorni" &"," & cStr(h) & " Ore" & "," & cStr(m) & " Minuti" & "," & cStr(s) & " Secondi"
    BigDaniel

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.