From:  belajar-access@yahoogroups.com [mailto:belajar-access@yahoogroups.com] 
  Sent: 22 Oktober 2015 10:45
  To: belajar-access@yahoogroups.com
  Subject: [belajar-access] Re:  Membagi Isi Field berdasarkan Karakter
  
Bang  Udin,
VBA bisa mengatasi masalah tersebut.
Kita akan membuat suatu fungsi yang akan memisahkan nama lengkap  menjadi nama gelar depan, nama, dan gelar belakangnya, dengan menggunakan  fungsi array.
idenya adalah, kita tentukan dulu array gelar depan (prefix), dan array  gelar belakang (sufix)
Sebagai contoh :
    Dim arr_prefix
    arr_prefix = Array("Prof.", "Dr.")
    
    Dim arr_suffix
    arr_suffix = Array("SH.", "MH.")
lanjutkan daftar di dalam array tersebut sesuai kebutuhan.
selanjutnya dari parameter nama yang masuk (full_name) kita pecah  menjadi array baru.
    Dim nm_split
    nm_split = 
nm_split ini akan berisi kata tunggal dari setiap kata yang terdapat  dalam nama.
jadi dia akan menjadi array("Prof.", "Dr.", "Bambang",  "Raharjo,", "SH.", "MH.")
 
setelah itu kita bisa melakukan cek kata per kata, apakah kata tersebut  ada di prefix, atau di sufix.
jika ada di prefix, maka masukkan ke variabel prefix
jika di sufix, maka masukkan ke variabel sufix
selain itu, masukkan ke variabel name
    Dim i, prefix, the_name, suffix
    
    For i = 0 To UBound(nm_split)
        
        If IsInArray(CStr(nm_split(i)), arr_prefix)  Then
            prefix = prefix & "  " & nm_split(i)
        ElseIf IsInArray(CStr(nm_split(i)),  arr_suffix) Then
            suffix = suffix & "  " & nm_split(i)
        Else
            the_name = the_name &  " " & nm_split(i)
        End If
    
    Next i
selanjutnya hasil akhirnya bisa di cek :
    Debug.Print "Prefix : " & Trim(prefix)
    Debug.Print "Name   : " &  Trim(Replace(the_name, ",", ""))
    Debug.Print "Sufix  : " & Trim(suffix)
dan ini hasilnya di immediate window:
SplitName "Prof. Dr. Bambang Raharjo, SH. MH."
Prefix : 
Name   : Bambang Raharjo
Sufix  : SH. MH.
Nama procedure tersebut adalah SplitName
Untuk mengecek nilai suatu string ada dalam suatu array, ini fungsinya:
Public Function IsInArray(stringToBeFound As String, arr As Variant) As  Boolean
    IsInArray = UBound(Filter(arr, stringToBeFound)) > -1
End Function
Cara ini bisa anda kembangkan untuk mengisi field2 di suatu tabel  sesuai dengan prefix, nama dan sufix nya, dengan perintah ADO/DAO.
silakan di cermati, dan ini fungsi lengkapnya:
Option Explicit
Public Sub SplitName(full_name As String)
    Dim arr_prefix
    arr_prefix = Array("Prof.", "Dr.")
    
    Dim arr_suffix
    arr_suffix = Array("SH.", "MH.")
    
    Dim nm_split
    nm_split = 
    
    Dim i, prefix, the_name, suffix
    
    For i = 0 To UBound(nm_split)
        
        If IsInArray(CStr(nm_split(i)), arr_prefix)  Then
            prefix = prefix & "  " & nm_split(i)
        ElseIf IsInArray(CStr(nm_split(i)),  arr_suffix) Then
            suffix = suffix & "  " & nm_split(i)
        Else
            the_name = the_name &  " " & nm_split(i)
        End If
    
    Next i
    
    Debug.Print "Prefix : " & Trim(prefix)
    Debug.Print "Name   : " &  Trim(Replace(the_name, ",", ""))
    Debug.Print "Sufix  : " & Trim(suffix)
    
End Sub
Public Function IsInArray(stringToBeFound As String, arr As Variant) As  Boolean
    IsInArray = UBound(Filter(arr, stringToBeFound)) > -1
End Function
A.K.
  
  ---In belajar-access@yahoogroups.com, <ud13en@gmail.com> wrote :
Mohon  bantuan teman2 milis belajar acces, bagaimana cara mencari karakter yang berada  ditengah2 field.
Dalam hal  ini saya mau memisahkan data misalkan satu field nama Prof. Dr. Bambang Raharjo, SH.MH. bisa  dipisahkan menjadi 3 field, gelar depan : Prof.  Dr. Field Nama : Bambang Raharjo  dan Filed Gelar Belakang SH.MH.
Terima  kasih sebelumnya
__._,_.___
Posted by: aksan.kurdin@gmail.com 
|      •  |          •  |          •  |          •  |     
SPAM IS PROHIBITED 
• Privacy • Unsubscribe • Terms of Use 
  
  
.
  
__,_._,___
No comments:
Post a Comment