According to Allen Browne, the subdataseet name property is a problem in ms access and should be turned off. (Subdatasheet Name property set to [Auto] should be [None].) See this link, excerpted below:
http://allenbrowne.com/bug-09.htmlI believe the subdatasheets will still function on the basis of the master and child links even though the subdatasheet name property has been turned off. As always, make sure you have adequate backups before making any changes.
__________________________
__________
__________
__________
__________
Tables: SubdatasheetName
In Access 2000, tables got a new property called SubdatasheetName. If the property is not set, it defaults to "[Auto]". Its datasheet displays a plus sign which the user can click to display related records from some other table that Access thinks may be useful.
This automatically assigned property is inherited by forms and subforms displayed in datasheet view. Clearly, this is not a good idea and may have unintended consequences in applications imported from earlier versions. Worse still, there are serious performance issues associated with loading a form that has several subforms where Access is figuring out and collecting data from multiple more related tables.
Again, the solution is to turn off subdatasheets by setting the property to "[None]". Again, there is no way to do this by default, so you must remember to do so every time you create a table. This code will loop through your tables and turn the property off:
Function TurnOffSubDataSh()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim prp As DAO.Property
Const conPropName = "SubdatasheetName"
Const conPropValue = "[None]"
Set db = DBEngine(0)(0)
For Each tdf In db.TableDefs
If (tdf.Attributes And dbSystemObject) = 0 Then
If tdf.Connect = vbNullString And Asc(tdf.Name) <> 126 Then 'Not attached, or temp.
If Not HasProperty(tdf, conPropName) Then
Set prp = tdf.CreateProperty(conProp
Name, dbText, conPropValue)
tdf.Properties.Append prp
Else
If tdf.Properties(conPropName
) <> conPropValue Then
tdf.Properties(conPropName
) = conPropValue
End If
End If
End If
End If
Next
Set prp = Nothing
Set tdf = Nothing
Set db = Nothing
End Function
Public Function HasProperty(obj As Object, strPropName As String) As Boolean
'Purpose: Return true if the object has the property.
Dim varDummy As Variant
On Error Resume Next
varDummy = obj.Properties(strPropName
)
HasProperty = (Err.Number = 0)
End Function