﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
902	Guadado de Data Set	mruiz	Pedro Gea	"Hola,
tengo dos conjuntos de datasets con nombres iguales, con diferentes versiones (1.0 y 2.0), que quiero juntar en un solo dataset (cada conjunto), de forma que tenga 2 datasets.
La secuencia es la siguiente:
{{{
  //Seleccionamos los datas set que queremos juntar de una versión:
  Set sCatDS_Repo = Select(OptCob.Repo::GetDataSetsCatalog(?),
  Real(NameBlock c)
  {
    And(TextFind(c::name, sPortTxt),
        TextFind(c::name, ""Row""),
        Not(TextFind(c::name, ""Cov"")),
        Not(TextFind(c::name, ""All"")),
        Not(TextFind(c::name, ""Hou"")),
        (c::version == DS.Version))
  });

  //Cargamos el primer DataSet
  NameBlock ds_1 = MMS::Container::GetObject_Load(
  ""DataSet"",
  [[
    Text DataSetName = (sCatDS_Repo[1])::name,
    Text DataSetVersion = (sCatDS_Repo[1])::version
  ]],
  OptCob.Repo);
  Text nameDs1 = ds_1::GetIdentifier(?);

  //Hacemos una copia para usarlo como DataSet 'Padre'
  NameBlock dsFat = ds_1::Duplicate(?);
  //Text nameDsFat = Sub(nameDs1, 1, TextFind(nameDs1, ""Row"")-1)+""All"";
  Real posRow = TextFind(nameDs1, ""Row"");
  Text nameDsFat = Sub(nameDs1, 1, posRow+3) +""All"";//_Cov.All;//Revisar
  Real existDS = OptCob.Repo::FindDataSet(nameDsFat);
  Real If(Not(existDS), -1, OptCob.Repo::RemoveDataSet(nameDsFat));
  Real dsFat::SetName(nameDsFat);

  //Vamos uniendo el resto de DataSets al 'Padre'
  Set sJoin = For(2, Card(sCatDS_Repo), Real(Real n)
  {
    //Real n = 2;
    NameBlock dsSne = sCatDS_Repo[n];
    Text dsName = dsSne::name;
    Text dsVer = dsSne::version;
    WriteLn(""\tAñadiendo el DataSet ""+ dsName +""...\t""+ Time);
  
    Set sInfoDSn =
    [[
      Text DataSetName = dsName,
      Text DataSetVersion = dsVer //de momento el DS es siempre v1.0.
    ]];
    NameBlock ds_n = MMS::Container::GetObject_Load(""DataSet"", sInfoDSn,
                                                    OptCob.Repo);

    Real join = dsFat::JoinDataSet(ds_n);
    //Real dsFat::SetAttribute(""_cov"", ""All"");
    Real MMS::Container::RemoveDataSet(sInfoDSn); 
    join
  });
  Real dsFat::SetAttribute(""_row"", ""All"");

Text ver = dsFat::GetVersion(?);

  WriteLn(""Guardando el DataSet padre (""+ nameDsFat +"")...\t""+ Time);
  Real save = dsFat::Save_AtRepository(OptCob.Repo, ""Default"");
}}}
con esto tendríamos el dataset ''padre'' de una versión.
Si repetimos este proceso para la segunda versión, cuando hace {{{Save_AtRepository}}} guarda el dataset ''padre'' con la segunda versión pero desaparece el de la primera versión.
Si volvemos a repetir este proceso con la primera versión de dataset, al guardar el padre desaparece la 2 versión.
Es como si al tener el mismo nombre machacase la versión anterior y le pusiese la nueva versión.

Saludos"	doubt	closed	major	Release 0.6	Persistence	fixed		
