Opened 14 years ago
Last modified 13 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
.
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.