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.
> > > > >
> >
> >  
> >
>


Kirim email ke