Access
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Access

Tham số chuỗi kết nối cho các thông số kỹ thuật đã lưu

Tham số chuỗi kết nối cho các thông số kỹ thuật đã lưu

Access cung cấp phương pháp thứ hai để mô tả giản đồ của tệp văn bản bằng cách sử dụng bảng hệ thống MSysIMEXSpecsMSysIMEXColumns để lưu các thông số kỹ thuật. Trong bài viết trước, tôi đã trình bày về cách schema.ini có thể được sử dụng để mô tả cấu trúc của tệp văn bản. schema.ini liên quan đến tệp văn bản bên ngoài được tham chiếu ngầm nhưng với các bảng hệ thống, chúng tôi không có bất kỳ phụ thuộc bên ngoài nào. Cấu trúc khá khác nhau mặc dù có một số chồng chéo.

MSysIMEXSpecsMSysIMEXColumns bảng hệ thống

Thay vì dựa vào schema.ini bên ngoài để có trong cùng thư mục với tệp văn bản, có thể cung cấp thông số kỹ thuật cho tệp văn bản trong bất kỳ đường dẫn nào bằng cách tham chiếu thông số kỹ thuật đã lưu trong cơ sở dữ liệu Access. Khi bạn sử dụng trình hướng dẫn Nhập hoặc Xuất, bạn có thể lưu hoặc tải các thông số kỹ thuật thông qua Advanced nút.

Nhấp vào nút nâng cao sau đó sẽ hiển thị hộp thoại thông số kỹ thuật. Ngoài việc tải hoặc lưu thông số kỹ thuật, bạn cũng có thể tùy chỉnh thông số kỹ thuật bằng hộp thoại hiển thị.

Bất cứ khi nào một thông số kỹ thuật được lưu, nó sẽ được ghi vào cả MSysIMEXSpecsMSysIMEXColumns bảng hệ thống. Các bảng không tồn tại trong tệp Access mới và sẽ chỉ được tạo ở lần đầu tiên. Hơn nữa, bạn có thể chỉnh sửa hoặc thậm chí xóa dữ liệu khỏi các bảng đó. Mặc dù vậy, chúng vẫn là bảng hệ thống nên chúng bị ẩn theo mặc định. Nếu bạn muốn nhìn thấy chúng trong ngăn dẫn hướng, bạn sẽ cần phải đi tới Tùy chọn dẫn hướng và bật khả năng hiển thị cho cả đối tượng ẩn và đối tượng hệ thống.

Nếu bạn so sánh các tùy chọn có sẵn trên hộp thoại với các tùy chọn bạn có trong schema.ini , bạn có thể thấy một số khác biệt đáng chú ý. Ví dụ:schema.ini cho phép nhiều lựa chọn hơn về cách định dạng ngày tháng hoặc số tiền tệ. Với các thông số kỹ thuật đã lưu, chúng tôi chỉ có thể kiểm soát định dạng ngày tháng từ danh sách định dạng có thể đặt trước. Không có tùy chọn trực tiếp nào cho số tiền vì chúng tôi sử dụng Loại dữ liệu để chỉ ra rằng một cột sẽ được nhập dưới dạng đơn vị tiền tệ bất kể định dạng. Do đó, các tùy chọn của bảng hệ thống rất đơn giản so với schema.ini. Chúng tôi sẽ xem xét cấu trúc của bảng tiếp theo.

MSysIMEXSpecs cấu trúc

Bảng đại diện cho một tập hợp các thông số kỹ thuật đã lưu. Đối với mỗi hàng, bảng mô tả định dạng tổng thể của tệp, tương tự như phần thứ 2 của schema.ini . Tuy nhiên, có những lựa chọn khác nhau cần được xem xét.

  • DateDelim :Xác định dấu phân cách cho các ngày. Nó thường là / hoặc - . Nó có thể chỉ có một hoặc không ký tự.
  • DateFourDigitYear :Trường Có / Không cho biết ngày tháng có được định dạng bằng bốn chữ số cho năm hay không. Nếu được đặt thành có, các giá trị như 10/10/20 sẽ không được coi là ngày hợp lệ.
  • DateLeadingZeros :Một trường Có / Không khác cho biết ngày tháng có các số 0 ở đầu hay không.
  • DateOrder :Xác định định dạng ngày mà chúng tôi muốn sử dụng. Các mã sau hợp lệ:
    • 0 :DMY
    • 1 :DYM
    • 2 :MDY
    • 3 :MYD
    • 4 :YDM
    • 5 :YMD
  • DecimalPoint :Biểu thị ký tự để tách phần tích phân và phần phân số cho một số thập phân. Nó phải có chính xác một ký tự.
  • FieldSeparator :Phân tách các trường trong tệp văn bản. Đối với tệp CSV, nó sẽ là , (một ký tự dấu phẩy). Ngoài ra, nó phải có chính xác một ký tự.
  • FileType :Tương tự với schema.ini ‘S CharacterSet . Như đã đề cập trong bài viết trước, bạn có thể tìm tất cả các trang mã có thể được hỗ trợ trên máy Windows của mình, hãy tìm trong khóa đăng ký Computer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\ . Nó xác định mã hóa của tệp văn bản. Bạn có thể sử dụng cùng một mã định danh trang mã. Tuy nhiên, có một vấn đề. FileType được định nghĩa là một Integer . Do đó, trang mã 65000 (ví dụ:Unicode) sẽ được báo cáo là -536. Để chuyển đổi bất kỳ số nhận dạng trang mã nào lớn hơn 32767, bạn có thể sử dụng công thức CInt("&H" & Hex(x)) và để đảo ngược thao tác, CLng("&H" & Hex(x)) . Ví dụ:chuyển đổi trang mã 65000 sẽ đi qua CInt("&H" & Hex(65000)) để đạt được -536. Để đảo ngược, CLng("&H" & Hex(-536)) để nhận lại 65000.
  • SpecID :Đánh số tự động cho bảng. Lưu ý rằng đây không phải là khóa chính của bảng. Cột này được sử dụng với MSysIMEXColumns.SpecID để liên quan các hồ sơ. Tuy nhiên, không có ràng buộc khóa ngoại nào giữa hai bảng, vì vậy có thể xảy ra việc xóa nhầm.
  • SpecName :Khóa chính của bảng. Nó xác định đặc điểm kỹ thuật duy nhất. Bất cứ khi nào bạn lưu một thông số kỹ thuật, tên bạn cung cấp sẽ được ghi lại trong trường này. Khi bạn nhập hoặc xuất bằng trình hướng dẫn, Access có thể tự động tạo một thông số kỹ thuật mới ngay cả khi bạn không sử dụng Advanced và lưu nó một cách rõ ràng.
  • SpecType :Nó chỉ có thể là 1 để biểu thị tệp được phân tách hoặc 2 để biểu thị tệp có chiều rộng cố định.
  • StartRow :Xác định hàng trên tệp văn bản để bắt đầu quét để nhập. Đó có thể là bất kỳ số nào nên có thể bỏ qua một số dòng ở đầu tệp. Nó có thể hữu ích cho các tệp văn bản không đúng định dạng có tiêu đề không phù hợp.
  • TextDelim :Một ký tự phân tách một giá trị văn bản. Nó có thể được bỏ qua nếu văn bản không được phân tách. Nếu bạn có thể kiểm soát định dạng của các tệp văn bản, bạn nên sử dụng các dấu phân cách văn bản. Tệp văn bản có các dấu phân cách văn bản sẽ vẫn được định dạng tốt ngay cả khi văn bản có chứa các dấu phân tách trường (ví dụ:dấu phẩy) trong văn bản.
  • TimeDelim :Cho biết ký tự phân cách được sử dụng cho thời gian. Nó có thể là bất kỳ ký tự đơn nào hoặc để trống và được đặt mặc định là : (dấu hai chấm).

MSysIMEXColumns cấu trúc

Bảng mô tả các cột riêng lẻ trong tệp văn bản và bất kỳ thuộc tính nào. Điều này gần tương ứng với phần thứ ba của schema.ini . Tuy nhiên, có các tùy chọn bổ sung như lập chỉ mục không tồn tại trong schema.ini .

  • Attributes :Không xác định. Trong các bài kiểm tra của mình, tôi không bao giờ hiểu nó là bất cứ thứ gì ngoài 0 . Nếu bạn biết nó dùng để làm gì và có thể sử dụng nó như thế nào, hãy để lại bình luận.
  • DataType :Loại dữ liệu của cột. Con số phải tương ứng với DAO.DataTypeEnum.
  • FieldName :Tên của cột. Lưu ý rằng Access sẽ mặc định thành FieldN ở đâu N là một số nguyên dương.
  • IndexType :Có thể là 0 để chỉ ra không có chỉ số, 1 để biểu thị chỉ mục thông thường hoặc 2 để biểu thị chỉ mục duy nhất.
  • SkipColumns :Giá trị Boolean cho biết cột có nên được bỏ qua hay không. Nếu bị bỏ qua, nó sẽ không có sẵn để truy vấn hoặc đọc.
  • SpecID :Tương ứng với MSysIMEXSpecs.SpecID số tự động. Lưu ý rằng không có ràng buộc khóa ngoại nào giữa hai bảng. Nếu bạn đã xóa các bản ghi, có thể có các bản ghi không có trong MSysIMEXSpecs bảng.
  • Start :Một số nguyên cho biết thời điểm cột bắt đầu trên tệp văn bản. Nó có ý nghĩa đối với một tệp có chiều rộng cố định. Đối với các tệp được phân tách, Access sẽ vẫn sử dụng vị trí cột của hàng đầu tiên nơi tìm thấy trường để xác định bắt đầu. Hơn nữa, Access sẽ sử dụng cột để ngụ ý thứ tự của các cột.
  • Width :Một số nguyên khác để chi phối kích thước của cột. Trên một tệp có chiều rộng cố định, điều này cũng rất quan trọng. Xin lưu ý rằng Microsoft Access sẽ sử dụng thông tin đó cho các kiểu dữ liệu có độ dài thay đổi như văn bản hoặc nhị phân để định kích thước cột cho phù hợp ngay cả trên tệp được phân tách.

Chuỗi kết nối sử dụng thông số kỹ thuật:DSN tham số

Trong bài viết trước, bạn đã thấy rằng không có thay đổi nào đối với chuỗi kết nối để sử dụng tệp schema.ini. Chúng tôi đã ngầm hiểu đến schema.ini đơn giản bằng cách đảm bảo rằng nó tồn tại trong cùng một thư mục có tệp văn bản mà chúng tôi đang liên kết hoặc đang mở. Tuy nhiên, để sử dụng các thông số kỹ thuật đã lưu từ hệ thống, chúng tôi yêu cầu chúng tôi cung cấp thông tin trong kết nối. Chúng tôi thực hiện việc này bằng cách điền DSN tham số. Giá trị phải tham chiếu đến tên của thông số kỹ thuật đã lưu, như được ghi trong MSysIMEXSpecs.SpecName cột.

Đây là một mẫu:

Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Text;DSN=Products Link Specification;IMEX=1;DATABASE=C:\Links")

Access sẽ yêu cầu cung cấp cả tham số DSN và tham số IMEX trong chuỗi kết nối. Nếu bạn cố gắng bỏ qua IMEX , bạn sẽ gặp lỗi về việc Access không thể tìm thấy thông số kỹ thuật, mặc dù thông số kỹ thuật tồn tại trong MSysIMEXSpecs bàn. Cũng theo đó, bảng phải chứa một bản ghi với SpecName chứa cùng một giá trị được cung cấp trong DSN tham số.

Như đã lưu ý trong bài viết trước, các tệp văn bản riêng lẻ được coi như một “bảng” trong “cơ sở dữ liệu” của thư mục. Vì vậy, mặc dù chuỗi kết nối không trỏ đến một tệp văn bản cụ thể, chuỗi kết nối sẽ sử dụng các thông số kỹ thuật được chỉ định trên bất kỳ tệp văn bản nào được mở thông qua kết nối.

Mặc dù có thể sử dụng các tham số khác như đã thảo luận trong cùng một bài viết, nhưng bạn nên lưu ý rằng khi xung đột, đặc tả đã lưu sẽ được ưu tiên hơn chuỗi kết nối. Vì lý do đó, tốt nhất bạn nên sử dụng bộ thông số tối thiểu cần thiết để kết nối thành công với tệp văn bản và để các thông số kỹ thuật đã lưu thực hiện công việc mô tả cách đọc tệp văn bản.

Kết luận

Bạn đã học được một cách khác để mô tả cấu trúc của tệp văn bản mà không cần sử dụng tệp bên ngoài. Chúng tôi đã xem xét cách Access sử dụng hai bảng hệ thống để lưu trữ các thông số kỹ thuật. Cuối cùng, bạn cũng đã học cách chỉ định các thông số kỹ thuật đã lưu bằng DSN tham số. Tại thời điểm này, chúng tôi đã trình bày mọi thứ chúng tôi cần biết về liên kết hoặc mở tệp văn bản trong Access. Trong phần tiếp theo, chúng tôi sẽ tổng hợp các thông tin đã học trong phần còn lại của loạt bài. Chúng tôi cũng sẽ xem xét việc sử dụng các chuỗi kết nối trong truy vấn Access để có phương pháp tiếp cận không mã.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lưu cơ sở dữ liệu làm mẫu trong Access 2016

  2. Tham gia cùng Tôi với Khách mời Đặc biệt Michal Bar từ Nhóm MS Access!

  3. Mẹo về Bảng Microsoft Access - Thủ thuật &Nguyên tắc Phần III

  4. Cách xóa mật khẩu khỏi cơ sở dữ liệu trong Access 2016

  5. Tham gia cùng tôi vào Thứ Ba, ngày 9 tháng 4 để biết Tin tức mới nhất về Microsoft Access