Πώς να ελέγξετε εάν μια συμβολοσειρά περιέχει αλφαβητικό (μη αριθμητικό) χαρακτήρα μέσω της Access VBA

Κοινή χρήση τώρα:

Ο «καθαρισμός» των πληροφοριών πριν από την εισαγωγή τους στη βάση δεδομένων σας είναι αρκετά συνηθισμένος - άλλωστε, ένας από τους λόγους για τους οποίους έχετε αρχίσει να χρησιμοποιείτε μια βάση δεδομένων είναι για να μπορείτε να υποβάλλετε προβλέψιμα ερωτήματα σε αυτήν τη βάση δεδομένων για καθορισμένα κριτήρια, σωστά... σωστά; Πώς λοιπόν χειρίζεστε εξωτερικές καταστάσεις όπου, για παράδειγμα, πρέπει να εισαγάγετε πληροφορίες από ένα αρχείο όπου ένα άτομο εισάγει «$» αλλά ένα άλλο υποθέτει ότι γνωρίζετε ότι πρόκειται για χρηματική αξία - ή, χειρότερα, όπου κάποιος εισάγει «πμ» ή «μμ» αλλά ένα άλλο άτομο χρησιμοποιεί το 24ωρο ρολόι; Ως συνήθως, υπάρχουν πολλοί τρόποι για να προσεγγίσετε το πρόβλημα, αλλά ένας τρόπος είναι να ελέγξετε αν μια συμβολοσειρά είναι απλώς ένα σύνολο αριθμών ή αν περιέχει «μη αριθμούς». Με λίγη VBA, αυτό το είδος ελέγχου είναι απλό - και αυτό το άρθρο θα σας δείξει πόσο απλό...

Γιατί πρέπει να το κάνουμε αυτό;

Χαρακτήρες δεδομένωνΕάν εισάγετε οποιοδήποτε είδος πληροφορίας για την οποία δεν έχετε έλεγχο στον τρόπο εισαγωγής ή εξαγωγής της, τότε θα έχετε αντιμετωπίσει αυτό το πρόβλημα πολλές (πολλές!) φορές στο παρελθόν – οι άνθρωποι εισάγουν στοιχεία με τον τρόπο που τους βολεύει περισσότερο, όχι με ομοιόμορφο τρόπο. Αυτό σημαίνει ότι είναι μόνο θέμα χρόνου πριν χρειαστεί να το κάνετε. make είναι ομοιόμορφο πριν μπορέσετε να το εισαγάγετε.

Ένα τυπικό παράδειγμα αυτού είναι όπου πρέπει να εισαγάγετε δεδομένα σε ένα αριθμητικό πεδίο, αλλά όταν κοιτάτε τα δεδομένα βλέπετε ότι ορισμένα έχουν χωρίσει χιλιάδες με κόμματα, άλλα έχουν προσθέσει ένα σύμβολο νομίσματος - και ποιος ξέρει τι άλλο.

Μια γρήγορη λέξη προειδοποίησης!

Η εισαγωγή δεδομένων που δεν έχουν καθαριστεί στη βάση δεδομένων σας μπορεί να είναι αρκετά καταστροφική - στην καλύτερη περίπτωση μπορεί να παρακάμψει τις αναφορές σας, χειρότερα θα μπορούσατε να καταλήξετε με όλα τα είδη των σπασμένων - μην αφήσετε τις "βρώμικες" εισαγωγές δεδομένων να είναι ο λόγος που εσείς προσπαθώ να διορθώστε το πρόβλημα πρόσβασης όλο το Σαββατοκύριακο!

Πώς να "ξεφορτωθείτε" αλφαβητικούς χαρακτήρες

Φυσικά, θα μπορούσατε να κάνετε μια αναζήτηση και να αντικαταστήσετε με μη αυτόματο τρόπο, αλλά αυτό μπορεί να πάρει χρόνο και μπορεί να χάσετε κάτι (αν αναζητάτε μόνο, για παράδειγμα, για τα σύμβολα του δολαρίου, μπορεί να χάσετε το σύμβολο του ευρώ ή κόμματα, κενά κλπ) . Έτσι, ο ευκολότερος και πιο αξιόπιστος τρόπος είναι να αφήσετε την Access να κάνει τη σκληρή δουλειά χρησιμοποιώντας τον παρακάτω κώδικα.

Στον κωδικό…

Public Function removeNonNumeric(inString As String) As Long
    Dim outputString, chrString As String
    Dim strPos As Integer
    
    For strPos = 1 To Len(inString)
        chrString = Mid(inString, strPos, 1)
        If IsNumeric(chrString) Then outputString = outputString & chrString
    Next
    
    removeNonNumeric = CLng(outputString)
End Function

Τι κάνει ο κώδικας

Κωδικός VBAΗ συνάρτηση εδώ είναι πολύ απλή. Το μόνο που κάνουμε εδώ είναι να επαναλαμβάνουμε τη συμβολοσειρά που περνάει, έναν χαρακτήρα τη φορά. Εάν ο χαρακτήρας είναι αριθμός, τότε τον προσθέτουμε στην προσωρινή συμβολοσειρά μας και όταν τελειώσουμε, τον μετατρέπουμε σε "long".

Προσαρμογή του κώδικα για να σας ταιριάζει

Όπως μπορείτε να δείτε - η συνάρτηση επιστρέφει έναν τύπο δεδομένων "long" - εάν εργάζεστε με ακέραιους αριθμούς ή κυμαινόμενα σημεία κλπ, τότε θα θελήσετε να αλλάξετε τη συνάρτηση έτσι ώστε να επιστρέψει τον σωστό τύπο τιμής για τη βάση δεδομένων σας.

Εισαγωγή συγγραφέα:

Ο Mitchell Pond είναι ειδικός στην ανάκτηση δεδομένων στο DataNumen, Inc., η οποία είναι ο παγκόσμιος ηγέτης στις τεχνολογίες ανάκτησης δεδομένων, συμπεριλαμβανομένων επισκευή SQL Server βάσεις δεδομένων και υπερέχουν προϊόντα λογισμικού ανάκτησης. Για περισσότερες πληροφορίες επισκεφθείτε www.datanumen.com

Κοινή χρήση τώρα:

Τα σχόλια είναι κλειστά.