gcn.obj.damecoleccion("NombreCol", "Where ....").objetos

Si tenemos que recorrer los objetos de la colección, hay una peculiaridad. Y es que si la colección tiene filtros asociados (tabla objetos_Filtros), creará una subcolección dentro de la misma, dependiendo de los elementos que devuelva la query. 


VER COLECCIÓN DE ALBARANES.
En el caso de que tenga filtros, devolverá una colección de colecciones. En caso contrario, una colección de objetos.


Código VB6:

Sub Main()
frmAux.Descargar 'ATENCIÓN: DEBE ESTAR SIEMPRE QUE NO SE MUESTRE EL FORMULARIO.
Dim lcol 'As AhoraSistema.Colecciones
Dim lObj 'As AhoraSistema.IItem
Set lcol = gcn.obj.damecoleccion("Albaranes","Where 1=1")
If Not lcol Is Nothing Then
     For i = 1 To lcol.count
       If TypeName(lcol.objetos(cint(i))) = "Collection" Then
         For Each lObj2 In lObj.Objetos(cint(i))
            MsgBox lobj2.descripcion
            Next
          Else
          MsgBox lcol.item(cint(i).descripcion
       End If
     Next
End If
End Sub

Código C#:

using AhoraSistema;

namespace AhoraScriptsVacia
{
    public class Script_0 : AhoraOCX.AhoraBaseScript
    {
        public void Main()
        {
            IItemColeccion lObj;
            IColecciones lCol = gCn.Obj.DameColeccion("Albaranes", "Where 1=1");
            if (lCol != null)
            {
                for (int i = 1; i < lCol.Count(); i++)
                {
                    if (lCol.Objetos[i].GetType().ToString() == "Collection")
                    {
                        lObj = lCol.Objetos[i];
                        for (int x = 1; x < lObj.Objetos.Count; x++)
                        {
                            AhoraCore.VBA.Interaction.MsgBox(lObj.Objetos[x].Descripcion);
                        }
                    }
                    else
                    {
                        AhoraCore.VBA.Interaction.MsgBox(lCol.GetItem(i).Descripcion);
                    }
                }
            }
        }
    }
}