This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.
Microsoft Access includes version 4.0 of the Microsoft Jet database engine and the DAO 3.6 object library. All previous version of DAO are no longer supported in Microsoft Access 2000. The following examples demonstrate how to convert code constructs in Microsoft Access databases created with earlier versions of the Jet database engine and DAO object libraries
Note This information is provided for reference only. Versions of DAO code prior to 3.6 are no longer supported in Access 2000. It is suggested that you use the ADO methods of accessing data in your current database for all new applications and future version compatibility.
Setting a Reference to the current database
Version
Example
1.x
Dim dbs As Database
Set dbs = CurrentDb
2.x
Dim dbs As Database
Set dbs = DBEngine.Workspaces(0).Databases(0)
or
Dim dbs As Database
Set dbs = DBEngine(0)(0)
7.0 or Later
Dim dbs As DAO.Database
Set dbs = CurrentDb
9.0
(Recommended)
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
Note In Microsoft Access, the current database is the default database in the collection, so you can still use the DBEngine(0)(0) syntax to return a object variable pointing to the current database. However, when using DAO the CurrentDb method is the preferred means of returning this object variable, because it enables you to create more than one Database object variable that points to the current database.
Opening a Database and Setting a Reference
Version
Example
1.x
Set dbs = OpenDatabase("Contacts.mdb")
2.x and later
Set dbs = DBEngine.Workspaces(0).OpenDatabase("Contacts.mdb")
or
Set dbs = Workspaces(0).OpenDatabase("Contacts.mdb")
Dim snp As Snapshot
Set snp = tbl.ListFields()
While Not snp.EOF
Debug.Print snp!Name, snp!Type
snp.MoveNext
Wend
snp.Close
2.x
' Given open TableDef object tdf.
Dim intI As Integer, fld As Field
For intI = 0 To tdf.Fields.Count - 1
Set fld = tdf.Fields(intI)
Debug.Print fld.Name, fld.Type
Next intI
7.0 or later
' Given open TableDef object tdf.
Dim fld As Field
For Each fld in tdf.Fields
Debug.Print fld.Name, fld.Type
Next fld
9.0 (Recommended)
Given open Table object tbl
Dim col as ADOX.column
For Each col in tbl.Columns
Debug.Print col.Name, col.Type
Next col
Listing Tables in a Database
Version
Example
1.x
' Given open Database object dbs.
Dim snp As Snapshot
Set snp = dbs.ListTables()
While Not snp.EOF
Debug.Print snp!Name
snp.MoveNext
Wend snp.Close
2.x
' Given open Database object dbs.
Dim intJ As Integer, tdf As TableDef
For intJ = 0 To dbs.TableDefs.Count - 1
Set tdf = dbs.TableDefs(intJ)
Debug.Print tdf.Name
Next intJ
7.0 or later
' Given open Database object dbs.
Dim tdf As TableDef
For Each tdf in dbs.TableDefs
Debug.Print tdf.Name
Next tdf
9.0 (Recommended)
Given open Catalog object cat
Dim tbl As ADOX.Table
For Each tbl in cat.Tables
Debug.Print tbl.Name
Next tbl
Listing a Table's Indexes
Version
Example
1.x
' Given open Table object tbl.
Dim snp As Snapshot
Set snp = tbl.ListIndexes()
While Not snp.EOF
Debug.Print snp!Name
snp.MoveNext
Wend
snp.Close
2.x
' Given open TableDef object tdf.
Dim intI As Integer, idx As Index
For intI = 0 To tdf.Indexes.Count - 1
Set idx = tdf.Indexes(intI)
Debug.Print idx.Name
Next intI
7.0 or later
' Given open TableDef object tdf.
Dim idx As DAO.Index
For Each idx in tdf.Indexes
Debug.Print idx.Name
Next idx
9.0
(Recommended)
' Given open Table object tbl.
Dim idx As ADOX.Index
For Each idx in tbl.Indexes
Debug.Print idx.Name
Next idx
Listing a Query's Parameters
Version
Example
1.x
' Given open QueryDef object qdf.
Dim snp As Snapshot
Set snp = qdf.ListParameters()
While Not snp.EOF
Debug.Print snp!Name
snp.MoveNext
Wend
snp.Close
2.x
' Given open QueryDef object qdf.
Dim intI As Integer, prm As Parameter
For intI = 0 to qdf.Parameters.Count - 1
Set prm = qdf.Parameters(i)
Debug.Print prm.Name
Next intI
7.0 or later
' Given open QueryDef object qdf.
Dim prm As Parameter
For Each prm in qdf.Parameters
Debug.Print prm.Name
Next prm
9.0 (Recommended)
' Given open Procedure object prc.
Dim prm As ADODB.Parameter
For Each prm in prc.Parameters
Debug.Print prm.Name
Next prm
Setting Query Parameters Dynamically
Version
Example
1.x
' Given open Database dbs.
Dim qdf As QueryDef, dyn As Dynaset
Set qdf = dbs.OpenQueryDef("OrdersQuery")
qdf.ParameterName = "[Start date]"
Set dyn = qdf.CreateDynaset()
2.x
' Given open QueryDef object qdf.
Dim intI As Integer, prm As Parameter, rst As Recordset
For intI = 0 To qdf.Parameters.Count - 1
Set prm = qdf.Parameters(intI)
prm.Value = InputBox("Value for " & prm.Name)
Next intI
Set rst = qdf.OpenRecordset
7.0 or later
' Given open QueryDef object qdf.
Dim prm As Parameter, rst As Recordset
For Each prm in qdf.Parameters
prm.Value = InputBox("Value for " & prm.Name)
Next prm
Set rst = qdf.OpenRecordset
9.0 (Recommended)
' Given open Procedure object prc.
Dim prm As ADODB.Parameter, rst As ADODB.Recordset
For Each prm in prc.Command.Parameters
prm.Value = InputBox("Value for " & prm.Name)
Next prm
rst.Open prc.Command,,adOpenKeyset, adLockOptimistic
Running a Pass-Through Query
Version
Example
1.x
' Given open Database object dbs.
Dim lngRows As Long
' Run stored procedure on server.
lngRows = dbs.ExecuteSQL("EXECUTE SP_StoredProc")
or
Dim snp As Snapshot
Set snp = dbs.CreateSnapshot("EXECUTE SP_StoredProc", DB_SQLPassThrough)
2.x and later
' Given open Database object dbs.
Dim qdf As QueryDef, rst As Recordset
Set qdf = dbs.CreateQueryDef("ODBCQuery")
qdf.Connect = "ODBC;" & "DSN=MyServer;" _
& "UID=sa;" & "PWD=hithere;" & "DATABASE=pubs"
qdf.SQL = "EXECUTE SP_StoredProc"
qdf.ReturnsRecords = True
.
.
.
Set rst = qdf.OpenRecordset
9.0 and later
' Given open Catalog Object with Activeconnection set, object cat.
Dim rst As Recordset, cmdPassthru As New ADODB.Command
Set cmdPassthru.ActiveConnection = Currentproject.connection
cmdPassthru("Jet OLEDB:Passthru Query conection string")= _
"ODBC;DSN=MyServer;UID=sa;PWD=hithere;DATABASE=pubs"
cmdPassthru.CommandText = "EXECUTE SP_StoredProc"
cat.Procedures.Append "ODBCQuery", cmdPassthru
Set rst = cmd.Execute
Creating a Temporary Query
Version
Example
1.x
' Given open Database object dbs.
Dim qdf As QueryDef, strTemp As String
strTemp = "TMP:" & User() & Time()
qdf = dbs.CreateQueryDef(strTemp)
qdf.SQL = "UPDATE Table1 SET Table1.Field1 = Field1 * 1.1;"
.
.
.
qdf.Execute
qdf.Close
.
.
dbs.DeleteQueryDef(strTemp)