Membuka atau Menautkan Teks atau Excel sebagai Sumber Data di Microsoft Access
Access adalah alat fenomenal untuk bekerja dengan banyak sumber data. Anda mungkin sudah lama mengetahui bahwa Anda dapat dengan mudah mengimpor atau mengekspor data dalam beragam format. Namun, kami memiliki skenario di mana kami perlu memproses data dari sumber data eksternal. Pemrosesan sering berjalan sehingga mengimpor data akan mengasapi file front-end dengan cepat. Selain itu, dalam situasi ini, membuat salinan kedua dari file Access sebagai database sementara untuk menghindari kembung bukanlah pilihan yang tepat. Pilihan apa yang kita miliki? Di situlah kami melihat kelangkaan informasi tentang membuka atau menautkan ke sumber data non-relasional. Jadi, mari selami topik ini secara mendalam.
Seri blog ini bertujuan untuk mengisi celah yang menganga dalam dokumentasi Microsoft tentang membuka atau menautkan ke teks atau Excel sebagai sumber data di aplikasi Access. Connectionstrings.com dan situs lain menyediakan beberapa remah roti. Anda juga biasanya dapat menemukan beberapa perilaku dengan menggunakan panduan Access dan kemudian memeriksa objek setelahnya. Namun, menebak-nebak tidak terlalu berguna. Oleh karena itu, rangkaian artikel ini akan membahas tentang cara menggunakan file Excel dan Teks sebagai sumber data tanpa harus mengimpor atau mengekspor data.
Harap dicatat bahwa seri tidak akan mungkin terjadi tanpa bantuan Dan Haught dan Jim Ferguson, yang ikut menulis Panduan Programmer Mesin Database Microsoft Jet. Meskipun buku itu sudah lama tidak dicetak, buku ini masih berharga jika Anda sering bekerja dengan DAO.
Akses dan sumber data non-relasional
Access selalu mendukung penggunaan Indexed Sequential Access Method (ISAM) sebagai sumber data potensial, yang memungkinkannya untuk mengimpor, menautkan, atau mengekspor ke sumber data non-relasional seperti file teks atau spreadsheet Excel dan bahkan format file lain seperti Exchange, dBASE atau FoxPro. DAO memungkinkan karena memiliki driver ISAM yang dapat bekerja dengan format tersebut. Namun, saya akan fokus pada file teks dan spreadsheet Excel karena mereka adalah sumber yang lebih umum di mana kita membutuhkan Access untuk bekerja. Jika semua yang pernah Anda lakukan adalah mengimpor data menggunakan tab Data Eksternal melalui Access, itu mungkin tampak ajaib tetapi pada kenyataannya, semua fitur Access tersedia bagi kami sebagai programmer di tingkat DAO.
Jadi mari kita lupakan bahwa penyihir itu ada. Mari kita lupakan ikon mengilap pada pita. Mari kita lupakan bahwa ada tabel yang ditautkan. Mari kita gunakan kode VBA untuk bekerja dengan sumber data, dari udara tipis. Bisakah kita? Sangat. Pertama, kita akan melihat perbedaan antara menautkan dan membuka sumber data.
Menautkan vs. Membuka
Untuk membantu dengan terminologi, kita perlu membuat perbedaan antara menghubungkan vs. pembukaan . Menautkan berarti kita membuat tabel tertaut yang sekarang menjadi "tabel" Access yang bisa kita gunakan seperti tabel Access lainnya. Dengan demikian, ini adalah objek permanen yang ditentukan dalam aplikasi Access. Sebaliknya, pembukaan adalah ketika kita mengakses sumber data secara langsung dengan menggunakan OpenDatabase
DAO metode. Sesuai sifatnya, membuka sumber data biasanya akan dilakukan melalui kode VBA seperti yang akan Anda lihat sebentar lagi.
Menyiapkan sampel dan kode
Karena seri ini tentang memahami detail seluk beluk tentang bagaimana Access berinteraksi dengan sumber data tersebut, pertama-tama kami akan fokus pada pembukaan alih-alih menautkan di sini. Jadi, bagaimana kita membuka spreadsheet Excel? Tentunya, itu bukan database? Mari kita siapkan contoh minimum untuk memulai. Dalam sebuah folder, C:\Links
, kita akan membuat spreadsheet Excel dan file database Access, bernama Products.xlsx
dan Sample.accdb
, masing-masing:
Products.xlsx adalah spreadsheet sederhana dengan hanya satu lembar dengan konten berikut:
Dengan ini, mari tambahkan kode VBA di Sample.accdb
. Dalam modul standar:
Public Sub OpenExcel() 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 tdf As DAO.TableDef For Each tdf In db.TableDefs Debug.Print tdf.Name Dim fld As DAO.Field For Each fld In tdf.Fields Debug.Print fld.Name, Next Debug.Print Dim rs As DAO.Recordset Set rs = tdf.OpenRecordset Do Until rs.EOF For Each fld In rs.Fields Debug.Print fld.Value, Next Debug.Print rs.MoveNext Loop Next End Sub
Jika kita menjalankan kode, kita akan mendapatkan output berikut di jendela langsung kita:
Products Count Apples 3 Bananas 5 Figs 8
Jadi meskipun Excel bukan "database" (dan jika Anda menggunakan Excel sebagai database, malu ), kita masih bisa berpura-pura itu adalah "database" dan beralih melalui "tabel" dan "catatan" menggunakan objek DAO yang sudah dikenal. Semua keajaiban berasal dari string koneksi ini:
Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx
Tapi itu tidak harus ajaib. Seri ini akan membedah bagian-bagian dari string koneksi untuk driver Excel dan file teks. Jadi mari kita mulai dengan membandingkan string koneksi ODBC yang mungkin lebih Anda kenal.
Jenis Sumber Data
Jika Anda telah menautkan ke sumber data ODBC, Anda mungkin memperhatikan bahwa string koneksi ODBC biasanya terlihat seperti ini:
ODBC;DRIVER=...;SERVER=...;DATABASE=...;
Ingin tahu mengapa selalu dimulai dengan ODBC
? Bagian pertama itulah yang digunakan DAO untuk mengidentifikasi jenis sumber. Namun, karena Excel bukan database ODBC, kami harus menggunakan Excel 12.0 Xml
untuk menunjukkan bahwa DAO perlu menggunakan driver Excel tertentu. Sintaks string koneksi selanjutnya dipengaruhi oleh driver mana yang kita gunakan di bagian pertama string koneksi.
Berikut sebagian daftar kemungkinan jenis sumber data yang akan dikenali oleh MS Access:
Excel 8.0
:97-2003 file xlsExcel 12.0
:file xlsbExcel 12.0 Xml
:file xlsxText
:Semua file teks
Ada lebih banyak sumber data, termasuk SharePoint, Exchange, atau FoxPro, tetapi saya tidak akan membahasnya. Meski begitu, ini menunjukkan bahwa Access mampu bekerja dengan sumber-sumber itu seperti database dan itu bisa memungkinkan kita menggunakan DAO untuk membaca kontennya. Perhatikan bahwa ketika kami menggunakan sumber data non-relasional, tidak semua operasi dapat didukung sepenuhnya. Misalnya, Anda mungkin tidak diizinkan untuk mengedit baris yang ada meskipun Anda dapat menyisipkan baris.
Namun, satu tantangan dengan membuka atau menautkan ke sumber data berarti Anda tidak bisa hanya mengimpor data, lalu mengedit skema setelahnya sesuai dengan kebutuhan Anda. Oleh karena itu, Anda mungkin menemukan bahwa skema default yang Anda dapatkan saat menautkan tidak sesuai dengan yang Anda inginkan. Untuk alasan itu, pemahaman mendalam tentang string koneksi akan menjadi penting. Oleh karena itu, Anda akan mempelajari lebih lanjut tentang detail string koneksi untuk Excel dan file teks dalam beberapa artikel berikutnya.
Kesimpulan
Anda melihat bahwa sebagai alternatif untuk mengimpor data eksternal, kami dapat memilih untuk menautkan atau bahkan membuka sumber data eksternal menggunakan DAO. Kemampuan untuk menautkan atau membuka sumber data eksternal sangat kurang dimanfaatkan. Namun, kemampuan untuk menautkan atau membuka tidak boleh diabaikan karena ini dapat membuka skenario baru seperti menghindari kembung akibat impor, terutama di lingkungan yang terkunci. Pada artikel berikutnya, saya akan membahas parameter berbeda yang digunakan oleh driver Excel untuk membuat string koneksi yang valid. Dalam artikel berikut, saya akan melihat driver file teks dan parameter koneksi. Di artikel terakhir, kami akan menggabungkan semuanya.