satu lagi, mungkin kalo panjang karakter tiap fieldnya sama bisa tanpa menggunakan delimiter, karena udah ketauan panjang karakter masing2 field...
tapi apakah begitu datanya??? kalo NIM mungkin sudah ada formatnya(misalnya panjang 10 karakter), lah kalo nama orang? hehehehe... masa harus dilebihin spacenya? malah tambah ga efisien imho...
soal jumlah field yg banyak, imho ga jadi masalah, kan define rumusnya cuma sekali, tinggal di looping sebanyak jumlah record db nya...
(silahkan dikoreksi kalo salah) cmiiw
On 5/9/06, su_betmen nusaputra <[EMAIL PROTECTED]> wrote:
Mas wawan, terima kasih buat tanggapannyaYg jd masalah adalah, bukan array-nya atBioData() as dtBioDataTp isi dari dtBioDatanya yg banyakMisalType dtBioDataNim as StringNama as String……Nama Mbahnya Tetangga as StringEnd TypeJd isi dtBioDatanya yg banyak banget, yg klo di split satu2 akan cukup bikin pegel dan hal ini sering digunakan dgn type yg berbeda-beda, jd saya skr sdg cari cara yg lebih simpel.Selama ini klo buat dbase berbasis teks, tdk perlu pake delimiter dan cara bacanya jg ngga perlu di split dulu. langsung aja pada metode open teks filenya kita bagi sesuai dgn panjang atBioData-nya ... baca secara random mas ... tahu kan maksudnya ...gmn ya ... ada ide lain ngga?soalnya program saya jd sangat tidak efisien nih :( meski sudah jalan dgn baik-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Purwedi Kurniawan
Sent: 08 Mei 2006 18:29
To: [email protected]
Subject: Re: [Programmer-VB] Re: tipe Data lagikalau ga salah, database berbasis text juga pake delimiter (tab atau space) u. memisahkan masing2 data per kolom, dan cariage return line feed (vbCRLF) sebagai pemisah record (baris baru).biarpun datanya ada puluhan bahkan ribuan, seharusnya caranya mas hammet itu ga ada masalah selama semua proses bisa di sederhanakan dg looping (seperti yg kita lakukan pada waktu membaca data di teks file).kode berikut ini adalah contoh parsing data teks ke dalam user data type record, mudah2an sesuai dg keinginannya.'-----------------------------------------------------Option ExplicitPrivate Type dtBioData
NIM As String
Nama As String
Alamat As String
End Type'array dari user data type
Private atBioData() As dtBioData'konstanta jumlah field dalam 1 record
Private Const lFieldCount As Long = 3'contoh data, 6 record, 3 field per record, ingat urutan data harus benar
Private Const m_const_sData As String = "id1;nama1;alamat1;id2;nama2;alamat2;id3;nama3;alamat3;id4;nama4;alamat4;id5;nama5;alamat5;id6;nama6;alamat6"Sub GetData()
Dim aSplitted As Variant, ix As Long, lmod As Long, i As Long
'simpan semua data ke array
aSplitted = Split(m_const_sData, ";")
'cari jumlah record, dan redim array dari type data kita dg membagi jumlah data pd array dg jumlah field dalam 1 record
ReDim atBioData(CInt(UBound(aSplitted) - 1) / lFieldCount)
'looping u. memasukkan semua data tadi ke dalam array data type kita
For ix = 0 To UBound(aSplitted)
i = Ceiling((ix + 1) / lFieldCount) - 1
lmod = ix Mod lFieldCount
Select Case lmod
Case 0
atBioData(i).NIM = aSplitted(ix)
Case 1
atBioData(i).Nama = aSplitted(ix)
Case 2
atBioData(i).Alamat = aSplitted(ix)
End Select
Next ix
'liat hasilnya di immediate windows
For i = 0 To UBound(atBioData)
Debug.Print "record no: " & i
Debug.Print atBioData(i).NIM
Debug.Print atBioData(i).Nama
Debug.Print atBioData(i).Alamat
Next i
End SubFunction Ceiling(Number As Double) As Long
Ceiling = -Int(-Number)
End Function'-----------------------------------------------kode select ... case diatas silahkan dibuat lebih flexible lagi kalau bisa, disesuaikan dg konstanta jumlah field dalam user data type nya, kode lainnya kalau ada yg mau memperbaiki, dipersilahkan dg senang hati.best regards[wwn]
On 5/9/06, su_betmen nusaputra <[EMAIL PROTECTED] > wrote:mas live devil,terima kasih buat tanggapannyacmn mslhnya, isi type datanya bisa puluhanjd, mnrt saya msh cukup ribet jk saya hrs mengisi dataBioData.NIM = ...BioData.Nama = ....... dst ... sampai puluhan itemsdgkan, isi dari variabel datalengkap sudah sesuai dgn urutan BioData tsbsaya berpikir, sama seperti kita membuat database berbasis teks,isi tiap baris kan bisa langsung masuk ke dalam BioData itunah, kira2 ada ngga para VB-ers yg tahu trik supaya data bisa langsung masuk ke BioData itu.bedanya, yg satu bacanya dr teks file yg satu dari variabeltrims-----------------------------------coba data NIM dan Nama dipisah dengan delimiter tertentu...
misalnya dengan tanda ^
jadi datalengkap nantinya bukan "123Budi" lagi, melainkan "123^Budi"
dengan demikian berapapun panjang NIM atau nama, bisa di parse menjadi data masing-masing (dalam hal ini menjadi NIM dan Nama)
posisiDelimiter = instr(1, DataLengkap, "^", vbTextCompare) 'ambil posisi delimiter ^
untuk mengambil data NIM :BioData.NIM = mid(DataLengkap,1, posDelimiter -1) 'ambil dari char pertama sampai posisi delimiter - 1
untuk mengambil data Nama :
BioData.Nama = mid(DataLengkap,posDelimiter+1,len(DataLengkap)-posDelimiter) 'ambil data dari posisi delimiter + 1 sampai dengan panjang chars datalengkap - posisi delimiter
dengan demikian jika panjang NIM lebih dari 3 chars atau nama leih dari 4 chars tetap bisa di parsing dengan tepat...
semoga bisa membantu...On 5/8/06, su_betmen nusaputra < [EMAIL PROTECTED] > wrote:dear all,berhubung pertanyaan saya kmrn blm ada yg nanggepindan berhubung ini penting bgt buat proyek saya,sekali lg saya mau bertanya, smoga ada yg berkenan memberi tanggapan yasaya punya type data sbb :Type sBioDataNIM As String * 3Nama As String * 4End TypePublic BioData as sBioDatadilain sisi, saya punya variabel sbb :Dim DataLengkap As StringDataLengkap = "123Budi"nah, bagaimana ya trik-nya supayaBioData = DataLengkaptanpa perlu memecah DataLengkap menjadi NIM dan Nama terlebih dahulu(krn datanya agak panjang)sementara ini cara pakeBioData.NIM = mid(DataLengkap,1,3)BioData.Nama = mid(DataLengkap,4,4)cmn cara diatas tidak fleksible banget jk jenis datanya banyak dan panjangpengennya sih bisa BioData=DataLengkap, krn urutan DataLengkapnya sudah pas dgn BioData .. kira2 ada cara ngga ya?trs, gmn caranya supaya tahu panjang dr BioData, juga isi dari BioData dan jenis2 variabelnyatrims
How low will we go? Check out Yahoo! Messenger's low PC-to-Phone call rates.
Wahana Programmer Groups Links
<*> Untuk mengunjungi sponsor milis ini, klik link berikut:
http://wahanaprogrammer.net
<*> Untuk menghubungi owner milis ini, kirim email ke:
[EMAIL PROTECTED]
<*> Konsultasi pemrogramman bisa chat disini:
Yahoo! Messenger: wahanaprogrammer
SPONSORED LINKS
Programmer Indonesia Basic programming language Computer programming languages Programming languages Java programming language
YAHOO! GROUPS LINKS
- Visit your group "Programmer-VB" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service .
--
best regards,
LiveDeviL
Wahana Programmer Groups Links
<*> Untuk mengunjungi sponsor milis ini, klik link berikut:
http://wahanaprogrammer.net
<*> Untuk menghubungi owner milis ini, kirim email ke:
[EMAIL PROTECTED]
<*> Konsultasi pemrogramman bisa chat disini:
Yahoo! Messenger: wahanaprogrammer
SPONSORED LINKS
| Programmer | Indonesia | Basic programming language |
| Computer programming languages | Programming languages | Java programming language |
YAHOO! GROUPS LINKS
- Visit your group "Programmer-VB" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
