Coba di Excel cell hasil copyfrom recordset di atur format number -> custom -> HH:mm:ss
Kid. 2012/12/26 Adi <[email protected]> > ** > > > Terima kasih banyak atas sarannya Mr. saya mengubah sSQL menjadi: > "Select *, cDate(Waktu) From Jawaban". > kalau saya rinci, maka panjang sekali jadinya, karena table jawaban > mempunyai hampir 60 field (atau mgkn ada caranya?). > field tanggal bertipe datetime dengan default value Date() > sedangkan field waktu bertipe datetime dengan defaultvalue Now(). > tapi untuk efisiensi, field waktu saya hapus dan field tanggal saya ubah > defaultnya ke now(). > > untuk kode yang bapak buat, sudah saya coba, tapi field waktu ternyata > tidak bisa menampilkan format waktu, yang terambil hanya tanggalnya saja. > > sekali lagi, terima kasih banyak atas sarannya pak. > wassalam... > > > --- In [email protected], "Mr. Kid" <mr.nmkid@...> wrote: > > > > Hai Adi, > > > > > field waktu tidak dapat menampilkan format waktu di excel > > >> Tipe data tabel di db untuk field waktu apa ya... > > Biasanya hasil copyfromrecordset akan tampil di-Excel sesuai tipe > datanya. > > Apakah tipe data field waktu bukan datetime ? > > Jika bukan datetime, bagaimana format penulisan waktu dalam field waktu > > tersebut ? (umumnya ditulis dengan format HH:mm:ss) > > Bagaimana jika field tanggal dan field waktu dijadikan satu menjadi field > > waktu_ujian dengan tipe data datetime ? > > > > btw, lepas dari semua itu. * > > > Anggap saja tipe data field waktu dalam db bukanlah bertipe datetime tapi > > dalam format waktu HH:mm:ss* dan nama-nama fieldnya adalah > > > > ID,Tanggal,Waktu,NoUjian,Nama,Kelas,Materi,Jawaban1,jawaban2,jawaban3...\dst > > serta tetap ingin menggunakan methods copyfromrecordset, coba querynya > > diubah menjadi : (query untuk ms access) > > SELECT ID,Tanggal,*CDate(*Waktu*) as > > jam*,NoUjian,Nama,Kelas,Materi,Jawaban1,jawaban2,jawaban3...,dst > > > > > FROM Jawaban > > > > Jika akan menggunakan loop dalam menulis ke setiap cell Excel, maka query > > masih bisa dengan : > > SELECT * FROM Jawaban > > kemudian loop dari record pertama sampai record terakhir (EOF) > > yang didalamnya menulis semua field per record yang diproses oleh loop. > > Jika Excel tetap tidak langsung mengkonversi tipe data field waktu > menjadi > > bertipe datetime dalam cell, maka lakukan konversi tipe data pada nilai > > waktu. > > Kira-kira bunyinya seperti ini : > > > > Dim sSQL As String > > Dim rs As ADODB.Recordset > > Dim cn As ADODB.Connection > > dim lRowOffset as long, lColOffset as long, lFields as long > > dim rngAnchor as range > > > > 'misal hasil query ditulis di sheet bernama Answer dengan header terkiri > di > > A1 > > set rngAnchor=sheets("Answer").range("a1") > > > > Set cn = New ADODB.Connection > > > > cn.Open "Provider=Microsoft.ACE.OLEDB. > > 12.0;Data Source=" & > > Environ("UserProfile") & "\Desktop\jwb.accdb;Persist Security > > Info=False" > > > > Set rs = New ADODB.Recordset > > > > sSQL = "Select * from Jawaban" > > > > rs.Open sSQL, cn, adOpenKeyset, adLockOptimistic > > > > if rs.recordcount>0 then > > lrowoffset=1 > > rs.movefirst > > lfields=rs.fields.count -1 'index field adalah base 0 > > do while not rs.eof > > with rnganchor > > for lcoloffset=0 to lfields > > .offset(lrowoffset,lcoloffset).value = > > rs.fields(lcoloffset).value > > next lcoloffset > > end with > > lrowoffset=lrowoffset+1 > > rs.movenext > > loop > > endif > > > > rs.Close > > Set rs = Nothing > > cn.Close > > Set cn = Nothing > > > > > ujian semester menggunakan Excel 2007. ketika menekan tombol selesai, > > data jawaban akan tersimpan ke table jawaban. > > siswanya berjumlah 700 orang. 1 materi saja mempunyai 50 soal. Fields : > > > ID,Tanggal,Waktu,NoUjian,Nama,Kelas,Materi,Jawaban1,jawaban2,jawaban3...\dst > > >> Biasanya, untuk database yang ingin menampung data seperti demikian, > > setidaknya akan dibagi menjadi 3 tabel, yaitu : > > 1. Tabel siswa (NoIndukSiswa,Nama,Kelas,no_ujian) > > 2. Tabel ujian (IDMateri,Materi,Kelas,TglUjian) > > 3. Tabel jawaban (noUjian,IDMateri,NoIndukSiswa,TglKumpul,NoSoal,Jawaban) > > Kunci jawaban disimpan dengan NoUjian 0. > > Komputasi mengkalkulasi nilai jawaban bisa dilakukan dengan klausa JOIN > > Komputasi menyusun data source untuk output (fact table) juga disusun > > dengan klausa JOIN > > Biasanya menampilkan jawaban para siswa beserta nilai masing-masing > > dilakukan per materi dan jarang untuk seluruh materi sekaligus. > > > > asumsi ada 20 materi per kelas dan ada 100 kelas dengan ujian per materi > > sebanyak 5 kali dalam 2 semester, akan ada 700M record. > > Kadang data seperti tabel jawaban dibagi menjadi data per kelas per > > semester (andai database engine tidak memiliki kemampuan membuat partisi > > data). > > Maka jumlah record sekitar 3.5M. Sepertinya MS Access masih mampu untuk > > record sebanyak 3.5M > > Excel dengan 1M baris per sheet, digunakan untuk menampilkan output per > > materi. Andai saja juga ditampilkan per ujian, maka jumlah record sekitar > > 35K. > > Seluruh proses komputasi diusahakan dilakukan pada sisi database dan > > sesedikit mungkin yang dikomputasi oleh Excel. > > > > Andai field dibuat berorientasi horisontal seperti yang ada sekarang, > > komputasi yang dilakukan disisi database akan membutuhkan kalimat query > > yang relatif panjang. > > > > Wassalam, > > Kid. > > > > > > 2012/12/25 Adi <abduhsuryadi@...> > > > > > ** > > > > > > > > > > Sebenarnya database access ini bertujuan untuk menampung jawaban > > > santriwati di pondok saya yang ujian semester menggunakan Excel 2007. > > > Setiap santriwati ketika menekan tombol selesai, data jawaban mereka > > > akan tersimpan ke table jawaban. > > > kalau jawaban dibuat menjadi record tersendiri, dapat dibayangkan > berapa > > > record yang akan terbentuk jika siswanya berjumlah 700 orang. padahal 1 > > > materi saja mempunyai 50 soal. > > > > > > lebih lengkapnya desain field table jawaban seperti ini: > > > > ID,Tanggal,Waktu,NoUjian,Nama,Kelas,Materi,Jawaban1,jawaban2,jawaban3...\ > > > dst > > > > > > Izinkan saya untuk bertanya lagi Mr... sya menulis kode berikut untuk > > > mengambil kembali data yang ada di access ke excel menggunakan > > > copyfromrecordset. yang jadi masalah adalah, field waktu tidak dapat > > > menampilkan format waktu di excel, hanya tanggal saja yang ada di field > > > waktu. > > > Minta pencerahannya...wassalam. > > > > > > Sub DapatkanData() > > > > > > Dim sSQL As String > > > Dim rs As ADODB.Recordset > > > Dim cn As ADODB.Connection > > > > > > Set cn = New ADODB.Connection > > > > > > cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & > > > Environ("UserProfile") & "\Desktop\jwb.accdb;Persist Security > > > Info=False" > > > > > > Set rs = New ADODB.Recordset > > > > > > sSQL = "Select * from Jawaban" > > > > > > > > > rs.Open sSQL, cn, adOpenKeyset, adLockOptimistic > > > > > > Cells(5, 2).CopyFromRecordset rs > > > > > > > > > rs.Close > > > Set rs = Nothing > > > cn.Close > > > Set cn = Nothing > > > End Sub > > > > > > --- In [email protected], "Mr. Kid" wrote: > > > > > > > > Oh gitu. > > > > > > > > Maksud saya, kenapa tabel tidak dibuat berupa 2 kolom bernama Nomor > > > > (kolom1) dan jawab(kolom2). > > > > Jadi data setiap nomor akan jadi 1 record alias sekali input akan ada > > > > penambahan 50 record. > > > > > > > > Wassalam, > > > > Kid. > > > > On Dec 25, 2012 9:18 AM, "Adi" abduhsuryadi@ wrote: > > > > > > > > > ** > > > > > > > > > > > > > > > > > > kalau yang itu, sudah saya coba pak,dan alhmdlillah sukses. kodenya > > > > > seperti ini: > > > > > > > > > > dim myField as String > > > > > dim myInt as Integer > > > > > > > > > > With rs > > > > > .AddNew > > > > > > > > > > For myInt = 1 To 50 > > > > > myField = myField & IIf(IsNull(Range("F" & myInt)) Or Range("F" & > > > myInt) = > > > > > "", "0", Range("F" & myInt)) > > > > > Next > > > > > > > > > > .Fields("Jawaban") = myField > > > > > .Update > > > > > End With > > > > > > > > > > --- In [email protected], "Mr. Kid" mr.nmkid@ wrote: > > > > > > > > > > > > Sama-sama. > > > > > > > > > > > > Kalau boleh bertanya, apakah mungkin jika tabelnya diubah menjadi > > > > > memiliki > > > > > > kolom Nomor dan Jawaban (2 kolom) saja ? > > > > > > > > > > > > Wassalam, > > > > > > Kid. > > > > > > > > > > > > > > > > > > > >

