Προς το περιεχόμενο

Προβλημα με βαση Msaccess και αναζητηση ελληνικων


Torture

Προτεινόμενες αναρτήσεις

Δημοσ.

Τις τελευταιες μερες δουλευοντας πανω σε μια εφαρμογη java διαπιστωσα πως ενω κανω ενα Query στην βαση μου που περιεχει ελληνικους χαρακτηρες , το query μου επιστρεφει μη σωστα αποτελεσματα.

 

π.χ . μεσα στην βαση υπαρχουν οι λεξεις έδρα , εξέδρα , ενέδρα , εδρα.

 

Αν εγω ζητησω μεσω ενος query να μου εμφανιστουν ολες οι λεξεις με εδρα ( %εδρα%)

τοτε επιστρεφονται μονο η λεξη εδρα που δεν ειναι τονισμενη στα α.Αν αλλαξω το ερωτημα σε (%'εδρα%) τοτε εμφανιζονται οι λεξεις έδρα , εξέδρα , ενέδρα .

 

Με λιγα λογια υπαρχει προβλημα με τους τονους.Μηπως υπαρχει τροπος να το ξεπερασω?Ετσι ωστε ειτε θετω ερωτημα ( %εδρα%) ειτε (%'εδρα%) ειτε (%'ΕΔΡΑ%) να περνω ολα τα αποτελεσματα των λεξεων που εχουν μεσα τους την λεξη εδρα.

 

Η βαση μου ειναι σε Msaccess 2007 και η εφαρμογη ειναι σε JSP

Δημοσ.

Το θέμα σου δεν εχει σχέση με το τι τεχνολογίες χρησιμοποιείς (δηλ. 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

Δημοσ.

να χρησιμοποιήσεις αυτον τον κωδικα, οπως ειναι, δεν θα κάνει τιποτα. ειναι γραμμενο για άλλη χρηση.

αλλα μπορει να σε βοηθήσει να ξεκινησεις το δικό σου.

 

 

αυτο ειναι πιο κοντα σε αυτο που πρέπει να κάνεις

http://www.dotnetzone.gr/cs/forums/permalink/6224/6231/ShowThread.aspx#6231

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...