10 messaggi dal 10 marzo 2010
Buongiorno
ho un problema nella gestione di un datareader quando questo assume valore null:
Attraverso il codice qui sotto io devo ricavare, da una tabella di un database, il valore dell'ultimo documento memorizzato (che può essere di due tipi ognuno con la sua numerazione). Funziona tutto bene fino a quando la query restituisce un valore, ma quando questa non restituisce un valore mi da l'errore:
"I dati hanno valore Null. Impossibile chiamare il metodo o la proprietà su valori Null."
Siccome questa situazione si dovrà verificare ogni anno come faccio a gestire questo comportamento?

Vi chiedo inoltre un'altra cosa:
il passo successivo sarà creare una query di accodamento. Pensate che per come ho impostato il codice sia fattibile?

Protected Sub SaveButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SaveButton.Click
        Dim MySQLConnStringName, MySQLstrConnection As String
        Dim MySQLConn As MySqlConnection
        Dim MySQLSelectCmd As MySqlCommand
        Dim MySQLDr As MySqlDataReader = Nothing
        Dim UltimoOdgOds, NuovoOdgOds As Integer

        'esegue la connessione al database
        MySQLConnStringName = "odg-odsConnectionString"
        MySQLstrConnection = ConfigurationManager.ConnectionStrings(MySQLConnStringName).ConnectionString
        MySQLConn = New MySqlConnection(MySQLstrConnection)
        'ricava il numero per il nuovo odg ods
        MySQLSelectCmd = New MySqlCommand("SELECT MAX(Numero_odg_ods) AS Ultimo FROM(tbl_odg_ods)WHERE (Anno_competenza = YEAR(NOW())) AND (Tipo = ?Odgtipo)", MySQLConn)
        MySQLSelectCmd.Parameters.AddWithValue("?Odgtipo", AddTipoDropDownList.SelectedValue)
        MySQLConn.Open()
        MySQLDr = MySQLSelectCmd.ExecuteReader
        MySQLDr.Read()

        If MySQLDr.Read() Then
            UltimoOdgOds = MySQLDr.GetInt32("Ultimo")
            NuovoOdgOds = UltimoOdgOds + 1
        Else
            NuovoOdgOds = 1
        End If


        MySQLDr.Close()

        MySQLConn.Close()
        Label2.Text = NuovoOdgOds


    End Sub


Bruno
10 messaggi dal 10 marzo 2010
Ho risolto mettendo:

If Not (MySQLDr.IsDBNull(0)) Then
            UltimoOdgOds = MySQLDr.GetInt32("Ultimo")
            NuovoOdgOds = UltimoOdgOds + 1
        Else
            NuovoOdgOds = 1
        End If


lascio comunque aperta la domanda per la seconda cosa che ho chiesto e cioè se, per come ho impostato il codice è possibile fare una query di accodamento.

Bruno

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.