Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB.NET] Presentare il risultato di query nella finestra di output o in una msgbox

    Ciao amici,
    io vorrei contare i record di una tabella in cui il valore del campo "Ar" è uguale a s.
    E allora ho scritto le seguenti istruzioni:

    codice:
    ObjCommand.CommandText = "select count(Ar) from new_table1 where Ar='s'"
            ObjCommand.ExecuteNonQuery()
    Però vorrei presentare il risultato nella finestra di output o in una msgbox. Come devo fare?
    Grazie.
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il metodo ExecuteNonQuery viene utilizzando quando si eseguono comandi, cioè statement SQL di inserimento, modifica o cancellazione, cioè comandi che non restituiscono un "resultset".

    Nel tuo caso, stai eseguendo un'istruzione SQL di SELECT, quindi stai richiedendo un'informazione a cui devi accedere (sul DB non ha alcuna influenza, non modifica alcun dato).

    Per questo scopo, devi eseguire il metodo ExecuteReader per ottenere un oggetto DataReader col quale puoi ispezionare il "record set" ottenuto; nel caso in esame, meglio ancora utilizzare ExecuteScalar, che restituisce il valore del primo campo per il primo record presente nel recordset, che è esattamente il conteggio che stai cercando.

    Per l'esecuzione del comando, "parametrizza" il valore specificato per la clausola WHERE seguendo le indicazioni che ho fornito oggi in questa discussione.

    Tutte queste informazioni sono tuttavia - come sempre - disponibili su MSDN, che va sempre consultata (in quanto contiene anche esempi) prima di postare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao Alka,
    grazie dell'intervento, hai ragione, bisogna usare il metodo executescalar.
    Ho risolto così:
    codice:
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            Dim ObjConnection As New FbConnection()
            Dim SQLresult1, SQLresult2, SQLresult3 As Object
            ObjConnection.ConnectionString = "servertype=1;username=sysdba;password=masterkey;database=" & My.Application.Info.DirectoryPath & "\Giorgio.gdb"
            ObjConnection.Open()
    
            Dim ObjCommand As New FbCommand()
            ObjCommand.Connection = ObjConnection
    
            ObjCommand.CommandText = "select count(Ar) from new_table1 where Ar='s'"
            SQLresult1 = ObjCommand.ExecuteScalar
            ObjCommand.CommandText = "select count(Ar) from new_table1 where Ar='a'"
            SQLresult2 = ObjCommand.ExecuteScalar
            ObjCommand.CommandText = "select count(Ar) from new_table1 where Ar='d'"
            SQLresult3 = ObjCommand.ExecuteScalar
            MsgBox("Nell'elenco ci sono:" & vbCr & SQLresult1 & " records relativi al tema" _
     & "'1° Tema' " & vbCr & SQLresult2 & " records relativi al tema '2° Tema' " & vbCr _
     & SQLresult3 & " records relativi al tema '3° Tema'" & vbCr _
     & "Totale: " & SQLresult1 + SQLresult2 + SQLresult3)
        End Sub
    Grazie.
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da giorgiogio48
    grazie dell'intervento, hai ragione, bisogna usare il metodo executescalar.
    Ho risolto così [...]
    Nel tuo caso, veniva utile usare anche i parametri, dato che lo statement SQL è sempre lo stesso, a parte il valore su cui si basa il filtro, ma ormai ho rinunciato a suggerirli perché sembra una moda di questo forum evitare come la peste la soluzione ottimale ad un problema.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.