Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
![]()
Γεια σας.. Αναρωτιέμαι αν υπάρχει τρόπος για να γίνει το εξής: Από ένα ΟνοματΕπώνυμο να προκύπτει ένα λατινικό username. Ίσως με τα 5 πρώτα γράμματα του Επωνύμου + το πρώτο γράμμα του Ονόματος + έναν τυχαίο μοναδικό αριθμό. Θα υπάρχει πρόβλεψη σύμφωνα με τα παρακάτω; Ελλ - Λατ ====== ====== ====== Α --> Α , K --> K , Τ --> Τ Β --> V, Λ --> L , Υ --> Y Γ --> G, Μ --> M , Φ --> F Δ --> D, Ν --> N , Χ --> CH Ε --> E, Ξ --> X , Ψ --> PS Ζ --> Z, Ο --> O , Ω --> O Η --> I, Π --> P, Θ --> TH , Ρ --> R, Ι --> I , Σ --> S, Δίφθογγοι ------------ Ελλ - Λατ ======= AI --> AI AY --> AV (*), AF (**) OI --> OI OY --> OU EI --> EI EY --> EV (*), EF (**) Διπλά ------- Ελλ - Λατ ======= ΜΠ --> B (στην αρχή ή στο τέλος) ΜΠ --> MP (ενδιάμεσα) ΝΤ --> NT ΤΣ --> TS ΤZ --> TZ ΓΓ --> NG ΓΚ --> GK ΗΥ --> IY (*), IF (**) (*) πριν από Β, Γ, Δ, Ζ, Λ, Μ, Ν, Ρ και τα φωνήεντα (**) πριν από Θ, Κ, Ξ, Π, Σ, Τ, Φ, Χ, Ψ και στο τέλος λέξης. |
#2
| ||||
| ||||
![]()
Δες και ενα αλλο παραδειγμα που νομιζω οτι κανει την δουλεια σου... Καλη συνεχεια...
__________________ http://www.facebook.com/home.php?ref...00000309992857 |
#3
| |||
| |||
![]()
Σ' ευχαριστώ για την ανταπόκριση. Θα δοκιμάσω. |
#4
| |||
| |||
![]()
Δεν ξέρω πως να το προσαρμόσω ώστε η μεττροπή να γίνεται σε ερώτημα. Τρέχοντας δηλαδή το ερώτημα σ' ένα υπολογιζόμενο πεδίο να βγαίνει το λατινικό username. |
#5
| ||||
| ||||
![]()
Καλημέρα σε όλους! Χρήστο θεώρησα καλό να διαγράψω τα μηνύματα μας που δεν έχουν να προσφέρουν και πολλά στους υπόλοιπους. Τελικά, μετά από αρκετές διορθώσεις (πάντα με τη βοήθεια σου) έχω να προτείνω το παρακάτω: Συνάρτηση σε πεδίο Ερωτήματος ή φόρμας: Transliterate(Nz([Πεδίο];"");Πληθος Χαρακτήρων;"Διαχωριστικός Χαρακτήρας") Η συνάρτηση VBA: Κώδικας: Option Explicit Public Const EVChars = "914,915,916,918,924,925,929,913,917,919,921,927,933,937" Public Const EFChars = "920,922,926,928,931,932,934,935" Public Const DummyChar = "?" 'Autor: Tassos Filoxenidis - www.ms-office.gr/forum Public Function Transliterate(ByRef strChars As String, _ Optional ByVal strCharslength As Integer, _ Optional ByRef AutoCompleteChar As String) As String Dim i As Integer, strChar As String, OldCharsLen As Integer, _ strCharsLen As Integer, SecChar As Integer If Trim(AutoCompleteChar) = vbNullString Then AutoCompleteChar = DummyChar strChars = ReplaceTones(strChars) OldCharsLen = Len(strChars) If strCharslength = 0 Then strCharslength = OldCharsLen If Len(strChars) < strCharslength Then strChars = strChars & String(strCharslength - Len(strChars), AutoCompleteChar) End If strCharsLen = Len(strChars) For i = 1 To strCharsLen Select Case AscW(Mid(strChars, i, 1)) Case 913 'Alpha If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 933 Then If i + 2 > OldCharsLen Then SecChar = 0 Else SecChar = AscW(Mid(strChars, i + 2, 1)) End If If InStr(1, EVChars, SecChar) > 0 Then strChar = strChar & "AV" i = i + 1 ElseIf InStr(1, EFChars, SecChar) > 0 Or Right(strChars, 1) = SecChar Then strChar = strChar & "AF" i = i + 1 Else strChar = strChar & "A" End If Else strChar = strChar & "A" End If Else strChar = strChar & "A" End If Case 914 'Beta strChar = strChar & "B" Case 915 'Gama If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 915 Then strChar = strChar & "NG" i = i + 1 ElseIf AscW(Mid(strChars, i + 1, 1)) = 922 Then strChar = strChar & "GK" i = i + 1 Else strChar = strChar & "G" End If Else strChar = strChar & "G" End If Case 916 'Delta strChar = strChar & "D" Case 917 'Epsilon If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 933 Then If i + 2 > OldCharsLen Then SecChar = 0 Else SecChar = AscW(Mid(strChars, i + 2, 1)) End If If InStr(1, EVChars, SecChar) > 0 Then strChar = strChar & "EV" i = i + 1 ElseIf InStr(1, EFChars, SecChar) > 0 Or Right(strChars, 1) = SecChar Then strChar = strChar & "EF" i = i + 1 Else strChar = strChar & "E" End If Else strChar = strChar & "E" End If Else strChar = strChar & "E" End If Case 918 'Zeta strChar = strChar & "Z" Case 919 'Eta If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 933 Then If i + 2 > OldCharsLen Then SecChar = 0 Else SecChar = AscW(Mid(strChars, i + 2, 1)) End If If InStr(1, EVChars, SecChar) > 0 Then strChar = strChar & "IY" i = i + 1 ElseIf InStr(1, EFChars, SecChar) > 0 Or Right(strChars, 1) = SecChar Then strChar = strChar & "IF" i = i + 1 Else strChar = strChar & "I" End If Else strChar = strChar & "I" End If Else strChar = strChar & "I" End If Case 920 'Theta strChar = strChar & "TH" Case 921 'Iota strChar = strChar & "I" Case 922 'Kappa strChar = strChar & "K" Case 923 'Lambda strChar = strChar & "L" Case 924 'Mu If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 928 Then If i > 1 And i + 1 < OldCharsLen Then strChar = strChar & "MP" i = i + 1 Else strChar = strChar & "B" i = i + 1 End If Else strChar = strChar & "M" End If Else strChar = strChar & "Ì" End If Case 925 'Nu If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 932 Then strChar = strChar & "NT" i = i + 1 Else strChar = strChar & "N" End If Else strChar = strChar & "Í" End If Case 926 'Xi strChar = strChar & "X" Case 927 'Omicron If i < strCharslength Then If AscW(Mid(strChars, i + 1, 1)) = 933 Then strChar = strChar & "OU" i = i + 1 Else strChar = strChar & "O" End If Else strChar = strChar & "O" End If Case 928 'Pi strChar = strChar & "P" Case 929 'Rho strChar = strChar & "R" Case 931 'Sigma strChar = strChar & "S" Case 932 'Tau strChar = strChar & "T" Case 933 'Upsilon strChar = strChar & "Y" Case 934 'Phi strChar = strChar & "F" Case 935 'Chi strChar = strChar & "CH" If Len(strChar) >= strCharslength Then strCharslength = strCharslength + 1 Case 936 'Psi strChar = strChar & "PS" If Len(strChar) >= strCharslength Then strCharslength = strCharslength + 1 Case 937 'Omega strChar = strChar & "O" Case Else strChar = strChar & Mid(strChars, i, 1) End Select If Len(strChar) >= strCharslength Then ' strCharslength = strInitialLength Exit For End If Next If AutoCompleteChar <> DummyChar Then If Len(strChar) < strCharslength Then strChar = strChar & String(strCharslength - Len(strChar), AutoCompleteChar) End If Else strChar = Replace(strChar, DummyChar, vbNullString) End If Transliterate = strChar End Function Function ReplaceTones(strChar As String) As String ReplaceTones = UCase$(strChar) ReplaceTones = Replace(ReplaceTones, ChrW$(902), ChrW$(913)) ReplaceTones = Replace(ReplaceTones, ChrW$(904), ChrW$(917)) ReplaceTones = Replace(ReplaceTones, ChrW$(906), ChrW$(921)) ReplaceTones = Replace(ReplaceTones, ChrW$(938), ChrW$(921)) ReplaceTones = Replace(ReplaceTones, ChrW$(905), ChrW$(919)) ReplaceTones = Replace(ReplaceTones, ChrW$(910), ChrW$(933)) ReplaceTones = Replace(ReplaceTones, ChrW$(939), ChrW$(933)) ReplaceTones = Replace(ReplaceTones, ChrW$(908), ChrW$(927)) ReplaceTones = Replace(ReplaceTones, ChrW$(911), ChrW$(937)) ReplaceTones = Replace(ReplaceTones, ChrW$(962), ChrW$(931)) End Function Παράδειγμα σε Πεδίο Ερωτήματος: UsrName: Transliterate(Nz([sName];"");1) & Transliterate(Nz([Surname];"");5) & "-" & [ID] Ακόμα και αν η συνάρτηση VBA δεν σε καλύπτει πλήρως, μπορείς με απλές συναρτήσεις σε υπολογισμένα πεδία να τροποποιήσεις το τελικό αποτέλεσμα. Καλή συνέχεια! Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#6
| |||
| |||
![]()
Σ' ευχαριστώ πολύ Τάσο, για την απλόχερη βοήθεια. Τα λέμε... :) |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Excel07] Αναζήτηση χαρακτήρων | George R | Excel - Ερωτήσεις / Απαντήσεις | 8 | 15-06-16 10:25 |
[Συναρτήσεις] Εύρεση μη Ελληνικών χαρακτήρων σε κελί | Οδυσσέας | Excel - Ερωτήσεις / Απαντήσεις | 5 | 15-04-13 16:35 |
[Συναρτήσεις] Μετατροπή ελληνικών γραμμάτων σε αντίστοιχους αριθμούς | comsup | Excel - Ερωτήσεις / Απαντήσεις | 17 | 14-03-13 21:07 |
Μεταγραφή Ελληνικών λέξεων με Λατινικούς χαρακτήρες. | ΚΩΣΤΑΣ | Access - Ερωτήσεις / Απαντήσεις | 0 | 07-06-11 18:32 |
Αντικατάσταση Χαρακτήρων | Σπύρος | Access - Ερωτήσεις / Απαντήσεις | 2 | 21-07-10 22:40 |
Η ώρα είναι 04:41.