Opened 13 years ago
Last modified 13 years ago
#902 closed doubt
Guadado de Data Set — at Initial Version
Reported by: | mruiz | Owned by: | Pedro Gea |
---|---|---|---|
Priority: | major | Milestone: | Release 0.6 |
Component: | Persistence | Keywords: | |
Cc: |
Description
Hola,
tengo dos conjunto de data set con nombres iguales, con diferentes versiones (1.0 y 2.0), que quiero juntar en un solo data set (cada conjunto), de forma que tenga 2 data set.
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 data set padre de una versión.
Si repetimos este proceso para la segunda versión, cuando hace SAve_AtRepository guarda el data set 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 data set, 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