Tipo dati nella colonna di un DataGrid

giovedì 09 ottobre 2008 - 17.20

dosa85 Profilo | Junior Member

Ciao, ho un'altra domanda da porvi:

Ho un datagrid collegato a un db di access. Un campo della tabella è strutturato da access in modo che contenga dati Valuta (euro x intenderci). Il problema è che se per esempio inserico un Valore del tipo: 3,50€ nel datagrid mi viene visualizzato il valore 3,5 invece di 3,50. Ho provato sia a mettere la colonna in formato Testo che in formato Valuta (con 2 decimali) ma di dà sempre lo stesso risultato togliendo un decimale, non capisco perchè. Potreste aiutarmi?!?! GraziE

Teech Profilo | Expert

Nell'evento CellFormatting del DatagridView puoi impostare il formato di ogni colonna... Puoi usare una cosa del genere:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alexmed Profilo | Guru

Ciao
Se lo vuoi impostare da codice allora:

Me.myDWG.Columns(i).DefaultCellStyle.Format = "N2" dove i è il numero della Colonna da impostare

Altrimenti:
Selezioni la DGV
Clikki su "Modifica colonne"
Selezioni la colonna da impostare
Apri "DefaultCellStyle"
Apri "Format"
E vedrai che se scegli Numerico con 2 decimali quando dai Ok ti scrive su format "N2" (come sopra)

Ciao

ERRATA CORRIGE
Scusa mi sono accorto solo ora che è un DataGrid e non un DataGridView, quindi non saprei

dosa85 Profilo | Junior Member

Ho sbagliato io a scrivere è un DATAGRIDVIEW non un DATAGRID

Però quando vado a fare la somma tramite un button per riportarmela in un label mi da sempre un valore senza la seconda cifra decimale!!!

Teech Profilo | Expert

I valori sono del tipo in cui li dimensioni (Integer, Double, String), mentre la formattazione dei valori è un modo per visualizzarli come più ti piace.
Quando VB ha un valore in una variabile di tipo Double pari a 312,3 non lo sa se sono chilogrammi, euro, una quantità generica, metri o altro.
Tu però lo sai ed esponi il dato formattandolo come più ti piace.

Se in Access puoi dargli formati diversi è perchè Access lo permette, ma il valore memorizzato nei campi è sempre un valore del tipo di base (Valuta ad esempio deve essere un Numerico a precisione Doppia visualizzato con caratteristiche che puoi decidere).

Detto ciò devi fare la formattazione del dato sulla Label.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

DomA Profilo | Expert

Ciao dosa,
perchè non dai la formattazione giusta quando memorizzi i dati nel db? Mi spiego meglio (fermo restando che in access la formattazione data al campo sia del tipo single/double con 2 decimali dopo la virgola) poui utilizzare questo codice:

>Dim d As Decimal
>Dim decimals As Integer
>d = Replace(Me.txtPrezzo.Text, ".", ",")
>decimals = 2
>Dim returnValue As Decimal
>returnValue = Math.Round(d, decimals)

infine nel db memorizzi return value.
Con questo metodo io non ho problemi.
>Ultima nota: d = Replace(Me.txtPrezzo.Text, ".", ",")
>ti permette di utilizzare il punto nella txt al posto della virgola.
>se decidi di utilizzare la formattazione nella colonna non inserire il simbolo "€" altrimenti il valore nelle >celle non sarà più riconoscito come numerico.
Fammi sapere come va.

P.s.: hai visto la risposta a questo tuo thread?
http://www.dotnethell.it/forum/messages.aspx?ThreadID=25841
se funziona ricorda di accettare la risposta così lo chiudiamo e può essere d'aiuto anche agli altri membri di dotnethell.
Domenico
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5