Oppure

Loading
04/01/10 20:08
dartraf
Ciao a tutti,
sto realizzando un software in vb.net che accede a dati di un archivio access.
Devo caricare una query e mostrarne i risultati in una datagrid.
La query è
"SELECT KEY, (CONTRATTO_NUM & CONTRATTO_ALFA) AS CONTRATTO, NUM_LAMPADE AS [NUMERO LAMPADE], (CANONEDA) AS MESE FROM CONTRATTI"

il mese pero è memorizzato come numero quindi sulla griglia mi esce 1 invece di Gennaio.
Come posso fare ad ottenere il nome del mese?

Per il resto utilizzo un OleDb.OleDbDataAdapter e un Dataset come fonte dati per la griglia
aaa
04/01/10 20:18
LittleHacker
Postato originariamente da dartraf:

Come posso fare ad ottenere il nome del mese?


Utilizzi un'if e dici se il mese è = a 1 allora scrivi gennaio e è 2 scrivi febbraio etc...:k:
aaa
04/01/10 23:02
Alfonso
Casomai:

Dim Data As Date = "01/" & tuomese & "/2000"
MsgBox(Data.ToString("MMMM";))


Se vuoi sapere come deve essere la query per avere come risultato il nome del mese:

NomeDelMese(Canoneda) as mese

dove NomeDelMese è una function con le istruzioni precedenti adattate.
Ultima modifica effettuata da Alfonso 05/01/10 8:42
aaa
05/01/10 11:51
dartraf
Forse non mi sono spiegato bene...un tipo esempio di record che esce da quella query è
CONTRATTO=3,NUMERO LAMPADE=10,MESE=2
andando a imporre alla datagrid come datasource il dataset mi trovo sulla griglia questi valori e quindi il mese scritto in numeri.
Invece vorrei il mese scritto in stringa quindi ho provato ad intervenire sulla query (ad esempio qlcs tipo "monthname";) ma niente e quindi ho pensato che a runtime potessi impostare la formattazione della griglia in modo tale che quanto questa vede il numero 1 nella terza colonna ci associ il nome Gennaio.
Spero di essere stato chiaro cmq posto un po di codice
Dim dsDataset As New DataSet
        Dim dvVista As DataView
        Dim cnNW As New OleDb.OleDbConnection(strConnessioneClienti)
        Dim strSql As String = "SELECT KEY, (CONTRATTO_NUM & CONTRATTO_ALFA) AS CONTRATTO, NUM_LAMPADE AS [NUMERO LAMPADE], (CANONEDA) AS MESE FROM CONTRATTI"
        Dim daLettore As New OleDb.OleDbDataAdapter(strSql, cnNW)

        daLettore.Fill(dsDataset, "contratti")
        If dsDataset.Tables("contratti").Rows.Count <> 0 Then
            dvVista = dsDataset.Tables("contratti").DefaultView
            flxGriglia.DataSource = dvVista
            flxGriglia.Columns(0).Visible = False
        Else
            Me.Close()
        End If
aaa
05/01/10 15:09
LittleHacker
X me è giusto il mio metodo cioè utilizzare un'if...Poi fate cm volete...:k:
aaa
05/01/10 16:48
Alfonso
A run time:
Ammesso che la colonna CanoneDa sia la terza

Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting

        If Me.DataGridView1.Columns(e.ColumnIndex).Index = 3 Then

            If e IsNot Nothing Then
                If e.Value IsNot Nothing Then
                    Try
                        e.Value = NomeDelMese(e.Value.ToString())
                        e.FormattingApplied = True
                    Catch ex As FormatException
                        Console.WriteLine("{0} is not a valid date.", e.Value.ToString())
                    End Try
                End If
            End If

        End If

    End Sub

    Private Function NomeDelMese(ByVal i As Integer) As String

        Dim Data As Date = "01/" & i & "/2000"
        NomeDelMese = (Data.ToString("MMMM"))

    End Function


Da query dovrebbe essere (però non ho modo di provarla):

"SELECT KEY, (CONTRATTO_NUM & CONTRATTO_ALFA) as CONTRATTO, NUM_LAMPADE as [NUMERO LAMPADE], NomeDelMese(CANONEDA) as MESE FROM CONTRATTI"

Sempre che CanoneDa sia un integer usando sempre la function precedente.
Ultima modifica effettuata da Alfonso 05/01/10 17:08
aaa
06/01/10 12:36
dartraf
Grazie alfonso era quello che cercavo!:)
aaa
07/01/10 16:36
Il Totem
Postato originariamente da LittleHacker:

X me è giusto il mio metodo cioè utilizzare un'if...Poi fate cm volete...:k:


Un'if dove? E solo uno? E come lo integri a livello di query?

Le tue risposte sono sempre inconcludenti.
aaa