HOWTO: Bypass Login Prompt When Opening Linked Table
ID: Q177594
|
The information in this article applies to:
-
Microsoft Visual Basic Professional and Enterprise Editions for Windows, versions 5.0, 6.0
-
Microsoft Visual Basic Professional and Enterprise Editions, 16-bit and 32-bit, for Windows, version 4.0
-
Microsoft Visual Basic Professional Edition for Windows, version 3.0
-
Microsoft Access versions 1.0, 1.1, 2.0, 7.0, 97
SUMMARY
In Access, when you first link (attach) an external table using an ODBC
driver, you have the option to store the User ID and password for the table
locally. If you do not store the ID and password locally, you will be
prompted later for such information when you open the table.
This article demonstrates how to bypass the Login prompt when you open an
Access linked table by pre-connecting to the database and providing User ID
and password programmatically in Basic.
MORE INFORMATION
The Microsoft Jet database engine caches authentication information for
each DSN. This prevents users from being prompted to login to remote
databases each time a table is opened. You can take advantage of this
behavior by pre-connecting to the database directly and programmatically
providing user ID and password to prevent the login prompt from appearing
when opening linked tables that don't have the user ID and password cached.
- In Access, create a new database, db1.mdb, and a linked table,
dbo_authors, from SQL Server Pubs database.
- In Visual Basic, start a new project and choose "Standard EXE." Form1
is created by default.
- In Access, create a new database and create a new form (Form1).
- In Visual Basic 4.0 and later, add a Reference to:
Microsoft Data Access Object 2.x (VB4 16-bit)
Microsoft Data Access Object 3.x (VB4 32-bit; VB5)
- Paste the following code in the General Declarations section of Form1:
Sub Command1_Click()
Dim db1 As Database
Dim db2 As Database
Dim rs As Recordset
Dim strConnect As String
'*** You have to modify the path to where db1.mdb is located
Set db1 = OpenDatabase("C:\MyTest\db1.mdb")
strConnect = UCase(db1.TableDefs("dbo_authors").Connect) & _
";UID=sa;PWD=;"
Set db2 = OpenDatabase("", False, False, strConnect)
db2.Close
Set db2 = Nothing
Set rs = db1.OpenRecordset("dbo_authors")
Debug.Print rs(0)
Debug.Print "Recordset Opened Successfully"
rs.Close
db1.Close
Set rs = Nothing
Set db1 = Nothing
End Sub
NOTES:
- You must provide correct login information, User ID and Password, in
strConnect to establish the connection.
- If you know which DSN the table is linked to, you can hard-code the
value of strConnect.
- The Microsoft Jet database engine will first try to log you in with the
same user ID and password that you log into the Jet database with
(default is Admin/no password). If you make the local login match the
server login, you will not get any login prompts.
- Microsoft SQL Server can integrate its security mechanism with Microsoft
NT domain accounts. If the user has a valid account in the domain, you
will not get any login prompts.
REFERENCES
See "Managing Connection Resources, Preconnecting" in the Microsoft Jet
Database Engine Programmer's Guide, Chapter 9, Developing Client/Server
Applications
© Microsoft Corporation 1999, All Rights Reserved. Contributions by Adrian Chiang, Microsoft Corporation
Additional query words:
Keywords : kbAccess kbDAO kbVBp kbVBp300 kbVBp400 kbVBp500 kbVBp600 kbGrpVB
Version : WINDOWS:1.0,1.1,2.0,3.0,4.0,5.0,6.0,7.0,97
Platform : WINDOWS
Issue type : kbhowto
|