Torture Δημοσ. 18 Οκτωβρίου 2008 Δημοσ. 18 Οκτωβρίου 2008 Τις τελευταιες μερες δουλευοντας πανω σε μια εφαρμογη java διαπιστωσα πως ενω κανω ενα Query στην βαση μου που περιεχει ελληνικους χαρακτηρες , το query μου επιστρεφει μη σωστα αποτελεσματα. π.χ . μεσα στην βαση υπαρχουν οι λεξεις έδρα , εξέδρα , ενέδρα , εδρα. Αν εγω ζητησω μεσω ενος query να μου εμφανιστουν ολες οι λεξεις με εδρα ( %εδρα%) τοτε επιστρεφονται μονο η λεξη εδρα που δεν ειναι τονισμενη στα α.Αν αλλαξω το ερωτημα σε (%'εδρα%) τοτε εμφανιζονται οι λεξεις έδρα , εξέδρα , ενέδρα . Με λιγα λογια υπαρχει προβλημα με τους τονους.Μηπως υπαρχει τροπος να το ξεπερασω?Ετσι ωστε ειτε θετω ερωτημα ( %εδρα%) ειτε (%'εδρα%) ειτε (%'ΕΔΡΑ%) να περνω ολα τα αποτελεσματα των λεξεων που εχουν μεσα τους την λεξη εδρα. Η βαση μου ειναι σε Msaccess 2007 και η εφαρμογη ειναι σε JSP
random Δημοσ. 19 Οκτωβρίου 2008 Δημοσ. 19 Οκτωβρίου 2008 Το θέμα σου δεν εχει σχέση με το τι τεχνολογίες χρησιμοποιείς (δηλ. java, access, jsp). ότι και να χρησιμοποιούσες σε γλώσσα και βάση, το ίδιο πρόβλημα θα είχες. (εκτός, αν η βάση σου είχε μόνο αγγλικα. Με τα ελληνικά, υπάρχει αυτο το θέμα, χρόοοοονια τώρα. ) Τα αποτελέσματα που σου φέρνουν τα query ειναι σωστά. οτι τους δίνεις στο φέρνουν. πχ. το ελληνικό Α μεταφράζεται σε κωδικό ASCII = 193, Ά = 162, α=225, ά=220, οπότε το συγκεκριμένο "γράμμα" για εμάς, για τον χαζό υπολογιστή δεν ειναι ένα γράμμα, αλλα 4 διαφορετικοί χαρακτήρες/κωδικοί. και αν ειναι unicode τα δεδομενα, αλλαζουν οι κωδικοι, αλλα το νόημα ειναι το ίδιο. --------------------------------------------------------------------------------- το θέμα των μικρών/κεφαλαίων ειναι εύκολο: αντι να κανεις SELECT κλπ..κλπ WHERE word LIKE "%εδρα%" κανε SELECT κλπ..κλπ WHERE LCase(word) LIKE LCase("%εδρα%") --------------------------------------------------------------------------------- Το θέμα με τους τόνους ειναι πιό σύνθετο. Αν χρησιμοποιούσες μια πιό "επαγγελματική" database (όπως oracle, ms sql, mysql) αυτες έχουν (oracle) ή πιθανόν έχουν έτοιμες function που κάνουν "accent insensitive" string comparison. Η Access εχει περιορισμένες δυνατότητες, αλλα μπορεις να φτιάξεις εσυ μια function σε VB, να την αποθηκευσεις στα modules του MDB σου, και να κάνει αυτη τη δουλειά. δες μερικές σχετικές συζητήσεις http://www.dotnetzone.gr/cs/forums/thread/6224.aspx http://www.insomnia.gr/forum/showthread.php?t=140524 http://www.freestuff.gr/forums/viewtopic.php?t=15242 http://www.dotnetzone.gr/cs/forums/thread/33879.aspx http://www.freestuff.gr/forums/viewtopic.php?t=18162 http://www.adslgr.com/forum/showthread.php?t=61038
Torture Δημοσ. 19 Οκτωβρίου 2008 Μέλος Δημοσ. 19 Οκτωβρίου 2008 Δεν βρηκα κατι πολυ χρησιμο σε ολα αυτα αν κ καταλαβα πως ειναι γενικο προβλημα . Στο http://www.insomnia.gr/forum/showthread.php?t=140524 υπαρχει ενα κομματι κωδικα μπορω να το χρησιμοποιησω σαν module στη βαση?
random Δημοσ. 19 Οκτωβρίου 2008 Δημοσ. 19 Οκτωβρίου 2008 να χρησιμοποιήσεις αυτον τον κωδικα, οπως ειναι, δεν θα κάνει τιποτα. ειναι γραμμενο για άλλη χρηση. αλλα μπορει να σε βοηθήσει να ξεκινησεις το δικό σου. αυτο ειναι πιο κοντα σε αυτο που πρέπει να κάνεις http://www.dotnetzone.gr/cs/forums/permalink/6224/6231/ShowThread.aspx#6231
Torture Δημοσ. 19 Οκτωβρίου 2008 Μέλος Δημοσ. 19 Οκτωβρίου 2008 Δυστηχως ειμαι ασχετος απο VB οποτε μαλλον δεν θα βγαλω ακρη
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.