Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet

Με τον τρόπο για να αποκτήσουν πρόσβαση σε πολλές βάσεις δεδομένων σε ένα ερώτημα SQL σε VB 3.0

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:113701
Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής Βάσης (KB) που έχει αποσυρθεί
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Περίληψη
Όταν αποκτάτε πρόσβαση σε δεδομένα από περισσότερα από ένα αρχείο προέλευσης δεδομένων ταυτόχρονα σε ένα μονό ερώτημα, ίσως θελήσετε να χρησιμοποιήσετε τη μέθοδο ταχύτερο και πιο γενικές--επισύναψη των πινάκων από τις διαφορετικές προελεύσεις δεδομένων σε μια μεμονωμένη βάση δεδομένων της Microsoft Access. Σε αυτό το σημείο, ερωτήματα που εκτείνονται σε δύο διαφορετικές βάσεις δεδομένων μπορεί να δημιουργηθεί σαν όλους τους πίνακες, συνημμένο ή τοπικές, τοπική βάση δεδομένων της Microsoft Access.
Προσάρτηση πινάκων διαθέτει ισχυρές επιδόσεις και διαχείρισης πλεονεκτήματα--, ειδικά εάν που εκτελείτε επανειλημμένα ερωτήματα. Ωστόσο, μερικές φορές μπορεί να θέλετε να αναλάβετε την πιο αργή δρομολόγηση που περιγράφεται σε αυτό το άρθρο, όταν χρειάζεται να χρησιμοποιήσετε ad hoc ερωτήματα που περιλαμβάνουν δύο ή περισσότερες βάσεις δεδομένων. Αυτό το άρθρο εξηγεί πώς μπορείτε να δημιουργήσετε αυτά τα ερωτήματα βάσης δεδομένων-σύντομη χαμηλότερες.
Περισσότερες πληροφορίες
Υπάρχουν δύο μέθοδοι που μπορείτε να χρησιμοποιήσετε για να καθορίσετε μια βάση δεδομένων έξω από αυτήν που είναι ανοιχτή αυτήν τη στιγμή.

Πρώτη μέθοδος

Microsoft SQL της Access παρέχει έναν όρο in που σας επιτρέπει να συνδεθείτε με μια εξωτερική βάση δεδομένων (μια βάση δεδομένων διαφορετική από την τρέχουσα βάση δεδομένων). Αυτή η μέθοδος, ωστόσο, περιορισμός που μόνο μια εξωτερική βάση δεδομένων κάθε φορά.

Τον όρο IN αποτελείται από δύο τμήματα, όνομα βάσης δεδομένων και η συμβολοσειρά σύνδεσης. Το όνομα της βάσης δεδομένων είναι έγκυρη διαδρομή για το αρχείο ή τον κατάλογο που περιέχει το αρχείο βάσης δεδομένων και η συμβολοσειρά σύνδεσης περιέχει τον τύπο της βάσης δεδομένων και άλλες παραμέτρους, ανάλογα με τις ανάγκες.

Για να καθορίσετε μια εξωτερική βάση δεδομένων, να προσαρτήσετε ένα ερωτηματικό (;) για σύνδεση στο τμήμα και περικλείστε το σε απλά ή διπλά εισαγωγικά. Το ακόλουθο παράδειγμα χρησιμοποιεί τον όρο IN για να καθορίσετε έναν πίνακα (πελάτες) σε μια βάση δεδομένων IV dBASE (ΠΩΛΗΣΕΙΣ):
SELECT Customers.CustomerIDFROM CustomersIN "C:\DBASE\DATA\SALES" "dBASE IV;"WHERE Customers.CustomerID Like "A*"				
Στη Visual Basic, μπορείτε να δημιουργήσετε ένα δυναμοσύνολο από το παραπάνω παράδειγμα, χρησιμοποιώντας τον παρακάτω κώδικα της Visual Basic:
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				

Δεύτερη μέθοδος

Ο μηχανισμός Microsoft Access ενσωματωθεί σε Visual Basic έκδοση 3.0 μπορούν να αναλύουν ερωτήματα SQL ώστε να περιλαμβάνει τη συμβολοσειρά σύνδεσης που χρησιμοποιείται για το άνοιγμα ενός αντικειμένου βάσης δεδομένων. Στον όρο From της δήλωσης SQL δέχεται ένα όνομα έγκυρο πίνακα, το οποίο επιτρέπει την τοποθέτηση της συμβολοσειράς σύνδεσης σε τετράγωνες αγκύλες πριν από το όνομα του πίνακα. Η συμβολοσειρά σύνδεσης διαχωρίζεται από το όνομα του πίνακα από μια τελεία. Αυτή η μέθοδος σάς επιτρέπει να συνδεθείτε με πολλές εξωτερικές βάσεις δεδομένων ταυτόχρονα.

Μπορείτε να αποκτήσετε πρόσβαση σε οποιονδήποτε πίνακα με έναν από δύο βάσεις δεδομένων μέσα σε μια μεμονωμένη δήλωση επιλογής χρησιμοποιώντας την ακόλουθη σύνταξη:
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				
Στο παράδειγμα αυτό συνδέει δύο πίνακες από δύο διαφορετικές βάσεις δεδομένων, ένα αρχείο προέλευσης δεδομένων ODBC και το άλλο έναν πίνακα dBASE III στον κατάλογο C:\DBASE3.

Σε γενικές γραμμές, η συμβολοσειρά σύνδεσης εδώ χρησιμοποιούνται σε τετράγωνες αγκύλες είναι πανομοιότυπη με την ιδιότητα Connect ενός αντικειμένου TableDef, κατά την επισύναψη ή την τέταρτη παράμετρο της πρότασης OpenDatabase. Θα είναι σε μία από τις τρεις μορφές ανάλογα με τη βάση δεδομένων (ODBC, ISAM ή η Microsoft Access).

Για βάσεις δεδομένων ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;PWD=<strong password>]				
Για βάσεις δεδομένων ISAM:
   [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]				
Για βάσεις δεδομένων της Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]				
ΣΗΜΕΙΩΣΗτο ελληνικό ερωτηματικό στην αρχή για τις βάσεις δεδομένων της Microsoft Access είναι σημαντική.Αυτό είναι ακριβώς την ίδια συμβολοσειρά που είναι απαραίτητο να συμπληρώσετε την ιδιότητα Connect ενός αντικειμένου TableDef, πριν από την προσάρτηση του πίνακα σε μια μορφή βάσης δεδομένων Microsoft Access. The leading semicolon is a place holder for the unneeded databaseformat specification and allows the "database=" clause to follow.

Code Example of a Multiple Database Query

This example creates a dynaset joining two tables from two data sources,one an SQL Server and the other a Microsoft Access database. The TestTabtable is on the SQL Server and the T1 table is in the Microsoft Accessdatabase.

ΣΗΜΕΙΩΣΗYou must change <username> and <strong password=""> to the correct values before you run this code. Make sure that Username has the appropriate permissions to perform this operation on the database.</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				

Special Note Concerning Secured Microsoft Access Databases

If the Microsoft Access database is secured, the Visual Basic applicationmust execute the SetDataAccessOption and SetDefaultWorkspace commandsbefore executing any data access related code. This is required for asuccessful logon because Microsoft Access does not use the "Username=" and"PWD=" sections of the connect string. Για παράδειγμα:
   ' 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>"				
When this is done, queries to the secured Microsoft Access database willsucceed. However, note that because of this process, there is a built-inlimitation for this ad hoc technique; only one secured Microsoft Accessdatabase can be accessed with an ad hoc query. This is because once theMicrosoft Access engine is initialized in a session, with a particular username and password combination, those values are retained until the session(Visual Basic executable program or session of the environment, VB.EXE)ends.

However, if more than two secured Microsoft Access databases need to beaccessed for a query, the best approach is to move the actual tables fromsecured databases into one secured database. To do this, you need to changethe password for the admin account to "" temporarily during the transferoperations. Then you could use Visual Basic code, such as that in the dataaccess sample Visdata, to copy the tables.
Αναφορές
For additional information about Microsoft Access security, click the following article number to view the article in the Microsoft Knowledge Base:
105990INFO: How Visual Basic 3.0 Handles Security Set by Microsoft Access

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί με μηχανική μετάφραση

Ιδιότητες

Αναγνωριστικό άρθρου: 113701 - Τελευταία αναθεώρηση: 12/18/2010 23:21:00 - Αναθεώρηση: 2.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtel
Σχόλια
ody>clickstreamTracker.init();