You may notice that linked tables in your database have
slower performance when you open tables, or that performing updates takes
longer than you expect.
You may notice this behavior after you
convert the database from an earlier version of Microsoft Access, although this
is not the only case in which these symptoms may occur.
The database has many linked tables that also have many
relationships, and the table that you are opening has its Subdatasheet Name
property set to [Auto]
. This can make the table slow to open. Subdatasheets are a new
feature in Access 2000. Therefore, you are more likely to notice this behavior
after you convert a database from an earlier version.
To work around this behavior, set the Subdatasheet Name
property on each table in the back-end database to [NONE]
. You can do this manually or by using code.
Setting the Subdatasheet Name property manually
To set the Subdatasheet Name
property manually, follow these steps:
- In the back-end database, open a table in Design view.
- On the View menu, click
- Set the Subdatasheet Name property to
- Save and then close the table.
Setting the property for all tables by using code
You can use a Visual Basic for Applications function to
automatically set the Subdatasheet Name
property for all nonsystem tables in a database to [NONE]
. To do this, follow these steps:
- Open the back-end database.
- On the Database window, click Modules,
and then click New.
- On the Tools menu, click
References. Make sure the Microsoft DAO 3.6 Object
Library check box is selected, and then click OK.
- Type or paste the following code in the new module.
Dim MyDB As DAO.Database
Dim MyProperty As DAO.Property
Dim propName As String, propVal As String, rplpropValue As String
Dim propType As Integer, i As Integer
Dim intCount As Integer
On Error GoTo tagError
Set MyDB = CurrentDb
propName = "SubDataSheetName"
propType = 10
propVal = "[None]"
rplpropValue = "[Auto]"
intCount = 0
For i = 0 To MyDB.TableDefs.Count - 1
If (MyDB.TableDefs(i).Attributes And dbSystemObject) = 0 Then
If MyDB.TableDefs(i).Properties(propName).Value = rplpropValue Then
MyDB.TableDefs(i).Properties(propName).Value = propVal
intCount = intCount + 1
If intCount > 0 Then
MsgBox "The " & propName & " value for " & intCount & " non-system tables has been updated to " & propVal & "."
If Err.Number = 3270 Then
Set MyProperty = MyDB.TableDefs(i).CreateProperty(propName)
MyProperty.Type = propType
MyProperty.Value = propVal
intCount = intCount + 1
MsgBox Err.Description & vbCrLf & vbCrLf & " in TurnOffSubDataSheets routine."
- In the Immediate window, type the following text, and then
press ENTER to run the function: Note that after a short time, if all the tables are not already
updated, you receive a message box that tells you that the SubDataSheetName property for <NumberOfTablesUpdated> non-system tables has
been updated to [NONE].
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
has confirmed that this is a problem in the Microsoft products that are listed
in the "Applies to" section.
Article ID: 261000 - Last Review: July 5, 2005 - Revision: 5.0
- Microsoft Access 2000 Standard Edition
|kbbug kbnofix kbperformance KB261000|