Formato

Raccoglitore di domande e risposte relative a ScriptCase, il generatore di codice php per lo sviluppo rapido di applicazioni.
Regole del forum
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
Rispondi
mhanu70
Messaggi: 178
Iscritto il: 18 nov 2015, 16:55

Formato

Messaggio da mhanu70 » 17 apr 2016, 10:41

Salve.
Ho un campo in una form nel quale gli faccio calcolare un valore numerico da altri 2 field. Il risultato spesso ha diversi decimali. A me interessa che ne vengano visualizzati solo 2 (es: 28.56).All'inizio tutto ok ma se clicco più volte su aggiorna ovviamente lui mi fa ogni volta il calcolo (onvalidate) e siccome il risultato è composto da molti decimali, quando cerco di salvare mi dice:

field: dimensione non valida
field:(Calcolato): Dati non validi

il campo nel db è un float(4,2) . Ora, se cerco di scrivere tramite un client mysql nel db il numero anche con molti decimali (es: 28.5698987) lui me lo accetta e ovviamente me lo tronca a 28.56, ma mi va bene, quindi non credo sia un problema di db.
Cosa può essere?

mhanu70
Messaggi: 178
Iscritto il: 18 nov 2015, 16:55

Re: Formato

Messaggio da mhanu70 » 17 apr 2016, 10:48

OK. ho messo il field su Decimale (prima era su numero) e gli ho detto di usare il punto come separatore (nelle proprietà del campo).
A video nel form mi mette il punto ma il calcolo ha come risultato un numero con separatore con virgola perchè viene eseguito nell'evento onload.
c'è modo di dirgli che deve usare il punto come separatore? perchè mysql non accetta decimali con la virgola, solo con il punto

rino
Messaggi: 660
Iscritto il: 18 giu 2015, 15:42
Località: Pinerolo
Contatta:

Re: Formato

Messaggio da rino » 17 apr 2016, 15:10

nelle impostazioni del campo trovi la scelta se usare le impostazioni regionali o meno, prova a dire di non usare le impostazioni regionali.
altra via è nei parametri di default dell'app e del progetto
altra via è nel database .
altra via è riformattare il campo prima di aggiornare il db
non hai che l imbarazzo della scelta , ovviamente ogni scela ha pregi e difetti.
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase

mhanu70
Messaggi: 178
Iscritto il: 18 nov 2015, 16:55

Re: Formato

Messaggio da mhanu70 » 17 apr 2016, 15:58

ciao. ti riepilogo:
opzione 1: "nelle impostazioni del campo trovi la scelta se usare le impostazioni regionali o meno, prova a dire di non usare le impostazioni regionali"
risposta: cambiato con il punto ma quello che cambia è solo la visualizzazione nella form (cioè vedo il punto anzichè la virgola) ma quando clicco aggiorna mi da l'errore sql perchè cerca comunque di scriverlo con la virgola e a mysql non sta bene.

opzione 2: "altra via è nei parametri di default dell'app e del progetto"
risposta: giuro che non riesco a trovare questa opzione :cry:

opzione 3: "altra via è riformattare il campo prima di aggiornare il db "
risposta: non ho idea di come si faccia :shock: (qualche macro forse?)

opzione 4: "altra via è nel database "
risposta: che io sappia mysql non accetta decimali con la virgola ma solo col punto


Grazie

mhanu70
Messaggi: 178
Iscritto il: 18 nov 2015, 16:55

Re: Formato

Messaggio da mhanu70 » 17 apr 2016, 17:23

ho modificato anche le impostazioni in versioni locali --> impostazioni internazionali e messo il punto,

ma la macro continua a calcolare mettendo nel risultato la virgola , lo vedo nell'errore sql che viene fuori.

rino
Messaggi: 660
Iscritto il: 18 giu 2015, 15:42
Località: Pinerolo
Contatta:

Re: Formato

Messaggio da rino » 17 apr 2016, 23:42

se ho cpaito bene ti serve solo in una psecifica operazione e in caso di riciclo.
risolvila via php usando la funzione round() di php in questo modo forzi tu il numeor di decimali e esegui un arrotondamento.

$ris=round((x*y/100)+23,2); // esempio round con operazione matematica incorporata

round($numero,$decimali)

esistono anche altri modi compresi settaggi a livello php , ma sarebbe come cercarsi rogne se non si sa come agire.
la round è elegante e facile da manuntenere anche perchè il valore dei decimali lo puoi rendere dinamico per esempio intercettandolo da campo del db.
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase

mhanu70
Messaggi: 178
Iscritto il: 18 nov 2015, 16:55

Re: Formato

Messaggio da mhanu70 » 19 apr 2016, 12:52

ho risolto rimettendo il formato del campo come numero (non decimale) e il campo mysql come float(20,2)
in questo modo anche se l'operazione mi da tipo 25,56998999899
sto dentro le 20 cifre max del campo e mysql stesso mi salva solo 25.57, che poi è quello che volevo ottenere.

rino
Messaggi: 660
Iscritto il: 18 giu 2015, 15:42
Località: Pinerolo
Contatta:

Re: Formato

Messaggio da rino » 19 apr 2016, 19:08

mhanu70 ha scritto:ho risolto rimettendo il formato del campo come numero (non decimale) e il campo mysql come float(20,2)
in questo modo anche se l'operazione mi da tipo 25,56998999899
sto dentro le 20 cifre max del campo e mysql stesso mi salva solo 25.57, che poi è quello che volevo ottenere.
non è il modo corretto, il risultato è casuale inoltre se usi decimali dovresti mettere decimal in mysql l uso del float ha diverse contro indicazioni nei calcoli ordinari se poi vuoi usare dele query allor ai problemi per interpretare il lfoat potrebbero essere enormi , tieni conto che in caso di munmeir grandi o piccoli passa alla notazione esponenziale obbligandoti ad usare le funzioni per inteprerare il numero in modo decimale corretto.

ci sono diversi tipi di campi in mysql e oracle che nonostante esistano è meglio non usare salvo specifiche esigenze
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti