Colonna calcolata con Ado.Net

venerdì 01 settembre 2006 - 11.05

StefanoLep Profilo | Senior Member

Salve a tutti, devo aggiungere una colonna calcolata ad un DataGridView, non posso utilizzare il metodo:

MioDT.Columns.Add("NomeCol", System.Type.GetType("System.String"), "MiaFormula")

perchè la formula è piuttosto complessa e non saprei scriverla in SQL. Cerco di spiegarmi: su DB ho un campo Long che esprime la durata in secondi, quando visualizzo questo campo però devo mostrare la durata come HH:MM:SS che considero una stringa. Ovviamente utilizzo una griglia per visualizzare i dati.

P.S. Ringrazio Matteo Raumer per l'articolo : "Colonne calcolate e parola "Child" con ADO.NET" link: http://www.dotnethell.it/articles/ADOChildTables.aspx

StefanoLep Profilo | Senior Member

In VB ho scritto una semplice funzione che accetta un parametro numerico e restituisce una stringa in formato hh:mm:ss che è appunto la durata che voglio visualizzare, in pratica se sul db il record ha valore 1 voglio visualizzare 00:00:01
se ha valore 100 visualizzo 00:01:40
Il fatto è che se utilizzo il metodo: DT.Columns.Add("NomeCol", System.Type.GetType("System.String"), "MiaFormula"), "MiaFormula" deve essere scritta con linguaggio SQL e quindi volevo sapere se qualcuno ha un'altra soluzione per aggiungere una colonna calcolata.

StefanoLep Profilo | Senior Member

Ciao, ho risolto (anche se il metodo non è elegantissimo), ciclo su tutti i valori della colonna per recuperare il valore numerico da passare alla funzione e poi prendo il risultato per inserirlo nella colonna a fianco:

For X = 0 To GRD.RowCount - 1

GRD.Rows(X).Cells("Durata in HH:MM:SS").Value = _
MiaFunzione (GRD.Rows(X).Cells("Durata in secondi").Value)

Next X
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