Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αντικατάσταση αριθμού σε πλαίσιο κειμένου

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 09-11-16, 17:13
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή Αντικατάσταση αριθμού σε πλαίσιο κειμένου

Καλησπέρα σε όλους τους φίλους
θέλω να κάνω μια αντικατάσταση αριθμών σε πλαίσιο κειμένου με ορισμένες προυποθέσεις:
Είτε με after update είτε με κουμπί εντολής
1)Όταν μετά από τελεία ή κενό υπάρχει ο αριθμός 0 να γίνεται αντικατάσταση σε αριθμό 8
2) όταν πριν από τελεία .κόμμα, κενό ,θαυμαστικό ,ανω κατω τελεία , ερωτηματικό υπάρχει ο αριθμός 0 να γίνεται αντικατάσταση σε αριθμό 8.
εχω κάνει με την συνάρτηση trim αλλά μου xχτυπάει
Κώδικας:
Dim s As String, EndChars As Variant, i As Long
    's = 0
    If Nz(Me.TextBox2, "") <> "" Then
        s = Trim(Me.TextBox2) & " "
        'Χαρακτήρες μετά από μία λέξη
        EndChars = Array(",", ".", ";", ":", "•", " ")
        For i = 0 To UBound(EndChars)
            s = Replace(s, "8" & EndChars(i), "0" & EndChars(i))
        Next
        Me.TextBox2 = s
    End If

End Sub
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb test1.mdb (340,0 KB, 19 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 09-11-16, 20:29
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Καλησπέρα Αλέξανδρε.
Υπάρχει μια εντολή Replace που είδα ότι δουλεύει στα πεδία "υπόμνημα", οπότε έχεις την τύχη με το μέρος σου !

Νομίζω ότι θα λύσεις το πρόβλημα αρκεί να ζητήσεις αντικατάσταση των αλφαριθμητικών εκφράσεων πχ ".0" με "8" κλπ

Πιστεύω ότι μπορείς να συνεχίσεις. Αν βρεις δυσκολίες θα κάνω ό,τι μπορώ να σε βοηθήσω.

Με ιδιαίτερη εκτίμηση / Νίκος΄


Οδηγία : Αλέξανδρε, δοκίμασε γράφοντας μια replace για κάθε ιδιαίτερη περίπτωση αντικατάστασης και αφού το πετύχεις μετά συμπιέζεις τον κώδικα...
Συνημμένα Αρχεία
Τύπος Αρχείου: zip dokimastiko.zip (18,3 KB, 17 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη Meteora : 09-11-16 στις 20:40. Αιτία: προσθήκη οδηγίας
Απάντηση με παράθεση
  #3  
Παλιά 09-11-16, 21:56
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Νίκο καλησπέρα.
η δεύτερη περίπτωση τελικά δουλεύει με όλους τους περιορισμούς.
Τώρα στην πρώτη περίπτωση θέλω να αλλάζει στην αρχή της λέξης όταν υπάρχει το (0) με αντικατάσταση το (8) , δεν θυμάμαι την σύνταξη της συνάρτησης.
Στην προηγούμενη συνάρτηση ήταν EndChars για τον τελευταίο χαρακτήρα της λέξης να γίνει αντικατάσταση ,Τώρα θέλω για τον πρώτο χαρακτήρα της λέξης.τι γράφω;
Απάντηση με παράθεση
  #4  
Παλιά 10-11-16, 13:10
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Αλέξανδρε, θα πρότεινα να δοκιμάσεις τον παρακάτω κώδικα:

Κώδικας:
Public Sub ReplaceFirstEndChar()
    'Αλλαγή 1ου και τελευταίου χαρακτήρα λέξης

    'Εδώ θα καταχωρηθούν οι πραγματικοί χαρακτήρες
    Const First As String = "0"     '1ος χαρακτήρας λέξης
    Const FirstTo As String = "8"   'χαρακτήρας αντικατάστασης 1ου χαρακτήρα
    Const Last As String = "0"      'τελευταίος χαρακτήρας λέξης
    Const LastTo As String = "8"    'χαρακτήρας αντικατάστασης τελευταίου χαρακτήρα

    Dim s As String, SeparateChars As Variant, i As Long
    s = Trim(Nz(Me.TextBox2, ""))
    If s <> "" Then
        s = " " & s & " "
        'Χαρακτήρες διαχωρισμού λέξεων
        SeparateChars = Array(",", ".", ";", ":", "·", " ")
        For i = 0 To UBound(SeparateChars)
            'αντικατάσταση 1ου χαρακτήρα
            s = Replace(s, SeparateChars(i) & First, SeparateChars(i) & FirstTo)
            'αντικατάσταση τελευταίου χαρακτήρα
            s = Replace(s, Last & SeparateChars(i), LastTo & SeparateChars(i))
        Next
        Me.TextBox2 = Trim(s)
        Me.Dirty = False
    End If
End Sub
Απάντηση με παράθεση
  #5  
Παλιά 10-11-16, 14:48
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

ΟΚ Γιώργο σε ευχαριστώ πολύ θα το δοκιμάσω το βράδυ.
Απάντηση με παράθεση
  #6  
Παλιά 10-11-16, 22:45
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Γιώργο καλησπέρα, είσαι πρώτος δουλεύει πολύ καλά.Με βοήθησε πολύ στην τελική διόρθωση της μεταγλώττισης που έκανα.Αλλά έχω και ένα άλλο πρόβλημα.Αν μπορεί να ενσωματωθεί στην προηγούμενη Public η εξής περίπτωση

ο μπάρμπα Νώε.---> Ελληνικά
o mparmpa nje4 -----> Μεταγλωττισμένα από γραμματοσειρά Braille.

Η παύλα που υπάρχει μετά το μπάρμπα δεν υπάρχει στο πληκτρολόγιο.Αυτοί που έχουν γράψει το κείμενο δεν ξέρω από τι πληκτρολόγιο το έγραψαν ούτε μπορώ να καταλάβω τι παύλα είναι , αλλά στη μεταγλώττιση σε οποιαδήποτε γραμματοσειρά να το βάλεις δεν το μεταγλωττίζει.
.
msg : ο χαρακτήρας που δεν υπάρχει constance[–] intchar=8211
Επειδή την παύλα δεν την αναγνωρίζει η γραμματοσειρά του braille μου την μεταγλωττίζει κενό. Άρα εμφανίζει 3 κενά.Εγώ θέλω όταν υπάρχουν λέξεις με αριθμούς ή γράμματα και ανάμεσα από δύο λέξεις έχουν 3 κενά να κάνει replace το δεύτερο κενό με την παύλα [-]
Παράδειγμα:
4ος – 3ος αι. π.Χ. .--->Κανονικό κείμενο
#dos - #cos <4 p4.h4 --> Θέλω η Μεταγλώττιση να γίνεται έτσι με την κανονική παύλα

Τελευταία επεξεργασία από το χρήστη alex : 11-11-16 στις 06:56.
Απάντηση με παράθεση
  #7  
Παλιά 11-11-16, 09:57
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Αλέξανδρε η συνάρτηση Chrw(8211) επιστρέφει το χαρακτήρα «–».

Το χαρακτήρα μπορούμε να τον καταχωρήσουμε σε έγγραφο του Word κρατώντας πατημένο το Alt και πληκτρολογώντας στην αριθμοπινακίδα 8211.

Στον κώδικα, άλλαξε τη γραμμή: Me.TextBox2 = Trim(s)

με την: Me.TextBox2 = Trim(Replace(s, Chrw(8211),"-"))
Απάντηση με παράθεση
  #8  
Παλιά 11-11-16, 10:49
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Καλημέρα Γιώργο,
δεν το ήξερα το συγκεκριμένο στην αριθμοπινακίδα .απλά στο excel μέσα απο τα constance με μια συνάρτηση έβγαλα ότι αντιστοιχεί σε 8211.
Το ζητούμενο όμως είναι το εξής ότι εγώ δεν κάνω την μεταγλώττιση σε επεξεργαστή κειμένου που έχει μεγάλη ευχέρεια πχ word την κάνω σε πλαίσιο κειμένου Access που έχει περιορισμένες δυνατότητες.
Αλλά δεν μπορώ να χρησιμοποιήσω τον παρακάτω κώδικα διότι η μεταγλώττιση γίνεται σε γραμματοσειρά του braille και δεν αναγνωρίζει το 8211 και το βγάζει κενο.
Στον κώδικα δεν μπορώ να επέμβω βγάζει μυνημα ότι :
msg : ο χαρακτήρας που δεν υπάρχει constance[–] intchar=8211
οπότε σκέφθηκα να επέμβω στο τέλος του κειμένου που αποθηκεύεται σε πίνακα μέσα από τη φόρμα να το διορθώνει το συγκεκριμένο λάθος.
Στην ουσία γίνεται διόρθωση σε μεταγλωττισμένο κείμενο που είναι σε γραμματοσειρά Braille
Στη περίπτωση αυτή στην constance 8211 την λαμβάνει σαν κενό. Το σκεπτικό μου είναι να γίνει αντικατάσταση όπου υπάρχουν 3 κενά ανάμεσα από 2 λέξεις με μορφή είτε είναι αριθμοί είτε γράμματα να γίνει αντικατάσταση το δεύτερο κενό που θα είναι το πλήν(-), (έστω να ξεχωρίζει για παράδειγμα 4ος – 3ος αι. π.Χ.)Γιατί ένας τυφλός σύμφωνα με τη γραμματοσειρά Braille θα διαβάζει έτσι #dos #cos δηλαδή το 4ος το κενό πάλι το κενό και πάλι το κενό και μετά το 3ος .Οπότε εάν το μεσαίο κενό αντικατασταθεί με (-) που την αναγνωρίζει η γραμματοσειρά Braille θα μεταγλωττίζεται σε (-) και ο μη βλέπων θα ξεχωρίζει με παύλα το 4ος από τον 3ο αι.

Τελευταία επεξεργασία από το χρήστη alex : 11-11-16 στις 15:13.
Απάντηση με παράθεση
  #9  
Παλιά 11-11-16, 16:25
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Αλέξανδρε θα πρότεινα τα εξής:

1) Αντίγραψε τον παρακάτω κώδικα σε μία λειτουργική μονάδα (Module)

Κώδικας:
Public Function Replace3Blanks(s As String) As String
    Dim sumS As String, j As Long, i As Long, k As Long
    
    s = Trim(s)
    k = Len(s)
    If k > 4 Then
    j = 1
    Do While j <= k - 4
        sumS = sumS & Mid(s, j, 1)
        If Mid(s, j, 1) <> " " Then
            If Mid(s, j + 1, 3) = "   " And Mid(s, j + 4, 1) <> " " Then
                sumS = sumS & " - ": j = j + 3
            End If
        End If
        j = j + 1
    Loop
       Replace3Blanks = sumS & Right(s, k - Len(sumS))

    Else
       Replace3Blanks = s

    End If
End Function
2) Θέσε στον προηγούμενο κώδικα: Me.TextBox2 = Replace3Blanks(s)

Φιλικά/Γιώργος

ΥΓ. θα μπορούσε να χρησιμοποιηθούν για τη λύση κανονικές εκφράσεις (Regular Expressions), αλλά τις παράτησα εδώ και καιρό και με παράτησαν…
Απάντηση με παράθεση
  #10  
Παλιά 11-11-16, 22:17
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Γιώργο καλησπέρα,
ευχαριστώ για την βοήθεια δεν έχω λόγια να σε ευχαριστήσω φίλε δουλεύει άψογα.Σχεδόν έχω τελειώσει με τις μικρο διορθώσεις .Θα κοιτάξω Σ/Κ το πρόγραμμα δοκιμάζοντας με μεγάλη λεπτομέρεια για τυχόν ανεύρεση άλλου λάθους.Όσο για τις Regular expression έχω ακούσει αλλά ούτε εγώ έχω ιδέα.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Αποτέλεσμα ερωτήματος σε πλαίσιο κειμένου ΚΩΣΤΑΣ2 Access - Ερωτήσεις / Απαντήσεις 2 07-03-15 22:02
[ Φόρμες ] Σύνθετο πλαίσιο κειμένου asterix Access - Ερωτήσεις / Απαντήσεις 5 26-09-14 19:17
[ Φόρμες ] Εικόνα συνδεδεμένη με πλαίσιο κειμένου Λάμπρος Τ Access - Ερωτήσεις / Απαντήσεις 2 20-06-14 21:08
[Γενικά] Πλαίσιο κειμένου Activex gfevran Excel - Ερωτήσεις / Απαντήσεις 2 20-01-14 10:46
[ Φόρμες ] Ενημέρωση πλαίσιο κειμένου ΚΩΣΤΑΣ2 Access - Ερωτήσεις / Απαντήσεις 5 20-06-11 20:27


Η ώρα είναι 18:36.