Opened 14 years ago
Last modified 14 years ago
#628 closed defect
Creación de una variable con datos y sin expresión — at Version 2
| Reported by: | imendez | Owned by: | Pedro Gea | 
|---|---|---|---|
| Priority: | critical | Milestone: | Release 0.6 | 
| Component: | Variables | Keywords: | |
| Cc: | 
Description (last modified by )
Hola, a la hora de añadir una variable a un DataSet hay (al menos) dos opciones:
- Con una expresión TOL
- Apostándole los datos de forma explícita.
Al hacerlo de la segunda forma, me da error al intentar recuperar los datos, creo que porque intenta obtener la expresión:
NameBlock aux = DataSet.Ejemplo::CreateVariable ([[ Text _.name = "Aux"; Text _.description = "Prueba"; Text _.type = "Serie"; Serie _.data = SubSer(CalInd(WD(5), Diario), y2009, y2010) ]]); Serie auxData = aux::GetData(?);
Warning: [37] La función Eval ha fallado en : Eval(expression3) Warning: [38] La función :: ha fallado en : space::LocalEval(expression) ERROR: [49] data no se pudo crear. [Call stack] [2] Anything MMS::@Variable::_.ObtainData (Text expression, Set variables, Text scenario, NameBlock parent) [1] Anything aux::variable::variable::GetData (Real void) ERROR: [50] [@Variable::_.ObtainData] Error en el acceso a los datos.
Por cierto, al intentar crear la variable con el atributo _.data y sin el _.type da error: ¿no podría deducir el tipo de datos a partir de la gramática de éstos, al igual que hace cuando se crea la variable con _.expression?
Gracias.
Change History (2)
comment:1 Changed 14 years ago by
comment:2 Changed 14 years ago by
| Description: | modified (diff) | 
|---|---|
| Milestone: | → Release 0.6 | 
| Status: | new → accepted | 
El comportamiento que indicas es consecuencia de que el argumento _.data se está ignorando. El argumento implementado para incluir los datos es Set _.data..
Si hacemos la llamada así:
NameBlock aux = DataSet.Ejemplo::CreateVariable([[ Text _.name = "Aux"; Text _.description = "Prueba"; Text _.type = "Serie"; Set _.data. = [[ Serie SubSer(CalInd(WD(5), Diario), y2009, y2010) ]] ]]);
no encontrarás esos problemas.
Haciéndolo así, el argumento _.type es opcional y el argumento _.expression es secundario y solo se usará al hacer un UpdateData.
![(please configure the [header_logo] section in trac.ini)](/mms/chrome/site/logomms.png)

Si se definen los datos de dos maneras, mediante _.expression y _.data, tiene prioridad _.expression:
Creo que en este caso debería dar al menos un Warning (avisando que se utilizará la expresión en lugar de los datos) o quizá incluso un error, pues como ocurre en el ejemplo anterior ambas definiciones pueden ser contradictorias.
Un saludo.