Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để truy cập vào nhiều cơ sở dữ liệu trong một truy vấn SQL trong VB 3,0

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:113701
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài viết này nói về các sản phẩm mà Microsoft không còn hỗ trợ nữa. Do đó, bài viết này được cung cấp "nguyên bản" và sẽ không được cập nhật.
TÓM TẮT
Khi truy cập vào dữ liệu từ nhiều hơn một nguồn dữ liệu cùng một lúc trong mộttruy vấn duy nhất, bạn sẽ rất có thể muốn sử dụng nhanh nhất và hầu hết nói chungphương pháp - cách gắn các bảng từ các nguồn dữ liệu khác nhau vào một đĩa đơnMicrosoft Access cơ sở dữ liệu. Vào thời điểm đó, truy vấn mà span thaûocơ sở dữ liệu có thể được xây dựng như thể tất cả các bảng, đính kèm hoặc địa phương,địa phương để cơ sở dữ liệu Microsoft Access.
Gắn bàn có hiệu suất mạnh mẽ và quản trị lợi thế--đặc biệt là nếu bạn đang thực hiện truy vấn liên tục. Tuy nhiên, đôi khi bạncó thể muốn đi theo con đường chậm hơn được mô tả trong bài viết này khi bạn cầnđể sử dụng phi thể thức truy vấn đó bao gồm hai hoặc nhiều cơ sở dữ liệu. Bài viết nàygiải thích làm thế nào để xây dựng các truy vấn cơ sở dữ liệu qua chậm hơn.
THÔNG TIN THÊM
Có hai phương pháp bạn có thể sử dụng để xác định một cơ sở dữ liệu bên ngoài là mộtđó là hiện đang mở.

Phương pháp One

Microsoft Access SQL cung cấp một khoản IN cho phép bạn kết nối với mộtsở dữ liệu bên ngoài (cơ sở dữ liệu khác với cơ sở dữ liệu hiện nay). Phương pháp nàygiới, tuy nhiên, hạn bạn chỉ có một cơ sở dữ liệu bên ngoài một lúc.

Mệnh đề IN có hai phần, cơ sở dữ liệu tên và kết nối chuỗi. Cơ sở dữ liệutên là một đường dẫn đủ điều kiện để các tập tin hoặc thư mục có chứa cáccơ sở dữ liệu tập tin và kết nối chuỗi chứa cơ sở dữ liệu kiểu và kháccác thông số khi cần thiết.

Để chỉ định một cơ sở dữ liệu bên ngoài, gắn thêm một dấu chấm phẩy (;) để kết nốimột phần, và kèm theo nó với một hoặc hai dấu ngoặc kép. Sau đâyVí dụ sử dụng các khoản IN để chỉ định một bảng (khách hàng) trong một dBASE IVcơ sở dữ liệu (bán hàng):
SELECT Customers.CustomerIDFROM CustomersIN "C:\DBASE\DATA\SALES" "dBASE IV;"WHERE Customers.CustomerID Like "A*"				
Trong Visual Basic, bạn có thể tạo ra một dynaset từ ví dụ trên bởibằng cách sử dụng Visual Basic mã sau đây:
Dim db As DatabaseDim ds As DynasetDim sql As String' Open a database:Set db = OpenDatabase("C:\VB\BIBLIO.MDB")' Build the select statement, referencing the external dBASE IV file:sql = "SELECT Customers.CustomerID, FROM Customers"sql = sql & " IN 'C:\DBASE\DATA\SALES' 'dBASE IV;'"sql = sql & " WHERE Customers.CustomerID Like 'A*'"' Create the recordset:Set ds = db.CreateDynaset(sql)' Loop through and display the records:While Not ds.EOF   For i = 0 To ds.Fields.Count - 1      Print ds(i); "  ";   Next i   Print   ds.MoveNextWend				

Phương pháp hai

Microsoft Access cơ tích hợp vào Visual Basic Phiên bản 3.0 có thểphân tích cú pháp truy vấn SQL để bao gồm các chuỗi kết nối được sử dụng để mở một cơ sở dữ liệuđối tượng. Khoản từ các lệnh SQL chấp nhận hoàn toàn đủ điều kiệnbảng tên, cho phép các vị trí của chuỗi kết nối tại quảng trườngkhung trước tên bảng. Kết nối chuỗi được tách ra từ cácbảng tên bởi một khoảng thời gian. Phương pháp này cho phép bạn kết nối với nhiềubên ngoài cơ sở dữ liệu cùng một lúc.

Bạn có thể truy cập bất kỳ bảng trong một trong hai cơ sở dữ liệu bên trong một lựa chọn duy nhấtnội dung bằng cách sử dụng cú pháp này:
SELECT tbl1.fld1,tbl2.fld1FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,[dbase iii;database=C:\DBASE3].tbl2WHERE tbl1.fld1 = tbl2.fld1				
Ví dụ này tham gia hai bàn từ hai databases khác nhau, một trong một ODBCdữ liệu nguồn và khác một dBASE III trong bảng thư mục C:\DBASE3.

Nói chung, chuỗi kết nối được sử dụng ở đây trong dấu ngoặc vuông là giống hệt nhau đểthuộc tính kết nối của một TableDef khi gắn hoặc tham số thứ tưtuyên bố OpenDatabase. Nó sẽ ở một trong ba hình thức tùy thuộc vàotrên cơ sở dữ liệu (ODBC, ISAM hoặc Microsoft Access).

Cho ODBC cơ sở dữ liệu:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;PWD=<strong password>]				
Cho ISAM cơ sở dữ liệu:
   [paradox 3.X;database=C:\DATABASE\PARADOX3]   [foxpro 2.5;database=C:\DATABASE\FOX25]   [dbase iv;database=C:\DATABASE\DBASEIV]   [btrieve;database=C:\DATABASE\BTRIEVE\FILE.DDF]				
Đối với cơ sở dữ liệu Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]				
Chú ý dấu chấm phẩy hàng đầu cho cơ sở dữ liệu Microsoft Access là quan trọng.Điều này là chính xác cùng một chuỗi cần thiết để điền vào các tài sản kết nối của mộtTableDef đối tượng trước khi gắn bảng với một định dạng Microsoft Accesscơ sở dữ liệu. Dấu chấm phẩy hàng đầu là một giữ chỗ cho cơ sở dữ liệu không cần thiếtđịnh dạng đặc điểm kỹ thuật và cho phép các "cơ sở dữ liệu =" khoản để làm theo.

Ví dụ mã của một truy vấn cơ sở dữ liệu nhiều

Ví dụ này tạo ra một dynaset gia nhập hai bàn từ hai dữ liệu nguồn,một trong những máy chủ SQL và các cơ sở dữ liệu Microsoft Access. TestTabbảng là ngày SQL Server và bảng T1 là trong Microsoft Accesscơ sở dữ liệu.

Chú ý Bạn phải thay đổi <username> và <strong password=""> với các giá trị đúng trước khi bạn chạy mã này. Đảm bảo rằng tên người dùng có quyền thích hợp để thực hiện thao tác này trên cơ sở dữ liệu.</strong></username>
Dim db As databaseDim ds As dynasetDim sql As String, Uid$, Pwd$Set db = OpenDatabase("C:\VB\BIBLIO.MDB")' This obtains a valid database object. It does not have to be a Microsoft' Access database; the following works equally as well:' Set db = OpenDatabase("C:\FOXPRO25\", 0, 0, "foxpro 2.5")' The values here are hard-coded, but you could prompt the user for their' user id and password.Uid$ = <username>Pwd$ = <strong password>' Build the select statement, concatenating the user's id and password:sql = "SELECT T1.F2, TestTab.F2, TestTab.F3"sql = sql & " FROM [;database=C:\ACCESS\DB1.MDB].T1 , "sql = sql & " [odbc;dsn=texas;database=playpen;Username=" & Uid$sql = sql & ";PWD=" & Pwd$ & "].TestTab"sql = sql & " WHERE T1.F1 = TestTab.F1"' Execute the select query:Set ds = db.CreateDynaset(sql)' Loop through and display the records:While Not ds.EOF   For i = 0 To ds.Fields.Count - 1      Print ds(i); "  ";   Next i   Print   ds.MoveNextWend				

Đặc biệt lưu ý liên quan đến bảo vệ cơ sở dữ liệu Microsoft Access

Nếu cơ sở dữ liệu Microsoft Access bảo đảm, ứng dụng Visual Basicphải thực thi các lệnh SetDataAccessOption và SetDefaultWorkspacetrước khi thực hiện bất kỳ dữ liệu truy cập liên quan đến mã. Điều này là cần thiết cho mộtthành công đăng nhập vì Microsoft Access không sử dụng các "tên người dùng =" và"PWD =" phần của chuỗi kết nối. Ví dụ:
   ' Establish the location of the SYSTEM.MDA files if in another   ' directory other than the \WINDOWS directory:   SetDataAccessOption 1, "C:\MYDIR\MYAPP.INI"   ' Log on to a valid account:   SetDefaultWorkspace "admin", "<password>"				
Khi điều này được thực hiện, truy vấn cơ sở dữ liệu Microsoft Access bảo đảm sẽthành công. Tuy nhiên, lưu ý vì của quá trình này, là có một built-ingiới hạn cho kỹ thuật phi thể thức này; chỉ có một bảo đảm Microsoft Accesscơ sở dữ liệu có thể được truy cập với một truy vấn quảng cáo hoc. Điều này là bởi vì một khi cácMicrosoft Access cơ được khởi tạo trong một phiên làm việc, với một người dùng cụ thểtổ hợp tên và mật khẩu, những giá trị được giữ lại cho đến khi phiên họp(Visual Basic chương trình chạy được hoặc phiên họp của môi trường, VB.»EXE)kết thúc.

Tuy nhiên, nếu nhiều hơn hai bảo đảm Microsoft Access cơ sở dữ liệu cần phảitruy cập cho một truy vấn, phương pháp tốt nhất là để di chuyển các bảng thực tế từbảo đảm cơ sở dữ liệu vào một cơ sở dữ liệu bảo đảm. Để thực hiện việc này, bạn cần phải thay đổimật khẩu cho tài khoản quản trị để "" tạm thời trong việc chuyển giaohoạt động kinh doanh. Sau đó bạn có thể sử dụng Visual Basic mã, chẳng hạn như trong dữ liệutruy cập mẫu Visdata, để sao chép các bảng.
THAM KHẢO
Để có thêm thông tin về an ninh Microsoft Access, bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
105990Thông tin: Làm thế nào Visual Basic 3,0 xử lý bảo mật thiết lập bởi Microsoft Access

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 113701 - Xem lại Lần cuối: 08/17/2011 12:52:00 - Bản sửa đổi: 2.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtvi
Phản hồi
tml>