Parameter String Koneksi untuk Spesifikasi Tersimpan
Access menyediakan metode kedua untuk menjelaskan skema file teks dengan menggunakan tabel sistem MSysIMEXSpecs
dan MSysIMEXColumns
untuk menyimpan spesifikasi. Pada artikel sebelumnya, saya membahas bagaimana schema.ini
dapat digunakan untuk menggambarkan struktur file teks. schema.ini
melibatkan file teks eksternal yang direferensikan secara implisit tetapi dengan tabel sistem, kami tidak memiliki ketergantungan eksternal. Strukturnya cukup berbeda meskipun ada beberapa yang tumpang tindih.
MSysIMEXSpecs
dan MSysIMEXColumns
tabel sistem
Alih-alih mengandalkan schema.ini eksternal untuk ada di folder yang sama dengan file teks, dimungkinkan untuk memberikan spesifikasi untuk file teks di jalur apa pun dengan merujuk spesifikasi yang disimpan dalam database Access. Saat menggunakan wizard Impor atau Ekspor, Anda dapat menyimpan atau memuat spesifikasi melalui Advanced
tombol.
Mengklik tombol lanjutan kemudian akan menampilkan dialog spesifikasi. Selain memuat atau menyimpan spesifikasi, Anda juga dapat menyesuaikan spesifikasi menggunakan dialog yang ditampilkan.
Setiap kali spesifikasi disimpan, itu ditulis ke MSysIMEXSpecs
dan MSysIMEXColumns
tabel sistem. Tabel tidak ada di file Access baru dan hanya akan dibuat saat pertama kali. Selanjutnya, Anda dapat mengedit atau bahkan menghapus data dari tabel tersebut. Meski begitu, mereka masih tabel sistem sehingga disembunyikan secara default. Jika Anda ingin melihatnya di panel navigasi, Anda harus membuka Opsi Navigasi dan mengaktifkan visibilitas untuk objek tersembunyi dan objek sistem.
Jika Anda membandingkan opsi yang tersedia pada dialog dengan opsi yang Anda miliki di schema.ini
, Anda dapat melihat beberapa perbedaan mencolok. Sebagai contoh, schema.ini
memungkinkan lebih banyak pilihan sehubungan dengan bagaimana tanggal atau jumlah mata uang dapat diformat. Dengan spesifikasi yang disimpan, kami hanya dapat mengontrol pemformatan tanggal dari daftar prasetel format yang memungkinkan. Tidak ada opsi langsung untuk jumlah mata uang karena kami menggunakan Tipe Data untuk menunjukkan bahwa kolom harus diimpor sebagai mata uang apa pun pemformatannya. Dengan demikian, opsi tabel sistem sederhana dibandingkan dengan schema.ini. Kami akan meninjau struktur tabel selanjutnya.
MSysIMEXSpecs
struktur
Tabel mewakili satu set spesifikasi yang disimpan. Untuk setiap baris, tabel menjelaskan format keseluruhan file, mirip dengan bagian ke-2 dari schema.ini
. Namun, ada opsi berbeda yang perlu dipertimbangkan.
DateDelim
:Mengidentifikasi pembatas untuk tanggal. Biasanya/
atau-
. Ini mungkin hanya satu atau nol karakter.DateFourDigitYear
:Bidang Ya/Tidak yang menunjukkan apakah tanggal diformat dengan empat digit untuk tahun. Jika disetel ke ya, nilai seperti10/10/20
tidak akan dianggap sebagai tanggal yang valid.DateLeadingZeros
:Bidang Ya/Tidak lain yang menunjukkan apakah tanggal memiliki angka nol di depan.DateOrder
:Menentukan format tanggal yang ingin kita gunakan. Kode berikut ini valid:0
:DMY1
:DYM
2
:MDY3
:MYD
4
:YDM5
:YMD
DecimalPoint
:Menunjukkan karakter untuk memisahkan bagian integral dan pecahan untuk bilangan desimal. Harus tepat satu karakter saja.FieldSeparator
:Memisahkan bidang dalam file teks. Untuk file CSV, itu akan menjadi,
(karakter koma). Selain itu, harus tepat satu karakter saja.FileType
:Mirip denganschema.ini
CharacterSet
. Seperti disebutkan dalam artikel sebelumnya, Anda dapat menemukan semua halaman kode yang mungkin didukung pada mesin Windows Anda, lihat di kunci registriComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. Ini mengidentifikasi pengkodean file teks. Anda dapat menggunakan pengidentifikasi halaman kode yang sama. Namun, ada satu masalah.FileType
didefinisikan sebagaiInteger
. Oleh karena itu, halaman kode 65000 (misalnya Unicode) akan dilaporkan sebagai -536. Untuk mengonversi pengidentifikasi halaman kode apa pun yang lebih besar dari 32767, Anda dapat menggunakan rumusCInt("&H" & Hex(x))
dan untuk membalikkan operasi,CLng("&H" & Hex(x))
. Misalnya, mengonversi halaman kode 65000 akan melaluiCInt("&H" & Hex(65000))
untuk menghasilkan -536. Untuk membalikkan,CLng("&H" & Hex(-536))
untuk mendapatkan kembali 65000.SpecID
:Autonumber untuk tabel. Perhatikan bahwa ini bukan kunci utama tabel. Kolom ini digunakan denganMSysIMEXColumns.SpecID
untuk menghubungkan catatan. Namun, tidak ada batasan kunci asing di antara kedua tabel, sehingga penghapusan tidak tetap dapat terjadi.SpecName
:Kunci utama tabel. Ini secara unik mengidentifikasi spesifikasi. Setiap kali Anda menyimpan spesifikasi, nama yang Anda berikan akan dicatat di bidang ini. Saat Anda mengimpor atau mengekspor menggunakan wizard, Access dapat secara otomatis membuat spesifikasi baru meskipun Anda tidak menggunakanAdvanced
dan simpan secara eksplisit.SpecType
:Ini hanya dapat berupa1
untuk menandakan file yang dibatasi atau2
untuk menandakan file dengan lebar tetap.StartRow
:Menentukan baris pada file teks untuk mulai memindai impor. Itu bisa berupa angka apa saja sehingga dimungkinkan untuk melewati beberapa baris di bagian atas file. Ini dapat berguna untuk file teks dengan format yang salah yang memiliki header yang tidak sesuai.TextDelim
:Satu karakter yang membatasi nilai teks. Itu dapat dihilangkan jika teks tidak dibatasi. Jika Anda dapat mengontrol format file teks, biasanya ada baiknya Anda memiliki pembatas teks. File teks dengan pembatas teks akan tetap terbentuk dengan baik meskipun teks berisi pemisah bidang (mis. koma) di dalam teks.TimeDelim
:Menunjukkan karakter pembatas yang digunakan untuk waktu. Itu bisa berupa karakter tunggal atau kosong dan defaultnya adalah:
(karakter titik dua).
MSysIMEXColumns
struktur
Tabel menjelaskan kolom individu dalam file teks dan atribut apa pun. Ini kira-kira sesuai dengan bagian ketiga dari schema.ini
. Namun, ada opsi tambahan seperti pengindeksan yang tidak ada di schema.ini
.
Attributes
:Tidak dikenal. Dalam pengujian saya, saya tidak pernah mendapatkannya selain0
. Jika Anda tahu untuk apa dan bagaimana cara menggunakannya, silakan tinggalkan komentar.DataType
:Tipe data kolom. Nomor tersebut harus sesuai dengan DAO.DataTypeEnum.FieldName
:Nama kolom. Perhatikan bahwa Access akan default keFieldN
dimanaN
adalah bilangan bulat positif.IndexType
:Mungkin0
untuk menunjukkan tidak ada indeks,1
untuk menunjukkan indeks reguler atau2
untuk menunjukkan indeks unik.SkipColumns
:Nilai Boolean menunjukkan jika kolom harus dilewati. Jika dilewati, itu tidak akan tersedia untuk kueri atau membaca.SpecID
:Sesuai denganMSysIMEXSpecs.SpecID
nomor otomatis. Perhatikan tidak ada batasan kunci asing di antara kedua tabel. Jika Anda telah menghapus catatan, mungkin ada catatan yatim dariMSysIMEXSpecs
meja.Start
:Sebuah bilangan bulat yang menunjukkan kapan kolom dimulai pada file teks. Ini penting untuk file dengan lebar tetap. Untuk file yang dibatasi, Access akan tetap menggunakan posisi kolom dari baris pertama tempat ditemukannya bidang untuk menentukan awal. Selanjutnya, Access akan menggunakan kolom untuk menyiratkan urutan ordinal kolom.Width
:Integer lain untuk mengatur ukuran kolom. Pada file dengan lebar tetap, ini juga penting. Ketahuilah bahwa Microsoft Access akan menggunakan informasi tersebut untuk tipe data panjang variabel seperti teks atau biner untuk mengukur kolom yang sesuai bahkan pada file yang dibatasi.
String koneksi menggunakan spesifikasi:DSN
parameter
Di artikel sebelumnya, Anda melihat bahwa tidak ada perubahan pada string koneksi untuk menggunakan file schema.ini. Kami secara implisit merujuk ke schema.ini
hanya dengan memastikan bahwa itu ada di folder yang sama di mana file teks yang kita tautkan atau buka ada. Namun, untuk menggunakan spesifikasi yang disimpan dari sistem mengharuskan kami menyediakan informasi dalam sambungan. Kami melakukan ini dengan mengisi DSN
parameter. Nilai harus mengacu pada nama spesifikasi yang disimpan, seperti yang tercatat di MSysIMEXSpecs.SpecName
kolom.
Ini contohnya:
Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Text;DSN=Products Link Specification;IMEX=1;DATABASE=C:\Links")
Access akan mengharuskan parameter DSN dan parameter IMEX diberikan dalam string koneksi. Jika Anda mencoba menghilangkan IMEX
parameter, Anda akan mendapatkan kesalahan tentang Access yang tidak dapat menemukan spesifikasi, meskipun spesifikasi ada di MSysIMEXSpecs
meja. Ini juga berarti bahwa tabel harus berisi catatan dengan SpecName
berisi nilai yang sama yang diberikan dalam DSN
parameter.
Seperti disebutkan dalam artikel sebelumnya, file teks individual diperlakukan sebagai "tabel" di dalam "database" folder. Jadi meskipun string koneksi tidak mengarah ke file teks tertentu, string koneksi akan menggunakan spesifikasi yang ditentukan pada file teks apa pun yang dibuka melalui koneksi.
Meskipun dimungkinkan untuk menggunakan parameter lain seperti yang dibahas dalam artikel yang sama, Anda harus menyadari bahwa ketika terjadi konflik, spesifikasi yang disimpan akan didahulukan daripada string koneksi. Oleh karena itu, sebaiknya gunakan set parameter minimal yang diperlukan agar berhasil tersambung ke file teks dan biarkan spesifikasi yang disimpan melakukan tugas menjelaskan cara membaca file teks.
Kesimpulan
Anda mempelajari cara alternatif untuk mendeskripsikan struktur file teks tanpa menggunakan file eksternal. Kami melihat bagaimana Access menggunakan dua tabel sistem untuk menyimpan spesifikasi. Terakhir, Anda juga mempelajari cara menentukan spesifikasi yang disimpan menggunakan DSN
parameter. Pada titik ini, kami telah membahas semua yang perlu kami ketahui tentang menautkan atau membuka file teks di Access. Dalam artikel berikutnya, kami akan menggabungkan semua informasi yang dipelajari di sisa seri. Kami juga akan melihat penggunaan string koneksi dalam kueri Access untuk pendekatan tanpa kode.