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