Wa'alaikumussalam wr wb

Hai Tio,

1. Contoh ADO dan DAO
> File kerja wbkApp.xlsm; File Data E:\wbkDT.xls sheet DATA
   hasil di wbkApp.xlsm sheet HASIL, dengan record pertama di range A2
> ADO
   'pakai 3 baris berikut jika di VBE -> Tools -> references -> sudah
dipilih Ms ActiveX Data Object versi tetrtinggi yang ada
   '>> kalau dicentang sendiri di references, lalu komputer lain tidak
punya, maka akan error.
       dim cn as adodb.connection, rs as adodb.recordset,sCon as string, sQ
as string
       set cn=new adodb.connection
       set rs=new adodb.recordset

   'kalau tidak mau repot pakai centang references, pakai 3 baris ini :
[late binding]
   '>> untungnya, references selalu dipilihkan yang terbaru oleh OS
       dim cn as adodb.connection, rs as adodb.recordset,sCon as string, sQ
as string
       set cn=createobject("adodb.connection")
       set rs=createobject("adodb.recordset")

   'connection string dan query untuk koneksi data
   'Connection string : [ganti path dan nama file sesuai kebutuhan] [pilih
salah satu]
       scon="Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm,
*.xlsb)};DBQ=E:\wbkDT.xls;"     'driver ODBC (direkomendasikan)

       'driver OLEDB,xl2007 ke atas, ganti 8.0 menjadi 12.0, sesuaikan
OLEDB.12.0 dengan yang ada di komputer setempat
       scon="Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=E:\wbkDT.xls;Extended Properties=""Excel 8.0;HDR=YES"";"

   'query
      sq="SELECT a.* FROM [DATA$] as a"

   'buka koneksi dan ambil recordset
      cn.open scon
      rs.open sQ, cn , 1 , 3       '1 : cursor type Open Keyset ; 3 : lock
type Optimistic

   'paste ke range a2
      sheets("hasil").range("a2").copyfromrecordset rs

    'tutup
      rs.close
      cn.close

    'jika perlu cleanup
      set rs=nothing
      set cn=nothing

> DAO [sangat cepat untuk data MS Access, Excel, dan text file]
   'A. *khusus untuk file xl2003 ke bawah saja*
    'pastikan referensi yang dicentang adalah Ms Data Access Object terbaru
(3.6 kalo gak salah)
       dim db as DAO.database, rs as DAO.recordset

    'buka db file dan ambil recordset [sesuaikan nama file]
       set db=OpenDatabase( "E:\wbkDT.xls" , false, true , "Excel
8.0;HDR=YES;" )     'kalau data tidak punya header, set HDR dengan NO,
false : opsi untuk shared mode, true : read only
       set rs=db.openrecordset( "DATA$" )      'nama sheet bisa diganti
query, cursor type juga bisa dtentukan, tapi contoh ini pakai default-nya

   'B. untuk file xl2002 ke atas
    'pastikan referensi yang dicentang adalah Ms Data Access Object terbaru
(3.6 kalo gak salah)
       dim db as DAO.database, rs as DAO.recordset
       dim ws as DAO.workspace

    'buka db file dan ambil recordset [sesuaikan nama file]
       set ws=createworkspace( "" , "" , "" , 1 )      ' nama workspace :
"" , user : "" , pwd : "" , type : odbc  [selainnya adalah 2, untuk Jet
(khusus database engine MS Access)
       '  nama file db atau dsn odbc : ""  , options : kosong , readonly :
kosong , connection string
       set db=ws.opendatabase( "" ,  ,  ,  "ODBC;Driver={Microsoft Excel
Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=E:\wbkDT.xls;"  )
       set rs=db.openrecordset( "SELECT a.* FROM [DATA$] as a" )

  '>langkah selanjutnya<'
   'paste ke range a2
      sheets("hasil").range("a2").copyfromrecordset rs

    'tutup
      rs.close
      db.close

    'jika perlu cleanup
      set rs=nothing
      set db=nothing

2. Syarat :
 > ADO :
       a. di komputer telah ter-install dan terregister library Ms ActiveX
Data Objects
       b. pilih connection string yang sesuai dengan driver-nya (ODBC atau
OLEDB)
       c. bisa semua versi Excel, dengan mengatur nilai parameter pada
bagian ExtendedProperties jika pakai OLE DB
> DAO
       a. di komputer telah ter-install dan teregister library Ms Data
Access Object
       b. pastikan telah mencentang referensi library Ms Data Access
Object, karena menggunakan on the fly pun sama beresikonya (kalau ADO bisa
lebih luwes)
       c. khusus untuk koneksi ke database berupa file seperti MS Access,
textfile, Excel versi 2003 ke bawah (yang di-save as versi 2003 ke bawah),
pakai cara A
       d. khusus untuk koneksi ke database berupa file seperti MS Access,
textfile, Excel versi 2002 ke atas (yang di-save as sesuai versinya), pakai
cara B

3. Referensi yang harus dicentang bisa dilihat di nomor 1 dan nomor 2. ADO
berpotensi tidak perlu mencentang, yaitu dengan createobject (lihat nomor 1)

4. Kecepatan :
      DAO lebih cepat dari ADO ketika mengkoneksi MS Access, Text File, dan
Excel
      ADO secara umum lebih cepat dari DAO ketika mengkoneksi DBMS Oracle,
MS SQL Server, MySQL, dan beberapa DBMS lain
      umumnya yang digunakan adalah ADO dengan driver ODBC. Untuk ADO
dengan driver OLE DB ke produk Ms SQL Server lebih cepat dibanding ODBC
kecuali saat mengeksekusi stored procedure

Wassalamu'alaikum wr wb
Kid



2018-01-15 11:45 GMT+07:00 Tio Adi Bayu Adjie tio.ad...@ptssb.co.id
[belajar-excel] <belajar-excel@yahoogroups.com>:

>
>
> Assalamu Alaikum Wr. Wb.
>
>
>
> Dear Be-Exceller,
>
> Saya tertarik dengan contoh consolidate terlampir yang diberikan Pak
> Hendrik sebelumnya tentang Consolidate dengan menarik data dari worksheet
> lain dengan ADO. Yg mau saya tanyakan.
>
> 1.       Adakah contoh sederhana tentang import data sederhana (bukan
> consolidate) dari workbook lain dengan ADO dan dengan DAO ?
>
> 2.       Apakah ada syarat tertentu, seperti excel versi 2010 atau versi
> yg lebih tinggi atau bisa dengan versi yang lebih rendah ?
>
> 3.       Apakah ada reference tertentu yang harus di centang, seperti
> Microsoft office 14.0 Object Library atau reference lainnya ?
>
> 4.       Import data mana yang lebih cepat, dengan ADO atau DAO ?
>
>
>
>
>
> *Terima Kasih *
>
> *Wassalamu alaikum Wr. Wb.*
>
>
>
> *Best Regards,*
>
> Tio Adi Bayu Adjie
>
>
>
> 
>
  • Re: [belajar-exce... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
    • Re: [belajar... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
      • Re: [bel... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
        • Re: ... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
          • ... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
            • ... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
    • RE: [belajar... Tio Adi Bayu Adjie tio.ad...@ptssb.co.id [belajar-excel]
      • Re: [bel... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]

Kirim email ke