Value vs ValueEx¶
Distinzione fondamentale che si porta dietro da versioni vecchie della SDK — riguarda come viene formattato/interpretato il valore, in particolare per numeri e date.
Value¶
- Restituisce/accetta il valore formattato secondo le impostazioni regionali dell'utente (locale-dependent).
- Per un
dt_DATE: formato data secondo le impostazioni Windows/SAP dell'utente (es.03/09/2026o09/03/2026a seconda del locale). - Per numeri (
dt_PRICE,dt_SUM...): usa il separatore decimale locale (es. virgola in Italia, punto in US). - Sconsigliato per la logica di programmazione, perché il comportamento cambia a seconda di chi esegue il codice.
ValueEx¶
- Restituisce/accetta il valore in formato invariante, indipendente dal locale.
- Per le date: sempre formato
YYYYMMDD(es."20260903"). - Per i numeri: sempre con punto come separatore decimale (es.
"1234.56"), indipendentemente dalle impostazioni regionali. - Raccomandato da SAP per tutta la logica di programmazione, proprio perché è deterministico e non dipende da chi usa il client.
Esempio¶
oForm.DataSources.UserDataSources.Add("MyDate", SAPbouiCOM.BoDataType.dt_DATE);
// Se l'utente italiano vede "03/09/2026" nel campo:
string valLocale = oForm.DataSources.UserDataSources.Item("MyDate").Value; // "03/09/2026"
string valInvariante = oForm.DataSources.UserDataSources.Item("MyDate").ValueEx; // "20260903"
oForm.DataSources.UserDataSources.Add("MyPrice", SAPbouiCOM.BoDataType.dt_PRICE);
string prezzoLocale = oForm.DataSources.UserDataSources.Item("MyPrice").Value; // "1.234,56" (IT)
string prezzoInvariante = oForm.DataSources.UserDataSources.Item("MyPrice").ValueEx; // "1234.56"
Regola pratica¶
- Usare
ValueExper leggere/scrivere/calcolare nel codice (parsing sicuro conCultureInfo.InvariantCultureo.ToDouble()se disponibile). - Usare
Valuesolo se occorre mostrare/confrontare qualcosa esattamente come lo vede l'utente a schermo (raro).