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

Parameter String Koneksi untuk Spesifikasi Tersimpan

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 seperti 10/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 :DMY
    • 1 :DYM
    • 2 :MDY
    • 3 :MYD
    • 4 :YDM
    • 5 :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 dengan schema.ini CharacterSet . Seperti disebutkan dalam artikel sebelumnya, Anda dapat menemukan semua halaman kode yang mungkin didukung pada mesin Windows Anda, lihat di kunci registri Computer\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 sebagai Integer . 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 rumus CInt("&H" & Hex(x)) dan untuk membalikkan operasi, CLng("&H" & Hex(x)) . Misalnya, mengonversi halaman kode 65000 akan melalui CInt("&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 dengan MSysIMEXColumns.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 menggunakan Advanced dan simpan secara eksplisit.
  • SpecType :Ini hanya dapat berupa 1 untuk menandakan file yang dibatasi atau 2 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 selain 0 . 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 ke FieldN dimana N adalah bilangan bulat positif.
  • IndexType :Mungkin 0 untuk menunjukkan tidak ada indeks, 1 untuk menunjukkan indeks reguler atau 2 untuk menunjukkan indeks unik.
  • SkipColumns :Nilai Boolean menunjukkan jika kolom harus dilewati. Jika dilewati, itu tidak akan tersedia untuk kueri atau membaca.
  • SpecID :Sesuai dengan MSysIMEXSpecs.SpecID nomor otomatis. Perhatikan tidak ada batasan kunci asing di antara kedua tabel. Jika Anda telah menghapus catatan, mungkin ada catatan yatim dari MSysIMEXSpecs 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelas Dasar MS-Access dan Objek Turunannya

  2. DIPERBARUI:Bug Penyebab Microsoft Office 365 Build 2105 Merusak Aplikasi Akses

  3. Array Objek Kelas VBA Ms-Access

  4. Apa Keterbatasan MS Access?

  5. ListView Control Drag Drop Penanganan Events