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

Discussione: Somma che non ritorna

  1. #1

    Somma che non ritorna

    Hola a todos.

    Ho uno strano problema con l'inserimento di numeri decimali all'interno di un db mysql.
    Nella tabella il campo in questione è previsto come decimal (10,2)

    Il problema è questo:

    - Si compila un form con vari campi orario dove si inseriscono hh:mm;

    - questi orari vanno sommati tra loro e allora faccio così, sostituendo i due punti con il punto e poi una somma:

    codice:
    strOrarioEntrata_1 = replace(request.form("OrarioEntrata_1"), ":", ".")
    strOrarioUscita_1 = replace(request.form("OrarioUscita_1"), ":", ".")
    
    'ORE STRAORDINARIO
    
    strmnOSG = mn2om(mnOSG)
    
    if Trim(strmnOSG & "[]") = "[]" then
       strmnOSG = "0.00"
    else
       strmnOSG = strmnOSG
    end if
    
    strmnOSG2 = mn2om(mnOSG2)
    
    if Trim(strmnOSG2 & "[]") = "[]" then
       strmnOSG2 = "0.00"
    else
       strmnOSG2 = strmnOSG2
    end if
    
        strTotaleOreStraordinario =  cDbl(strmnOSG) + cDbl(strmnOSG2)
    
    if Trim( strTotaleOreStraordinario & "[]") = "[]" then
        strTotaleOreStraordinario = "0.00"
    else
        strTotaleOreStraordinario =  strTotaleOreStraordinario
    end if
    Il problema che ad esempio il valore che viene dal form come 2.30 nel db si registra come 230, cioè si mangia il punto.

    Che sbaglio?

    Gracias !

  2. #2
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    I valori che prendi dal form, dopo averli reperiti con la request, non li utilizzi mai nel tuo script.

  3. #3
    Originariamente inviato da longline
    I valori che prendi dal form, dopo averli reperiti con la request, non li utilizzi mai nel tuo script.
    codice:
    ' trasformo in minuti
    mnOE1 = om2mn(strOrarioEntrata_1)
    mnOU1 = om2mn(strOrarioUscita_1)

  4. #4
    e dopo la traformazione cosa valgono?

  5. #5
    Originariamente inviato da optime
    e dopo la traformazione cosa valgono?
    Grazie; valgono ad esempio 2.30, cioè numeri separati decimali separati dal punto.
    E' quando faccio la somma che si trasforma in 230.

    Al momento ho risolto così ma non so se è la soluzione ideale e definitiva.

    codice:
    'ORE STRAORDINARIO
    
    strmnOSG = mn2om(mnOSG)
    
    if Trim(strmnOSG & "[]") = "[]" then
       strmnOSG = "0,00"
    else
       strmnOSG = replace(strmnOSG, ".", ",")
    end if
    
    strmnOSG2 = mn2om(mnOSG2)
    
    if Trim(strmnOSG2 & "[]") = "[]" then
       strmnOSG2 = "0,00"
    else
       strmnOSG2 = replace(strmnOSG2, ".", ",")
    end if
    
        strTotaleOreStraordinario =  cDbl(strmnOSG) + cDbl(strmnOSG2)

  6. #6
    ma 2.30 sono "ore"? attento che 2.30 + 2.30 fa 4.60 (numero), non 5 (ore).... usa DateAdd, piuttosto...

  7. #7
    Infatti, hai ragione:

    Straordinario 1 = 2.45
    Straordinario 2 = 1.49

    Totale Ore Straordinario = 3,94 e non Totale Ore Straordinario = 4,34

    DateAdd? E come si utilizza nel mio caso?


  8. #8
    perché? il tuo è un caso speciale? si usa come negli altri casi.

  9. #9
    Ma, lo utilizzo così:

    strTotaleOreStraordinario = DateAdd("n",strmnOSG,strmnOSG2)

    Risultato:

    strmnOSG = 2.45
    strmnOSG2 = 1.49

    Totale Ore Straordinario = 5.54.00

  10. #10
    "n" mi sembra stia per "minuti", mentre tu stai maneggiando "ore"...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.