Tipi di dato: dt_PRICE e affini¶
dt_PRICE è uno dei tipi predefiniti (BoDataType) utilizzabili quando si crea uno UserDataSource — indica a SAP che tipo di dato conterrà e come formattarlo/validarlo automaticamente nel controllo collegato.
Con dt_PRICE il controllo collegato (es. un EditText):
- formatta automaticamente il numero secondo le impostazioni di valuta di sistema dell'utente (separatori decimali, migliaia, ecc.)
- applica il numero di decimali configurato per i prezzi in Amministrazione → Inizializzazione Sistema → Impostazioni Generali (tab Visualizzazione, "Price")
- valida che l'input sia numerico, rifiutando testo non valido
Confronto con altri tipi numerici¶
| BoDataType | Uso tipico | Decimali |
|---|---|---|
dt_PRICE |
Prezzi unitari, importi in valuta | segue impostazioni "Price" |
dt_SUM |
Totali/somme (es. importo riga, totale documento) | segue impostazioni "Sum" |
dt_QUANTITY |
Quantità articoli | segue impostazioni "Quantity" |
dt_PERCENT |
Percentuali (sconti, IVA) | segue impostazioni "Percent" |
dt_SHORT_NUMBER / dt_LONG_NUMBER |
Numeri interi generici | nessuna formattazione valuta |
Perché non usare semplicemente dt_SHORT_TEXT¶
Tecnicamente possibile, ma si perderebbe:
- la formattazione automatica coerente con il resto del programma (l'utente vede i prezzi tutti formattati allo stesso modo)
- l'eventuale conversione automatica di valuta se il campo è collegato a un
CurrencyDataSource
Esempio¶
oForm.DataSources.UserDataSources.Add("UnitPrice", SAPbouiCOM.BoDataType.dt_PRICE);
SAPbouiCOM.EditText oPriceField = (SAPbouiCOM.EditText)oForm.Items.Item("PriceItm").Specific;
oPriceField.DataBind.SetBound(true, "", "UnitPrice");
// Legge il valore come double, non come stringa
double prezzo = oForm.DataSources.UserDataSources.Item("UnitPrice").ValueEx.ToDouble();
Info
ValueEx per i tipi numerici restituisce comunque una stringa (formato invariante) — va convertita per essere usata nei calcoli, ma SAP gestisce internamente il parsing/display coerente col tipo dichiarato. Vedi Value vs ValueEx.