Cara mengakses beberapa database dalam SQL permintaan di VB 3.0

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 113701
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Ketika mengakses data dari lebih dari satu sumber data secara bersamaan di satu permintaan, Anda akan mungkin ingin menggunakan tercepat dan paling umum metode--melampirkan tabel dari sumber data yang berbeda untuk satu Microsoft Access database. Pada saat itu, permintaan yang span dua berbeda database dapat dibangun seolah-olah semua tabel, terpasang atau lokal, lokal ke Microsoft Access database.
Melampirkan tabel memiliki kinerja yang kuat dan administratif keuntungan-- terutama jika Anda mengeksekusi query berulang kali. Namun, kadang-kadang Anda mungkin ingin mengambil rute yang lebih lambat yang dijelaskan dalam artikel ini ketika Anda memerlukan untuk menggunakan ad hoc pertanyaan yang mencakup dua atau lebih database. Artikel ini menjelaskan bagaimana membangun ini lebih lambat lintas-database queries.

INFORMASI LEBIH LANJUT

Ada dua metode yang dapat Anda gunakan untuk menentukan sebuah database di luar yang Itulah saat ini terbuka.

Metode satu

Microsoft akses SQL menyediakan IN klausul yang memungkinkan Anda untuk menghubungkan ke basis data eksternal (database selain database saat ini). Metode ini , namun, membatasi Anda untuk hanya satu eksternal database pada satu waktu.

Klausul IN memiliki dua bagian, nama database dan menghubungkan string. Database nama adalah sepenuhnya kualifikasi path ke file atau direktori yang berisi database file dan connect string berisi tipe database dan lain parameter yang diperlukan.

Untuk menentukan basis data eksternal, tambahkan tanda titik koma (;) untuk connect bagian, dan sertakan dengan tanda kutip tunggal atau ganda. Berikut contoh menggunakan IN klausul untuk menetapkan meja (pelanggan) di dBASE IV database (penjualan):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
Dalam Visual Basic, Anda dapat membuat dynaset dari contoh di atas dengan menggunakan kode Visual Basic berikut:
Dim db As Database
Dim ds As Dynaset
Dim 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.MoveNext
Wend
				

Metode dua

Microsoft Access mesin yang dimasukkan ke dalam Visual Basic versi 3.0 dapat mengurai SQL query untuk menyertakan string connect yang digunakan untuk membuka database objek. Klausa dari pernyataan SQL menerima memenuhi syarat nama tabel, yang memungkinkan penempatan string connect di square kurung sebelum nama tabel. Connect string dipisahkan dari nama tabel dengan sebuah periode. Metode ini memungkinkan Anda untuk menghubungkan ke beberapa database eksternal pada waktu yang sama.

Anda dapat mengakses setiap meja di salah satu dari dua database di dalam Pilih satu pernyataan oleh menggunakan sintaks ini:
SELECT tbl1.fld1,tbl2.fld1
FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,
[dbase iii;database=C:\DBASE3].tbl2
WHERE tbl1.fld1 = tbl2.fld1
				
Contoh ini bergabung dengan dua tabel dari dua database yang berbeda, salah satu ODBC sumber data dan yang lain dBASE III tabel di direktori C:\DBASE3.

Secara umum, string connect yang digunakan di sini dalam kurung identik dengan properti Connect TableDef saat melampirkan atau parameter keempat pernyataan OpenDatabase. Akan di salah satu dari tiga bentuk bergantung pada database (ODBC, Islam TERPADU, atau Microsoft Access).

Untuk ODBC database:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
Untuk ISAM database:
   [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]
				
Untuk Microsoft Access database:
   [;database=C:\VB\BIBLIO.MDB]
				
Catatan koma terkemuka untuk Microsoft Access database penting. Ini adalah persis sama string diperlukan untuk mengisi milik Connect TableDef obyek sebelum melampirkan meja untuk format Microsoft Access database. Koma terkemuka adalah tempat dudukan untuk database tidak diperlukan format spesifikasi dan memungkinkan "database =" klausul untuk mengikuti.

Kode contoh dari beberapa Database Query

Contoh ini menciptakan dynaset yang bergabung dengan dua tabel dari sumber data dua, satu SQL Server dan Microsoft Access database lain. TestTab tabel SQL Server dan meja T1 dalam Microsoft Access database.

Catatan Anda harus mengubah <username>dan <strong password="">ke nilai yang benar sebelum Anda menjalankan kode ini. Pastikan bahwa nama pengguna memiliki izin yang sesuai untuk melakukan operasi ini pada database. </strong></username>
Dim db As database
Dim ds As dynaset
Dim 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.MoveNext
Wend
				

Khusus catatan mengenai aman Microsoft Access database

Jika Microsoft Access database dijamin, aplikasi Visual Basic harus mengeksekusi perintah SetDataAccessOption dan SetDefaultWorkspace sebelum mengeksekusi data mengakses kode yang terkait. Hal ini diperlukan untuk berhasil logon karena Microsoft Access tidak menggunakan "Username =" dan "PWD =" bagian dari connect string. Misalnya:
   ' 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>"
				
Ketika hal ini dilakukan, query ke database Microsoft Access aman akan berhasil. Namun, perlu diketahui bahwa karena proses ini, ada built-in pembatasan untuk teknik ini ad hoc; satu-satunya aman Microsoft Access database yang dapat diakses dengan permintaan ad hoc. Hal ini karena setelah Microsoft Access mesin diinisialisasi di sesi, dengan pengguna tertentu nama dan sandi kombinasi, nilai-nilai tersebut dipertahankan sampai sesi (Visual Basic eksekusi program atau sesi lingkungan, BASIC.EXE) berakhir.

Namun, jika lebih dari dua aman Microsoft Access database harus diakses untuk permintaan, pendekatan yang terbaik adalah untuk memindahkan meja sebenarnya dari database aman ke dalam satu database yang aman. Untuk melakukan ini, Anda perlu mengubah sandi untuk account admin untuk "" sementara selama transfer operasi. Kemudian Anda dapat menggunakan kode Visual Basic, seperti yang di data akses sampel Visdata, untuk menyalin tabel.

REFERENSI

Untuk informasi tambahan tentang keamanan Microsoft Access, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
105990INFO: Bagaimana Visual Basic 3.0 pegangan keamanan ditetapkan oleh Microsoft Access

Properti

ID Artikel: 113701 - Kajian Terakhir: 14 September 2011 - Revisi: 2.0
Kata kunci: 
kbhowto kbsqlprog kbmt KB113701 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:113701
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com