ACC: Error "Invalid Key" When Adding Node to TreeView Control (162858)



The information in this article applies to:

  • Microsoft Access for Windows 95 7.0
  • Microsoft Access 97

This article was previously published under Q162858
Advanced: Requires expert coding, interoperability, and multiuser skills.

SYMPTOMS

When you try to use the Add method of the Node object with the TreeView control, you may receive the following error message:
Run-time error '35603':
Invalid key

NOTE: The TreeView control is only available if you have installed the Microsoft Access Developer's Toolkit version 7.0 or the Office 97 Developer Edition.

CAUSE

The Item Method, which can be used to return a specific member of the Nodes collection, takes one argument. If this argument is a numeric expression, the Item method searches for the node by index; if the argument is a string expression, the Item method searches for the node by key. Because this argument is a Variant, the Item method cannot distinguish a key expression from an index expression unless that expression contains at least one non-numeric character.

RESOLUTION

Concatenate at least one non-numeric character to the expression in the key argument of the Add method. For example, add a node by using
   Set Node = Me!CustOrders.Nodes.Add(, , "Node " & rst!OrderID,
   CStr(rst!OrderID))
				

instead of
   Set Node = Me!CustOrders.Nodes.Add(, , rst!OrderID, CStr(rst!OrderID))
				

MORE INFORMATION

Steps to Reproduce Behavior


  1. Open the sample database Northwind.mdb.
  2. Create a new form not based on any table or query.
  3. Insert a TreeView control and name it CustOrders.
  4. Set the form's OnLoad property to the following event procedure:
         Private Sub Form_Load()
             Dim db As DATABASE, rst As Recordset
             Dim Node As Object
             Set db = CurrentDb()
             Set rst = db.OpenRecordset("Orders", dbOpenDynaset)
             If rst.RecordCount > 0 Then
                 Do Until rst.EOF
                     Set Node = Me!CustOrders.Nodes.Add(, , _
                             rst!OrderID,cstr(rst!OrderID))
                     rst.MoveNext
                 Loop
             End If
             rst.Close
             db.Close
         End Sub
    						
  5. Open the form in Form View. Note that you receive the following error message:
    Run-time error '35603': Invalid Key

    The error occurs even if you use the Cstr() function with the key argument (the third argument of the Add method).

REFERENCES

For more information about the Add method of the Node object, search the Help Index for "Add Method," and then "Add Method (Nodes Collection)."

For more information about the Item method, search the Help Index for "Item method."

Modification Type:MajorLast Reviewed:10/20/2003
Keywords:kbcode kberrmsg kbprb KB162858