Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348

    se select non ritorna ninete?

    ciao
    ho questa query:
    Select max (idplayer) from player


    ma quando la tabella è vuoto non ritorna niente giustamente
    ecco in questo caso quando non ritorna niente dovrei fare un if

    if(cmdricerca.executescalar()=null )then
    l=1
    else
    l=cmdricerca.executescalar()
    l=l+1
    end if

    il problema è che if è sbagliato con che cosa devo confrontare?

  2. #2
    ciaoooo

    DBNULL.value ?

    ciaoooo
    byz goldfix

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim sql$ = ""
            'sql = "SELECT Max(id_player) AS Maxid_player FROM player" '==> dà DBNull.Value se la tabella è vuota
            sql = "SELECT ID_PLAYER FROM PLAYER" '==> restituisce Nothing con tabella vuota
    
            Dim o As Object = Me.RisultatoAggregazioneSQL(StringaConnessioneTest, sql)
            Dim id_player%
    
            If o Is Nothing Then
                Me.Response.Write("Nothing
    ")
            ElseIf o Is System.DBNull.Value Then
                Me.Response.Write("DBNull
    ")
            Else
                Me.Response.Write(o.GetType.ToString & "
    ")
    
                'qui posso ottenere i_player facendo la giusta conversione di tipo
                id_player = CInt(o)
            End If
    
        End Sub
    
    
        '-------------------------------------------------------------------------------------------------
        'Restituisce il risultato di una funzione di aggregazione di una istruzione sql
        'Esegue la query e restituisce la prima colonna della prima riga nel gruppo 
        'di risultati restituito dalla query. 
        'Le colonne o le righe aggiuntive vengono ignorate
        '
        'restituisce Nothing se non trova valore
        'restituisce System.DBNull.Value se trova valore null
        'restituisce object se trova valore
        '-------------------------------------------------------------------------------------------------
        Public Overloads Function RisultatoAggregazioneSQL(ByVal StringaConnessione$, ByVal stringaSQL$) As Object
            Dim Connessione As OleDbConnection
            Dim Comando As OleDbCommand
    
            Try
                Connessione = New OleDbConnection(StringaConnessione)
                Connessione.Open()
                Comando = New OleDbCommand(stringaSQL, Connessione)
    
                RisultatoAggregazioneSQL = Comando.ExecuteScalar()
    
            Catch er As Exception
                Throw
            Finally
                If (Not (Connessione Is Nothing)) Then Connessione.Close()
            End Try
    
        End Function

    Studiati un po' il codice. Ogni tanto mi stupisco anch'io. In Access, con una tabella vuota, le select di agregazione restituiscono DBNull, quelle normali, Nothing

    Pietro

  4. #4
    ciaoooo

    scusa lo "studiati un po di codice" lo dici a me?

    in c# quando devo fare questo tipo di verifiche lavoro solo con il dbnull ... bha!

    se ho toppato sorry ... :master:

    ciaooooo
    byz goldfix

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da goldfix_1
    scusa lo "studiati un po di codice" lo dici a me?
    ovvio che no..
    lo dice all'autore del post: "non prenderlo come oro colato, come oracolo divino"
    credo di aver interpretato pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sms
    ovvio che no..
    lo dice all'autore del post: "non prenderlo come oro colato, come oracolo divino"
    credo di aver interpretato pietro

    E' ovvio che sms abbia ragione Il mio studiati il codice deve essere interpretato così:
    non mi dilungo in spiegazioni noiose e non utili ma ti dò un poco di codice da sperimentare. In pratica, dato che spesso viene anche a me questo dubbio, ti suggerisco di sperimentare esattamente come faccio io

    Per quanto poi riguarda a chi lavora in c#, io non mi metto in mezzo, dato che uso il più umile e povero Basic

    Tornando al discorso di prima, cioè la necessità della sperimentazione, ricordo che quel codice l'ho provato con Access e non posso dire niente se provato in Oracle

    Ciao
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.