Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138

    [vb.net 2008] usare equals per eguagliare il risultato di una query con una variabile

    all'avvio di un form eseguo una query che ha il compito di verificare che un preciso numero sia presente in un determinato campo di una tabella.. fin qui tutto bene solo che vorrei che qualora il numero non fosse trovato l'applicazione terminasse.. per fare questo ho usato equals nel modo che segue ma non ci riesco.. cosa sbaglio ?
    codice:
    Dim numero As String = "1001G"
            Dim ricerca As New OleDb.OleDbDataAdapter("SELECT * FROM Articoli_anagrafica WHERE Codice_barra = @Valore1", archivio)
            ricerca.SelectCommand.Parameters.Add("@Valore1", OleDbType.Char).Value = numero
            ricerca.Fill(da, "Articoli_anagrafica")
            Dim lettura_ricerca = da.Tables("Articoli_anagrafica")
            Dim row() As DataRow = lettura_ricerca.Select()
            If row.Equals(numero) = True Then
                Me.Close()
            End If
    
    
            DataGridView1.DataSource = da.Tables(0)
    
        End Sub

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    io farei così

    codice:
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim ValoreDiControllo As String = "Pietro"
    
            Dim StringaConnessione As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dati\test\test.mdb"
    
            Dim result = ExecuteScalar(StringaConnessione, "select nome from tabella1 where id = 1")
            If Not (Not (result Is Nothing OrElse result Is DBNull.Value) AndAlso result.ToString = ValoreDiControllo) Then
                Application.Exit()
            End If
    
            'altro codice: test superato
            Me.Label1.Text = "test superato"
    
        End Sub
    
    
    
        '-------------------------------------------------------------------------------------------------
        'Esegue la query e restituisce la 1° colonna della 1° riga del recordset trovato
        '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 Function ExecuteScalar(StringaConnessione As String, stringaSQL As String) As Object
            Dim Connessione As OleDbConnection = Nothing
            Dim Comando As OleDbCommand
    
            Try
                Connessione = New OleDbConnection(StringaConnessione)
                Connessione.Open()
                Comando = New OleDbCommand(stringaSQL, Connessione)
    
                Return Comando.ExecuteScalar()
    
            Catch er As Exception
                Throw
            Finally
                If Connessione IsNot Nothing Then Connessione.Close()
            End Try
    
        End Function
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    Grazie del suggerimento più tardi lo proverò... solo che io invece di questa variabile vorrei verificare la scadenza di certi elementi con un mese di anticipo.. con le date un po ci so lavorare ma non so come far capire al programma di seganelare quei elementi che scadranno tra un mese.. hai qualche idea ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    ho provato il tuo metodo ma l'applicazione si chiude a prescindere se il testo venga trovato o meno.. avevo avuto lo stesso problema usando equals.

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da frank095
    ho provato il tuo metodo ma l'applicazione si chiude a prescindere se il testo venga trovato o meno.. avevo avuto lo stesso problema usando equals.

    bisogna vedere cosa hai fatto! Ho collaudato quel codice provando con un database Access.
    Nota che il codice fa distinzione tra maiuscole-minuscole.
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    Io nel mio codice e ho tralasciato la tau seconda parte di codice e al posto di "executescalar" ho usato sempre il "dataadapter" perché non voglio che mi trovi solo il primo risultato ma tutti i risultati... comunque per il fatto di sapere la scadenza di un elemento con un mese di anticipo mi puoi aiutare? Come posso,fissata una determinata data di scadenza, ottenere una sorta di promemoria con un mese di anticipo.. in sostanza dal giorno corrente vorrei sapere tutti gli elementi che scadranno tra un mese :-)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    mi sono dimenticato a postare il mio codice :
    codice:
    fileReader = _
            My.Computer.FileSystem.OpenTextFileReader(Application.StartupPath + "\" + "Config.txt")
    
            stringReader = fileReader.ReadToEnd()
            archivio = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + stringReader)
            Dim numero As String = "1001G"
            Dim ricerca As New OleDb.OleDbDataAdapter("SELECT * FROM Articoli_anagrafica WHERE Codice_barra = @Valore1", archivio)
            ricerca.SelectCommand.Parameters.Add("@Valore1", OleDbType.Char).Value = numero
            ricerca.Fill(da, "Articoli_anagrafica")
            
            If Not (Not (ricerca Is Nothing OrElse ricerca Is DBNull.Value) AndAlso ricerca.ToString = numero) Then
                Application.Exit()
            End If
    
    
            DataGridView1.DataSource = da.Tables(0)
    cosa sbaglio ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    scusate se aggiungo un post dopo l'altro ma ho risolto il problema per quanto riguarda il controllo con un mese di anticipo facendo così "Dim oggi As Date = Today
    oggi = Today.AddMonths(1)"

    in questo modo alla data corrente viene aggiunto un mese ora mi rimane solo il problema precedente

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    Nessun mi può aiutare con questo problema ??

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    io vorrei che se la query non trovasse nessun riscontro nel database ,e quindi la clausola WHERE non fosse confermata, l'applicazione si chiudesse. il problema stà qui :
    codice:
    If Not (Not (ricerca Is Nothing OrElse ricerca Is DBNull.Value) AndAlso ricerca.ToString = numero) Then
                Application.Exit()
            End If
    come faccio a dirgli di chiudersi se non trova niente ?

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.