Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   ASCII Χαρακτήρες (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5605-ascii-xaraktires.html)

thanosgr 24-07-20 08:32

ASCII Χαρακτήρες
 
Καλημέρα
μπορεί κάποιος να μου δώσει τους ascii χαρακτήρες για τα ελληνικά, θέλω να κάνω αναζήτηση με το event (keydown) σε φόρμα

Ευχαριστώ
Θάνος

vraxnakisg 24-07-20 10:38

Καλημέρα Θάνο,

Υπάρχουν πολλά παραδείγματα στο internet.

Οι παρακάτω τιμές των χαρακτήρων είναι σύμφωνα με το πρότυπο ASCII (American Standard Code for Information Interchange). Αυτό αλλάζει βάση με την κωδικοποίηση και το περιβάλλον εργασίας (πχ UTF-8, ISO……. κλπ).

OI Ελληνικοί χαρακτήρες Ξεκινάνε με το κεφάλαιο Α = 128 (κώδικας ascii) , Β=129……. Και φτάνουν, αυξάνοντας κατά ένα, στο πεζό χαρακτήρα ψ=175 ενώ το πεζό ω=224.

Υπάρχει ακόμα η ομάδα των πεζόν χαρακτήρων με τόνο που είναι: ά=225, έ=226, ή=227, ϊ=228, ί=229, ό=230, ύ=231, ϋ=232

Και των κεφαλαίων χαρακτήρων με τόνο που είναι : Ά=234 , Έ=235, Ή=236, Ί=237 , Ό=238, Ύ=239, Ώ=240, Ϊ=244, Ϋ=245.

Ακόμα μπορείς στην access σε ένα πλαίσιο κειμένου στην ιδιότητα KeyPress να δεις τον κωδικό του χαρακτήρα με την εξορισμού μεταβλητή KeyAscii

Private Sub txtFindKeyAscii_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub

Ευχαριστώ.

Tasos 24-07-20 10:54

1 Συνημμένο(α)
Καλημέρα σε όλους!

Στο συμβάν keydown το όρισμα Keycode επιστρέφει τον κωδικό του πλήκτρου που προκάλεσε το συμβάν. Δεν επιστρέφει κωδικό χαρακτήρων.

Επισυνάπτω ένα αρχείο Excel με τους κωδικούς Unicode των ελληνικών χαρακτήρων που είναι οι ίδιοι με αυτούς του ορίσματος KeyAscii του συμβάντος KeyPress.

Ωστόσο η αναζήτηση με τη μέθοδο KeyPress δεν θα επιστρέψει αποτέλεσμα αν κάποιος επικολλήσει στο πεδίο κειμένου κείμενο προς αναζήτηση.


Καλή συνέχεια!

Με εκτίμηση

Τάσος

ΥΓ. Γιώργο με πρόλαβες!!

vraxnakisg 24-07-20 11:33

Γεια σου Τάσο,

Σωστές οι "Παρατηρήσεις" σου και οι διορθώσεις σου, χρήσιμο το αρχείο.

Είσαι τεράστιος.

Ευχαριστώ.

thanosgr 24-07-20 13:46

Ευχαριστώ Παιδιά, θα το δοκιμάσω, αλλιώς θα ανεβάσω database να το δείτε απο κοντά.
Να ρωτήσω υπάρχει και για τα αγγλικά; αντίστοιχο, γιατι δοκιμάζω το plus (+) και το minus (-) και δεν μου βγαίνουν σωστά με αυτά που έχω βρει στο διαδίκτυο.
Έχω βάλε case keycode 43 και 45 αλλά μου δείχνει πχ το k

thanosgr 27-07-20 11:22

Παιδιά καλημέρα,
δεν το κατάφερα, δεν ξέρω αλλά δεν μου βγαίνει, να πατάω το πλήκτρο με τα ελληνικά και να μου βρίσκει την εγγραφή. Στα αγγλικά μου δουλεύει.
Η Βάση ειναι περίπου 4mb να την επισυνάψω; παραθέτω το event παρακάτω

Κώδικας:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

On Error GoTo ErrHandler

Dim ctl As Control
Dim fldName As String
Dim rst As Recordset

 
  Select Case KeyCode
     
      Case vbKeyHome
        KeyCode = 0
        DoCmd.RunCommand acCmdRecordsGoToFirst
       
      Case vbKeyUp
        KeyCode = 0
        DoCmd.RunCommand acCmdRecordsGoToPrevious
       
      Case vbKeyDown
        KeyCode = 0
        DoCmd.RunCommand acCmdRecordsGoToNext
       
      Case vbKeyEnd
        KeyCode = 0
        DoCmd.RunCommand acCmdRecordsGoToLast
       
      Case vbKeyRight, vbKeyLeft
     
      Case 8
      Case 13
      Case 9, 36 ' tab  backspace  delete
     
      Case 107, 187    ' + Keypress
        KeyCode = 0
        If Srchval = "" Then Exit Sub
       
        Set rst = Me.RecordsetClone ' look the record on the formn
        rst.FindNext Srchcrit
       
        If rst.NoMatch Then
            MsgBox (" Η Εγγραφή Δεν Βρέθηκε! ")
        Else
            Me.Bookmark = rst.Bookmark
        End If
        rst.Close
           
      Case 109, 189
        KeyCode = 0
        If Srchval = "" Then Exit Sub
       
        Set rst = Me.RecordsetClone ' look the record on the formn
        rst.FindPrevious Srchcrit
       
        If rst.NoMatch Then
            MsgBox (" Η Εγγραφή Δεν Βρέθηκε! ")
        Else
            Me.Bookmark = rst.Bookmark
        End If
        rst.Close
     
      Case 48 To 57, 65 To 90 ' numbers and letters(english)
                 
        Set ctl = Screen.ActiveControl ' Caption control στην φόρμα
        fldName = ctl.Name
       
        Select Case UCase(fldName) ' no search at filters
            Case "APREQFLT", "AWARDREQFLT", "AESYMVFLT", "SYMVFLT", "SUPPLIERFLT"
              Exit Sub
        End Select
       
        ' σύγκριση column
        If fldName <> Lastfld Then
            Srchval = ""
        End If
       
        Lastfld = fldName
       
        Srchval = Srchval & Chr(KeyCode)
        KeyCode = 0
       
        Select Case fldName
       
            Case "Supplier"
              Srchcrit = "[" & fldName & "] like '*" & Srchval & "*'"
             
            Case "AE"
              Srchcrit = "[" & fldName & "] like '*" & Srchval & "*'"
             
            Case "Description"
              Srchcrit = "[" & fldName & "] like '*" & Srchval & "*'"
             
            Case Else
              Srchcrit = "[" & fldName & "] like '" & Srchval & "*'"
        End Select
       
        Set rst = Me.RecordsetClone ' lock the record on the formn
        rst.FindFirst Srchcrit
       
        If rst.NoMatch Then
            MsgBox (" Η Εγγραφή Δεν Βρέθηκε! ")
        Else
            Me.Bookmark = rst.Bookmark
        End If
        rst.Close
     
       
      Case 27
        Srchval = ""
        KeyCode = 0
     
               
      Case 122 'shift =1, ctrl =2, alt =3
        If Shift <> 4 Then
            KeyCode = 0
        End If
     
      Case Shift = 5
        Srchval = ""
        KeyCode = 0
       
      Case Shift = 3
        Srchval = ""
        KeyCode = 0
       
      Case Else
        KeyCode = 0
             
     
  End Select
Exit Sub ' Exit before error

ErrHandler:
  Select Case Err.Number
      Case 2046 ' πηγαινε στην επόμενη γραμμή μην δίνεις σημασία
      Case Else
        MsgBox (" Λάθος " & Err.Number & " " & Err.Description & "! ")
  End Select
  Resume Next
 
End Sub

η Υπόθεση ειναι εκεί στην case με τα αγγλικά και τα ελληνικά
Case 48 To 57, 65 To 90

Ευχαριστώ για τον χρόνο σας
Θάνος

Tasos 27-07-20 12:45

Καλησπέρα σε όλους!

Φίλε Θάνο σου προτείνω να ρίξεις μια ματιά εδώ: https://www.ms-office.gr/forum/acces...ma-access.html

Με εκτίμηση

Τάσος

thanosgr 28-07-20 06:18

Τάσο Ευχαριστώ,
αλλά έχω την εξής απορία, ελέγχοντας το keycode με watch, παρατηρώ οτι όταν αλλάζω σε ελληνικά δεν το λαμβάνει υπόψει η keycode, δηλαδή βλέπει τον ελληνικό χαρακτήρα σαν αγγλικό.
Στο criteria like * "Λ" το βλέπει η watch, αλλά η keycode επιστρέφει L.

Ευχαριστώ

Tasos 28-07-20 07:53

Καλημέρα Θάνο!

Η απάντηση υπάρχει σε προηγούμενο μήνυμα:

Παράθεση:

Στο συμβάν keydown το όρισμα Keycode επιστρέφει τον κωδικό του πλήκτρου που προκάλεσε το συμβάν. Δεν επιστρέφει κωδικό χαρακτήρων.
Επισυνάπτω ένα αρχείο Excel με τους κωδικούς Unicode των ελληνικών χαρακτήρων που είναι οι ίδιοι με αυτούς του ορίσματος KeyAscii του συμβάντος KeyPress.


Ωστόσο η αναζήτηση με τη μέθοδο KeyPress δεν θα επιστρέψει αποτέλεσμα αν κάποιος επικολλήσει στο πεδίο κειμένου κείμενο προς αναζήτηση.
Είναι απόλυτα λανθασμένη/ακατάλληλη κάθε μέθοδος αναζήτησης που βασίζεται σε συμβάντα KeyDown, KeyPress, κλπ.

Τα συμβάντα αυτά χρησιμεύουν κυρίως για την αποτροπή συγκεκριμένων χαρακτήρων ή πάτημα κουμπιών κατά την πληκτρολόγηση από τον χρήστη.

Σε ενδιαφέρει το τελικό και έγκυρο αποτέλεσμα δηλαδή να τρέχει μια διαδικασία αναζήτησης όταν αλλάζει (Change) το κείμενο του στοιχείου ελέγχου και όχι τo πλήκτρο που πατήθηκε ή ο τρόπος τυχόν επικόλλησης.

Καλή συνέχεια!

Τάσος

thanosgr 28-07-20 09:52

Ευχαριστώ Τάσο


Η ώρα είναι 04:14.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2