Bir Dizinin Alfabetik (Sayısal Olmayan) Bir Karakter İçerip İçermediğini Access VBA Aracılığıyla Nasıl Kontrol Edilir

Şimdi paylaş:

Veritabanınıza aktarmadan önce bilgileri "temizlemek" oldukça standart bir işlemdir – sonuçta, veritabanı kullanmaya başlamanızın nedenlerinden biri de, belirli kriterlere göre veritabanını tahmin edilebilir bir şekilde sorgulayabilmektir, değil mi? Peki, örneğin, bir kişinin "$" işareti girdiği ancak bir başkasının bunun parasal bir değer olduğunu varsaydığı bir dosyadan bilgi aktarmanız gerektiğinde veya daha da kötüsü, birinin "am" veya "pm" girdiği ancak bir başkasının 24 saatlik saat kullandığı durumlarda dışsal durumları nasıl ele alırsınız? Her zamanki gibi, soruna yaklaşmanın birçok yolu vardır, ancak bir yol, bir dizenin yalnızca bir sayı kümesi olup olmadığını veya herhangi bir "sayı olmayan" karakter içerip içermediğini kontrol etmektir. Biraz VBA ile bu tür bir kontrol basittir – ve bu makale size bunun ne kadar basit olduğunu gösterecektir…

Bunu neden yapmamız gerekiyor?

Veri KarakterleriEğer giriş veya çıkış şeklini kontrol edemediğiniz herhangi bir bilgiyi içe aktarıyorsanız, bu sorunla daha önce birçok (çok!) kez karşılaşmışsınızdır: İnsanlar bilgileri kendileri için en rahat olan şekilde girerler, tek tip bir şekilde değil. Bu da, bir süre sonra bu sorunu çözmek zorunda kalacağınız anlamına gelir. yapmak içe aktarmadan önce tekdüze.

Bunun tipik bir örneği, verileri sayısal bir alana aktarmanız gerektiği, ancak verilere baktığınızda bazılarının binleri virgülle ayırdığını, bazılarının para birimi işareti eklediğini ve kim bilir başka neler olduğunu gördüğünüz durumdur.

Hızlı bir uyarı!

Temizlenmemiş verileri veritabanınıza aktarmak oldukça yıkıcı olabilir - en iyi ihtimalle raporlamanızı çarpıtabilir, daha da kötüsü, her türlü şeyin bozulmasına neden olabilir - "kirli" verilerin içe aktarılmasının nedeniniz olmasına izin vermeyin. deniyorum erişim sorununu düzelt tüm haftasonu!

Alfabetik karakterlerden nasıl "kurtulur"

Elbette manuel olarak bir arama ve değiştirme yapabilirsiniz, ancak bunu yapmak zaman alabilir ve bir şeyleri gözden kaçırabilirsiniz (örneğin, yalnızca dolar işaretleri için arama yapıyorsanız, euro işaretini veya virgülleri, boşlukları vb. kaçırabilirsiniz) . Bunu yapmanın en kolay ve daha güvenilir yolu, Access'in aşağıdaki kodu kullanarak zor işi yapmasına izin vermektir.

Kod üzerine…

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

Kod ne yapar

VBA KoduBuradaki fonksiyon oldukça basit. Burada yaptığımız tek şey, bize iletilen dizeyi karakter karakter döngüye almak. Eğer karakter bir sayı ise, bunu geçici dizemize ekliyoruz ve işimiz bittiğinde bunu "long" türüne dönüştürüyoruz.

Kodu size uyacak şekilde uyarlama

Gördüğünüz gibi – işlev “uzun” bir veri türü döndürür – tamsayılar veya kayan noktalar vb. ile çalışıyorsanız, veritabanınız için doğru türde değeri döndürecek şekilde işlevi buna göre değiştirmek isteyeceksiniz.

Yazar Tanıtımı:

Mitchell Pond, bir veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. onarım SQL Server veritabanı ve excel kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.