VB 3. 0'da bir SQL sorguda birden çok veritabanları Access nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 113701 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Aynı anda tek bir sorguda birden fazla veri kaynağından veri erişirken, tabloları, farklı veri kaynaklarından tek bir Microsoft Access veritabanına eklenmesi hızlı ve en genel yöntemi--kullanmak istersiniz. Tüm tablolar, eklenmiş veya yerel Microsoft Access veritabanı için yerel gibi iki farklı veritabanı sorgularını o noktada oluşturulması.
Özellikle, sorguları art arda yürütme tablolar ekleme güçlü performans ve yönetim avantajları--sahipse. Ancak, bazen, iki ya da daha fazla veritabanı kapsayacak geçici bir sorgu kullanmak istediğinizde, bu makalede açıklanan yavaş yol almak isteyebilirsiniz. Bu makalede, bu yavaş geçici veritabanı sorguları oluşturma açıklanmaktadır.

Daha fazla bilgi

Şu anda açık olan bir dışında bir veritabanı belirtmek için kullanabileceğiniz iki yöntem vardır.

Yöntem Bir

Microsoft Access SQL (geçerli veritabanı dışında bir veritabanı) bir dış veritabanına bağlanmasına olanak tanıyan bir IN yan tümcesi sağlar. Bu yöntemi ancak, yalnızca bir dış veritabanına bir anda sınırlamak.

IN yan tümcesi, veritabanı adı ve bağlantı dizesi iki bölüm vardır. Veritabanı adı dosya veya dizin veritabanı dosyasını da içeren tam olarak nitelenmiş bir yol ve veritabanı türü ve diğer parametreleri gerektiği gibi bağlantı dizesini içerir.

Bir dış veritabanı belirlemek için <a0></a0>, bir noktalı virgül (;) append bağlantı için kısım ve onu tek veya çift tırnak işaretleri içine alın. Aşağıdaki örnek IN yan tümcesi dBASE IV (SATıŞ) veritabanında bir tablonun (Müşteriler) belirtmek için kullanır:
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
Visual Basic, dinamik küme Yukarıdaki örnekte aşağıdaki Visual Basic kodu kullanarak oluşturabileceğiniz:
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
				

Yöntem İki

Microsoft Access altyapısı sürüm 3.0 Visual Basic içinde dahil, bir veritabanı nesnesi açmak için kullanılan bağlantı dizesini dahil etmek için SQL sorguları ayrıştırabilir. SQL deyiminin FROM yan tümcesinde, önce bir tablo adı köşeli ayraçlar içinde bağlantı dizesini yerleşimini izin veren bir tam olarak nitelenmiş bir tablo adı kabul eder. Bağlantı dizesini tablo adı noktayla ayrılmış. Bu yöntem, aynı anda birden çok dış veritabanlarına bağlanmanıza olanak tanır.

Bu sözdizimini kullanarak, tek bir select deyimi içinde iki veritabanlarının ya da herhangi bir tabloda erişebilirsiniz:
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
				
Bu örnek iki tablo iki farklı veritabanlarından katılırsa, bir ODBC veri kaynağı diğer bir dBASE ııı dizinde C:\DBASE3 tablo ve.

Genel olarak, burada köşeli ayraç içinde kullanılan bağlantı dizesini eklenirken bir TableDef <a1>Bağlan</a1> özelliğini veya OpenDatabase deyiminin dördüncü parametre için aynıdır. Veritabanı (ODBC, ISAM veya Microsoft Access) bağlı olarak üç formlarından birinde olacaktır.

ODBC veritabanları:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
için ISAM veritabanları:
   [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çin Microsoft Access veritabanları:
   [;database=C:\VB\BIBLIO.MDB]
				
Not başta noktalı virgül Microsoft Access veritabanları için önemlidir. Bu tablo biçimi Microsoft Access veritabanına eklemeden önce TableDef nesnesinin Connect özelliğine doldurmak için gereken tam olarak aynı dizedir. Başta noktalı virgül gerekli olmayan veritabanı biçim belirtimi için bir yer tutucu ve sağlar "veritabanı =" izlemek için yan tümcesi.

Kod örneği, birden çok veritabanı sorgu

Bu örnek, iki veri kaynaklarından, tek bir SQL Server ve diğer Microsoft Access veritabanındaki iki tablo birleştirme dinamik küme oluşturur. TestTab tablosu SQL Server'da ve T1 tablo Microsoft Access veritabanında.

Not<username>Değiştirmelisiniz < güçlü parola > ve bu kodu çalıştırmadan önce doğru değerler için. Kullanıcı adı, veritabanında bu işlemi gerçekleştirmek için uygun izinlere sahip olduğundan emin olun.
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
				

Özel not ilgili Microsoft Access veritabanları güvenli...

Microsoft Access veritabanı güvenli ise, Visual Basic uygulamasını SetDataAccessOption yürütmelisiniz ve ilgili kodu SetDefaultWorkspace komutları, önce veri yürütme erişimi. Microsoft Access'i kullanın başarılı bir oturum açma için gerekli olmasıdır "kullanıcıadı ="ve"PWD =" bölümleri bağlanma dizesi. Örneğin:
   ' 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>"
				
Bu olduğunda, güvenli bir Microsoft Access veritabanına sorgular başarısız olur. Ancak, Not nedeniyle, bu işlem, bu ad hoc teknik için yerleşik bir sınırlama yoktur; yalnızca bir Microsoft Access veritabanının güvenli, ad hoc sorgusu ile erişilebilir. Bunun nedeni, bu değerler, Microsoft Access Altyapısı başlatıldı olan bir kullanıcı adı ve parola bileşimini, bir oturumda bir kez (Visual Basic yürütülebilir bir program veya ortamının VB.EXE oturum) oturumu kadar korunur sona erdirir.

Ikiden daha güvenli bir Microsoft Access veritabanları için sorgu erişilmesi gerekiyorsa, ancak en iyi yaklaşım gerçek tablo güvenli veritabanlarından güvenli bir veritabanına taşımaktır. Bunu yapmak için <a0></a0>, yönetici hesabına ait parolayı değiştirmeniz gerekir "" geçici olarak aktarım işlemleri sırasında. Sonra Visual Basic kodu, veri erişim örneğinde, Visdata gibi tabloları kopyalamak için kullanabilirsiniz.

Referanslar

Güvenlik hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
105990BILGI: Microsoft Access tarafından nasıl Visual Basic 3.0 tanıtıcıları güvenlik ayarla

Özellikler

Makale numarası: 113701 - Last Review: 1 Eylül 2006 Cuma - Gözden geçirme: 3.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 3.0 Professional Edition
Anahtar Kelimeler: 
kbmt kbhowto kbsqlprog KB113701 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:113701
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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