2010-06-22 66 views
5

Chúng tôi đang sử dụng MS Access làm giao diện người dùng báo cáo cho Oracle. Dữ liệu được truy cập thông qua kết nối ODBC và có hai bảng được nối kết trong Access to Oracle là các bảng dữ liệu thô. Tôi muốn có thể thiết lập kết nối và liên kết các bảng từ bên trong tệp Access. Bằng cách đó người dùng không phải lo lắng về việc thiết lập DSN cho kết nối ODBC (hầu hết trong số họ không phải là người dùng rất kỹ thuật, và sẽ yêu cầu nắm tay cho một cái gì đó như thế này), và cuối cùng chúng ta có thể truy cập tập tin Access các môi trường thử nghiệm khác nhau và tạo báo cáo.Lập trình tạo kết nối ODBC và các bảng liên kết trong MS Access

Có thể có kết nối cơ sở dữ liệu được tạo tự động khi tệp được mở và tôi có thể tự động thay đổi nơi các Bảng được liên kết của tôi liên kết đến không?

Trả lời

11

Bạn muốn kết nối bảng được liên kết với DSN ít hơn từ Access. Có thể và tôi đã thực hiện nó nhưng tôi không có mã với tôi. Tôi nghĩ rằng nó là một cái gì đó như dưới đây (điều này sử dụng một nguồn SQL Server nhưng Oracle sẽ chỉ có một chuỗi kết nối hơi khác nhau). Để có (các) bảng được tạo khi khởi động, bạn sẽ cần phải kiểm tra sự tồn tại của từng tabledef trước khi thử tạo lại chúng và gọi một chương trình con như dưới đây khi cơ sở dữ liệu Access mở.

Function LinkTables() 
    Dim DB As Database, tDef As TableDef 
    Set DB = CurrentDb 
    Set tDef = DB.CreateTableDef("YourAccessLinkedTableNameHere") 
    tDef.Connect = "ODBC;Driver={SQL Server};Server=srvname;Database=dbname;UID=sqluserid;PWD=sqlpwd" 
    tDef.SourceTableName = "dbo.YourSourceTableNameHere" 
    DB.TableDefs.Append tDef 
End Function 
+1

Lưu ý rằng định dạng chuỗi kết nối khác nhau đối với mọi cơ sở dữ liệu trên mạng. Nhìn vào đây để tham khảo: http://www.carlprothman.net/Default.aspx?tabid=81 –

+1

Nếu bạn không cần phải biết những gì đang xảy ra trong lớp UI của Access, sau đó thay thế: Set DB = CurrentDb - to: Đặt DB = Workspaces (0) .Databases (0) hoặc thành: Đặt DB = dbEngine (0) (0) Bởi vì nó nhanh hơn đáng kể; nhanh hơn năm nghìn lần. –

Các vấn đề liên quan