Dare un valore null database

di il
16 risposte

Dare un valore null database

Buon giorno a tutti non so se come titolo ho scritto giusto per il mio argomento cmq vi spiego...in un database access mi sono creato una tabella NomeSquadra...da questa tabella filtro su una label il testo nel form1 e funziona tutto correttamente con questo codice
nella Form1_Load
Dim ds As New DataSet
        Dim dt As New DataTable
        ds.Tables.Add(dt)
        Dim da As New OleDbDataAdapter
        da = New OleDbDataAdapter("SELECT * FROM NomeSquadra", conn)
        da.Fill(dt)
        LblTitolo.Text = dt.Rows(0).Item(1)
        conn.Close()
il problema sta quando il valore e nullo che non riesco...mi potete aiutare o indirizzare dove documentarmi? grazie

16 Risposte

  • Re: Dare un valore null database

    Manolo79 ha scritto:


    da questa tabella filtro su una label il testo nel form1 e funziona tutto correttamente con questo codice
    Da quello che vedo io, non stai filtrando nulla: stai solo prendendo un valore dal primo campo del primo record e visualizzandolo in una etichetta, tra l'altro creando oggetti superflui (es. il DataSet) che non servono, e creandoti una cache in memoria (la DataTable) che può essere evitata.

    Urge documentarti sulla problematica generale dell'accesso ai dati con ADO.NET allo scopo di approfondire le classi di questo sistema e come vanno usate.

    Manolo79 ha scritto:


    il problema sta quando il valore e nullo che non riesco...
    Non riesci a fare cosa? Se la frase non è corretta dal punto di vista dell'italiano, si fa una fatica tremenda a capire anche qual è la problematica.

    Manolo79 ha scritto:


    mi potete aiutare o indirizzare dove documentarmi? grazie
    Fai una ricerca usando la frase sopra in grassetto e troverai migliaia di articoli.
    Per la rappresentazione di valori nulli, approfondisci DBNull.

    Ciao!
  • Re: Dare un valore null database

    Grazie alka vero mi sono espresso male visualizzo e non filtro e mi sistemo il dataset e datatable.

    in questa tabella io salverò solo una riga che presumibilmente sarà il nome della squadra però se il record è vuoto mi da l'eccezione con questo errore System.IndexOutOfRangeException: 'Nessuna riga alla posizione 0.'
    LblTitolo.Text = dt.Rows(0).Item(1)  <---- qui
  • Re: Dare un valore null database

    Ciao, a prescindere, quello che ha scritto Alka è la strada migliore per molti motivi....

    mi domando, a ragion di logica, non puoi gestire le eccezioni?
    if dt.Rows(0).Item(1) = IsNotNull
    LblTitolo.Text = dt.Rows(0).Item(1)
    Else LblTitolo.Text = ""
    End If
    
    così... giusto per capire se ti è utile la gestione....
  • Re: Dare un valore null database

    Grazie orine...avevo provato invece a scriverlo così senza successo
    If dt.Rows.Count > 0 Then
            Lblitolo.Text = dt.Rows(0).Item(1)
            Else
            LblTitolo.Text = ""
    su il codice scritto da te mi segna di rosso IsNotNull.
  • Re: Dare un valore null database

    orione1976 ha scritto:


    if dt.Rows(0).Item(1) = IsNotNull
    LblTitolo.Text = dt.Rows(0).Item(1)
    Else LblTitolo.Text = ""
    End If
    
    Cosa sarebbe IsNotNull ?
  • Re: Dare un valore null database

    Attenzione a non confondere il concetto di valore nullo con il non avere valori. Ricevere IndexOutOfRangeException vuol dire che la SELECT non ha prodotto risultati, non che il risultato è NULL.

    E comunque per una Sub simile io userei un OleDBDataReader.
    Using cmd As New OleDbCommand("SELECT * FROM NomeSquadra", conn)
        Dim dr As OleDbDataReader = cmd.ExecuteReader
        If dr.Read() Then
            LblTitolo.Text = IIf(dr.IsDBNull(1), "Nome squadra è NULL!", dr.GetString(1))
        Else
            LblTitolo.Text = "Nessuna squadra..."
        End If
    End Using
  • Re: Dare un valore null database

    Manolo79 ha scritto:


    avevo provato invece a scriverlo così senza successo
    If dt.Rows.Count > 0 Then
            Lblitolo.Text = dt.Rows(0).Item(1)
            Else
            LblTitolo.Text = ""
    A parte che c'è un errore di copia/incolla del codice (Lblitolo), cosa che andrebbe evitata per non far perdere tempo nel diagnosticare e individuare errori che in realtà non fanno parte del codice...

    Nella tua implementazione sopra stai (giustamente) verificando se è presente almeno una riga; tuttavia, con quell'Item(1), potresti accedere a una colonna (o campo) inesistente, ad esempio se la tabella è costituita solamente da una colonna. Ricorda che gli indici partono da 0 (zero).

    Per il resto, che dire... non sappiamo la struttura precisa della tabella, il codice non è riportato perfettamente, ergo la causa potrebbe annidarsi ovunque se la problematica non viene esposta con precisione.

    Ciao!
  • Re: Dare un valore null database

    Scusami alka ho dimenticato di scriverci end if e mancato la T...cmq la tabella ha solo id e nome con 1 semplice button per salvare e 1 per modificare.
  • Re: Dare un valore null database

    Manolo79 ha scritto:


    ho dimenticato di scriverci end if e mancato la T...
    Non puoi "dimenticare" di scrivere qualcosa se fai copia/incolla del codice, come dovresti fare.

    Manolo79 ha scritto:


    cmq la tabella ha solo id e nome con 1 semplice button per salvare e 1 per modificare.
    Da qualche parte l'errore c'è. Dovresti fare debugging passo per passo del programma, una riga alla volta, usando i comandi del menu Debug.

    Se non fai debugging, non posti il codice corretto oppure ometti delle implementazioni importanti, non si può essere d'aiuto sul problema.
  • Re: Dare un valore null database

    Buon giorno a tutti...ho risolto modificando il codice in questa maniera e funziona però vorrei un vostro parere
    
    If dt.Rows.Count > 0 Then
    LblTitolo.Text = dt.Rows(0).Item("Nome").ToString()
    End If
    
    magari può servire a qualcun altro.

    Alka ha scritto:


    Non puoi "dimenticare" di scrivere qualcosa se fai copia/incolla del codice, come dovresti fare.
    Alka hai ragione ma per la fretta perchè il codice era corto lo scritto e non copia incolla.
  • Re: Dare un valore null database

    Manolo79 ha scritto:


    Buon giorno a tutti...ho risolto modificando il codice in questa maniera e funziona però vorrei un vostro parere
    Quindi il problema era che stavi facendo riferimento a un campo errato (con nome o con indice)?
  • Re: Dare un valore null database

    Buona sera funziona sia con una che con l'altra ho aggiunto il metodo tostring...ma per mia distrazione usavo il codice non nel load del form ma nella visualizzazione della datagrid.
  • Re: Dare un valore null database

    grumpy ha scritto:


    orione1976 ha scritto:


    if dt.Rows(0).Item(1) = IsNotNull
    LblTitolo.Text = dt.Rows(0).Item(1)
    Else LblTitolo.Text = ""
    End If
    
    Cosa sarebbe IsNotNull ?
    se il valore non è nullo... se mette "Nothing"
  • Re: Dare un valore null database

    orione1976 ha scritto:


    grumpy ha scritto:


    orione1976 ha scritto:


    if dt.Rows(0).Item(1) = IsNotNull
    LblTitolo.Text = dt.Rows(0).Item(1)
    Else LblTitolo.Text = ""
    End If
    
    Cosa sarebbe IsNotNull ?
    se il valore non è nullo... se mette "Nothing"
    Non esiste IsNotNull. Casomai Not IsNull(), oppure Not IsNullOrEmpty(), oppure Not IsNothing().
Devi accedere o registrarti per scrivere nel forum
16 risposte