Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με δεκαδικά

Îåêßíçóå áðü ôï ìÝëïò lexicon. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 20-08-2011, 13:50. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-08-2011, 15:15 66843

    Πρόβλημα με δεκαδικά

    Εχω μια βάση δεδομένων access και ένα πεδίο με τυπο currency

    Ο server που φιλοξενεί τις σελίδες είναι Windows 2003 και έχει τοπικές ρυθμίσεις Ελληνικά

    Εχω μια σελίδα η οποία έχει 2 πεδια text και ενα button το οποίο κάνει πρόσθεση τους αριθμούς στα 2 πεδία και το αποτέλεσμα το εισάγει στην βάση

    Το ΄πρώτο πεδίο το φορτώνει απο την βάση και το δεύτερο το γράφω εγώ

    το πρόβλημα είναι οτι όταν βλέπει κόμμα για δεκαδικό περνάει τον αριθμό για χιλιάδες και βγάζει λάθος άθροισμα

    Αν βάλω τους αριθμούς με τελεία για δεκαδικό κάνει σωστά την πράξη, αλλά αποθηκεύει στην βάση με κόμμα αντι τελεία

    Καμια ιδέα κανείς?

     

  •  19-08-2011, 23:11 66849 σε απάντηση της 66843

    Απ: Πρόβλημα με δεκαδικά

    Το πεδίο που φορτώνεις από τη ΒΔ εμφανίζεται με κόμμα ή τελεία;
    Τάσος Καραγιάννης

    Baby debugging steps...
  •  20-08-2011, 11:33 66855 σε απάντηση της 66849

    Απ: Πρόβλημα με δεκαδικά

    Το πεδίο εμφανίζεται με κόμμα
  •  20-08-2011, 12:00 66856 σε απάντηση της 66855

    Απ: Πρόβλημα με δεκαδικά

    Εφόσον κάνει τις πράξεις σωστά με τελεία και όχι με το κόμμα, άρα οι σελίδες σου (φαντάζομαι asp) δεν τρέχουν με ελληνικό locale. Δοκίμασε στη σελίδα που κάνει τις πράξεις να βάλεις στην αρχή το εξής:

    Dim newLocale = 1253
    	
    SetLocale(newLocale)


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  20-08-2011, 13:50 66857 σε απάντηση της 66843

    Απ: Πρόβλημα με δεκαδικά

    Η ερώτηση είναι ουσιαστικά η ίδια με το "γιατί δεν μου δείχνει ελληνικά" και η απάντηση είναι η ίδια πάντα. Αν το πεδίο είναι αριθμητικό και το χειρίζεσαι ως αριθμό και όχι text, δεν υπάρχει ποτέ πρόβλημα. Άλλο το πως αποθηκεύονται τα δεδομένα και άλλο το πως τα παρουσιάζει η εφαρμογή σου.

     Η βάση δεν "αποθηκεύει με κόμμα/τελεία" σε αριθμητικό πεδίο ποτέ. Ανάλογα με τον τύπο, άλλα bytes χρησιμοποιούνται για την αποθήκευση του ακεραίου και άλλα για την αποθήκευση του δεκαδικού τμήματος. Εσύ δεν το βλέπεις ποτέ αυτό. Τα κόμματα και οι τελείες εμφανίζονται όταν μετατρέπεις εσύ το νούμερο σε κείμενο. Όσες πράξεις γίνονται μεταξύ αριθμών δεν επηρεάζονται από αυτή την μετατροπή (προφανώς).

    Το πρόβλημα δημιουργείται όταν εισάγεις ένα νούμερο σε μορφή κειμένου, είτε από κάποιο text πεδίο είτε από κάποιο textbox. Προφανώς το κείμενο θα πρέπει να μετατραπεί σε αριθμό, χρησιμοποιώντας τα "σωστά" σύμβολα για υποδιαστολή ή χιλιάδες. Τα σύμβολα που χρησιμοποιούνται είναι αυτά που ορίζονται στα regional settings του CLIENT, όχι του server. Το ASP.NET καταλαβαίνει τις γλώσσες που έχουν ρυθμιστεί στον IE και τα regional settings του client και κάνει τις αντίστοιχες μετατροπές.

    Το πρόβλημα προφανώς είναι τί γίνεται όταν ένας χρήστης έχει ελληνικά settings και άλλος αγγλικά. Τα νούμερα θα εμφανίζονται διαφορετικά στον καθένα και ο καθένας θα πρέπει να εισάγει τη σωστή υποδιαστολή. Για να το αντιμετωπίσεις αυτό, θα πρέπει να "καρφώσεις" το Culture της σελίδας σου σε αυτό που θέλεις (ελληνικό ή αγγλικό).

    Τα παραπάνω δεν ισχύουν αν μιλάμε για τις αρχαίες ASP σελίδες οι οποίες πάντα δούλευαν με αγγλικά settings.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems