Terima kasih jawabannya Mr. Kid.
Mr. Kid, bagaimana memodif sql sintax  sq="SELECT a.* FROM [DATA$] as a" 
sehingga datanya tertentu seperti range (“A5:F20”) ? Karena kalau sintax yang 
dikasih, datanya yang terambil semua data yang ada di worksheet itu.

Terima kasih.

Best Regards,
Tio Adi Bayu Adjie

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: Monday, January 15, 2018 7:56 PM
To: BeExcel
Subject: Re: [belajar-excel] Mengisi data dengan ADO atau DAO


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<mailto:tio.ad...@ptssb.co.id> [belajar-excel] 
<belajar-excel@yahoogroups.com<mailto: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]

Reply via email to