>I'm having problems working with Collections (not surprisingly, since this is my very first time creating a collection).
>
>I have a form with a collection named .Fields .... This.Fields (I've inherited this from somebody else). Each item in This.Fields is an object with the same simple list of properties.
>
>I want to copy the entire collection into an object I've created called loProperties. Now, I don't want to copy an object reference, since my goal is to later compare the values in This.Fields with loProperties.Fields. to see which have changed.
>
>My code to do this follows. When done, however, loProperties.Fields(1) does not have the same list of properties as This.Fields(1) --- it actually looks like a collection itself.
>
>Can anybody identify what I'm doing wrong here? (Note: loFields looks like the collection I would expect ... but loProperties.Fields doesn't)
You seem to want to copy members from one collection to another, with properties, eh? Assuming you tried the obvious (setting loFields=this.fields, or adding references to members of this.fields to loFields) and you really have to clone each object, then... see what I'd rather do: have a reference to the object you're copying. Makes debugging easier. Also, getpem() is easier than eval().
>
loFields = Createobject("Collection")
> For lnJ = 1 To This.Fields.Count
> m.loData = Createobject("Empty")
loSourceObject=This.Fields.item(lnJ)
> Amembers(laFieldMembers, loSourceObject)
> For Each lcFieldMem In laFieldMembers)
> AddProperty(m.loData, lcFieldMem, getpem(loSourceObject, lcFieldMem))
> Endfor
>
> loFields.Add(m.loData)
> Next lnJ
> AddProperty (loProperties, 'Fields', loFields)
>