Mas wawan, terima kasih buat tanggapannya
 
Yg jd masalah adalah, bukan array-nya atBioData() as dtBioData
Tp isi dari dtBioDatanya yg banyak
 
Misal
Type dtBioData
            Nim as String
            Nama as String
            ……
            Nama Mbahnya Tetangga as String
End Type
 
Jd 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 lagi
 
kalau 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 Explicit
Private 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 Sub
Function 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 tanggapannya
cmn mslhnya, isi type datanya bisa puluhan
jd, mnrt saya msh cukup ribet jk saya hrs mengisi data
 
BioData.NIM = ...
BioData.Nama = ....
... dst ... sampai puluhan item
 
sdgkan, isi dari variabel datalengkap sudah sesuai dgn urutan BioData tsb
saya berpikir, sama seperti kita membuat database berbasis teks,
isi tiap baris kan bisa langsung masuk ke dalam BioData itu
nah, 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 variabel
 
trims
 
-----------------------------------
 
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 nanggepin
dan berhubung ini penting bgt buat proyek saya,
sekali lg saya mau bertanya, smoga ada yg berkenan memberi tanggapan ya
 
saya punya type data sbb :
Type sBioData
      NIM   As String * 3
      Nama As String * 4
End Type
 
Public BioData as sBioData
 
dilain sisi, saya punya variabel sbb :
Dim DataLengkap As String
DataLengkap = "123Budi"
 
nah, bagaimana ya trik-nya supaya
BioData = DataLengkap
tanpa perlu memecah DataLengkap menjadi NIM dan Nama terlebih dahulu
(krn datanya agak panjang)
 
sementara ini cara pake
BioData.NIM = mid(DataLengkap,1,3)
BioData.Nama = mid(DataLengkap,4,4)
 
cmn cara diatas tidak fleksible banget jk jenis datanya banyak dan panjang
pengennya 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 variabelnya
 
 
trims


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




Kirim email ke