Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Parameter String Koneksi untuk Sumber Data Excel

Parameter String Koneksi untuk Sumber Data Excel

Pada artikel sebelumnya, saya membahas bagaimana kita dapat memperlakukan file Excel dan teks seolah-olah mereka adalah database menggunakan DAO, dan bagaimana kita dapat membukanya tanpa menautkan. Karena mereka tidak menggunakan driver ODBC, string koneksi mereka akan diformat sangat berbeda dari apa yang mungkin biasa Anda lihat untuk string koneksi ODBC. Ada kelangkaan dokumentasi tentang parameter string koneksi Excel. Ini adalah upaya terbaik untuk menutupi beberapa kesenjangan dan mendiskusikan konsekuensi parameter.

Parameter string koneksi Excel

Meskipun kami memiliki 3 "jenis" sumber data yang berbeda:

  1. Excel 8.0 :97-2003 file xls
  2. Excel 12.0 :file xlsb
  3. Excel 12.0 Xml :file xlsx

Semuanya menggunakan parameter yang sama.

Berikut adalah daftar parameternya:

HDR parameter:Baris header

YES :Baris pertama adalah header dan harus menjadi nama kolom untuk “tabel”/”recordset”
NO :Baris pertama tidak diperlakukan berbeda dan hanya data. Semua nama kolom akan diberi nama “FN” di mana “N” adalah angka yang dimulai dengan 1

IMEX parameter:Perilaku Impor/Ekspor

Ini mengatur bagaimana tipe data kolom harus didefinisikan, berdasarkan konten:
1 :Jika kolom berisi tipe data yang berbeda, perlakukan sebagai string. Jika tidak, cocokkan kolom dengan tipe data terbaik.
2 :Selalu cocokkan kolom dengan tipe data tertentu berdasarkan sampel. Hal tersebut dapat menyebabkan kesalahan pembacaan saat kita membaca baris yang berisi data yang tidak sesuai dengan tipe data yang diharapkan.

ACCDB parameter:Menunjukkan bahwa Access menggunakan format file ACCDB?

Secara default, ini selalu disetel ACCDB=YES dalam format file accdb. Namun, menghilangkannya atau menyetelnya ke NO tampaknya tidak menghasilkan apa-apa. Ini sedikit misteri. Jika ada yang bisa membagikan apa efek parameter ini, posting di komentar dan saya akan memperbarui blog.

DATABASE:Jalur ke buku kerja Excel

Parameter harus berisi jalur yang sepenuhnya memenuhi syarat, termasuk nama buku kerja.

String koneksi kerja minimum

Perhatikan bahwa DATABASE adalah satu-satunya parameter wajib selain kata kunci sumber tipe data. Oleh karena itu, string koneksi kerja minimum dapat menjadi:

Excel 8.0;DATABASE=C:\Links\Products.xls

Menentukan lembar atau rentang dalam string koneksi

Pada contoh sebelumnya, Anda melihat bahwa sebuah sheet mewakili “DAO.TableDef “. Namun, lembar kerja bukan satu-satunya hal yang dapat menjadi “Tabledef “. Jika spreadsheet Excel berisi rentang bernama, rentang bernama akan dilaporkan sebagai “Tabledef " demikian juga. Selain itu, kami dapat "meminta" blok arbitrer di lembar menggunakan alamat sel. Misalnya:

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx")
Set rs = db.OpenRecordsset("Sheet$1A1:A3")

Debug.Print rs.Name, rs.Fields.Count

Penting untuk dicatat bahwa alamat sel tidak boleh melebihi rentang yang digunakan lembar. Misalnya, Products.xlsx hanya benar-benar memiliki konten di A1:B3, itu berarti jika Anda membuka recordset menggunakan Sheet1$A1:D5, Anda masih mendapatkan hanya 2 untuk jumlah bidang dan 3 untuk jumlah catatan. Kolom/baris ekstra kosong diabaikan begitu saja. Di sisi lain, jika Anda mengotori sel di suatu tempat di luar A1:B3 , UsedRange dari sheet sekarang akan menjadi lebih besar dan kueri akan menyertakan kolom dan baris kosong.

Oleh karena itu, itu adalah nama yang valid untuk digunakan dalam kueri pada "basis data" Excel:

  1. Sheet1$ – Seluruh rentang lembar kerja yang digunakan.
  2. Sheet1$A1:B4 – Hanya 2 kolom dan 3 baris (tidak termasuk header), asalkan isinya terisi. Jika tidak, kolom atau baris mungkin kurang dari yang diminta.
  3. ProductsRange – rentang bernama dengan nama itu.

Saya merasa jauh lebih baik untuk menggunakan rentang bernama di mana praktis karena ini memastikan bahwa Anda tidak mengkodekan alamat dalam kode Anda terutama jika rentang dipindahkan karena pengguna memasukkan kolom atau baris baru tetapi tidak mengubah konten dari rentang bernama . Namun itu tidak selalu praktis, terutama jika Anda menerima spreadsheet dari pihak ketiga dan karena itu tidak memiliki kendali atas konten atau formatnya. Dalam hal ini, menulis kueri SQL juga dapat berfungsi.

Meminta sumber data Excel

Misalkan kita tidak dapat mengontrol format dan tidak ingin bergantung pada alamat absolut meskipun kita yakin bahwa kolom dan baris tertentu akan benar-benar ada. Dalam situasi itu, hal terbaik yang harus dilakukan adalah bertanya. Berikut ini contoh yang memilih hanya satu baris:

  Dim db As DAO.Database
  Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx")

  Dim rs As DAO.Recordset
  Set rs = db.OpenRecordset("SELECT d.[Count] FROM [Sheet1$] AS d WHERE d.[Products] = 'Bananas';")
  Debug.Print rs.Fields(0).Value

Semoga Anda dapat melihat ini jauh lebih mudah daripada mengulangi setiap baris untuk menemukan mana yang memiliki "Pisang" dan kemudian membaca kolom ke kanan untuk mendapatkan hitungannya. Dalam hal ini, kueri mengalahkan otomatisasi Excel.

Kesimpulan

Anda telah melihat bahwa DAO membuatnya sangat mudah bagi kami untuk bekerja dengan sumber data Excel dan berpura-pura seolah-olah itu adalah sumber data relasional dan menggunakan bahasa kueri favorit kami dan objek DAO yang familier alih-alih menulis sekumpulan kode VBA yang mengotomatiskan Excel untuk menemukan data yang kita inginkan. Parameter string koneksi cukup mudah dan selama Anda memiliki jalurnya, Anda dapat menautkan atau membuka spreadsheet Excel.

Pada artikel berikutnya kita akan melihat parameter koneksi file teks.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Access berbicara dengan sumber data ODBC? Bagian 2

  2. Menggunakan Excel untuk Database Anda? Inilah Mengapa Anda Harus Meng-upgrade ke Access

  3. Mengakses File DSN dari Java

  4. Dasar-dasar MongoDB:Mengonfigurasi Kontrol Akses Berbasis Peran (RBAC)

  5. Akses Pencarian Pesan Nomor Kesalahan