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

    Passare valore di una textbox ad una Select

    Ciao a tutti,
    ho un problema nel passare il valore nella condizione di Where di una select.

    Premetto che nella tabella il campo Id è un Int
    Passo col seguente codice un valore da un form ad un altro, e vorrei che questo valore fosse dato in pasto ad una Select per restituirmi il record corrispondente.

    codice:
     Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Id_appoggio2 As Int32
    
    
            Id_appoggio2 = Form4.txtId_appoggio.Text
            Me.txtId.Text = Id_appoggio2
    
    
            Dim stringaconn As String
            Dim conn As SqlConnection
            stringaconn = "Data Source=localhost; Initial Catalog=Rubrica; Integrated Security=SSPI;"
    
    
            conn = New SqlConnection(stringaconn)
            conn.Open()
    
            Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id=Id_appoggio2", conn)
            Da = New SqlDataAdapter(Cmd)
            Cb = New SqlCommandBuilder(Da)
            Ds = New DataSet
    
            Da.Fill(Ds, "Persona")
            bs = New BindingSource(Ds, "Persona")
    
            txtNome.Text = DirectCast(bs.Current, 
    DataRowView).Item("Nome").ToString
            txtCognome.Text = DirectCast(bs.Current, 
    DataRowView).Item("Cognome").ToString
    
        End Sub
    Purtoppo non popola le textBox.
    Come posso risolvere?
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Programmare con i DB e non sapere unire una stringa e un intero mi sembra assurdo ...

    A parte il fatto che sarebbe meglio usare i parametri, una stringa e un intero li unisci con

    "stringa " + intero.ToString()
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    abbi un pò di pazienza...

    il discorso è che se scrivo la query nel seguente modo funziona:

    codice:
     Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id=2", conn)
    invece cosi no

    codice:
    Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id=Id_appoggio2", conn)
    penso sia una questione di Cast da string ad int. Sto provando diversi modi ma nn risolvo.
    Puoi spiegarmi meglio il tuo suggerimeto?
    Grazie

  4. #4
    ho provato a cambiare cosi, ma non funziona.

    codice:
    Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Id_appoggio2 As String
    
    
            Id_appoggio2 = Form4.txtId_appoggio.Text
            Me.txtId.Text = Id_appoggio2
    
    
            Dim stringaconn As String
            Dim conn As SqlConnection
            stringaconn = "Data Source=localhost; Initial Catalog=Rubrica; Integrated Security=SSPI;"
    
            Dim appoggio3 As Int32
           
            appoggio3 = appoggio3 + Id_appoggio2
    
            conn = New SqlConnection(stringaconn)
            conn.Open()
    
            Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id= appoggio3", conn)
            Da = New SqlDataAdapter(Cmd)
            Cb = New SqlCommandBuilder(Da)
            Ds = New DataSet
    
            Da.Fill(Ds, "Persona")
            bs = New BindingSource(Ds, "Persona")
    
    
    
    
            ' txtId.Text = DirectCast(bs.Current, DataRowView).Item("Id").ToString
            txtNome.Text = DirectCast(bs.Current, 
    DataRowView).Item("Nome").ToString
            txtCognome.Text = DirectCast(bs.Current, 
    DataRowView).Item("Cognome").ToString
    
        End Sub
    appoggio3 rimane zero, non passando cosi il valore alla Select.

    Qualche aiuto?

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Originariamente inviato da 19pantarei75
    abbi un pò di pazienza...

    il discorso è che se scrivo la query nel seguente modo funziona:

    codice:
     Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id=2", conn)
    invece cosi no

    codice:
    Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id=Id_appoggio2", conn)
    penso sia una questione di Cast da string ad int. Sto provando diversi modi ma nn risolvo.
    Puoi spiegarmi meglio il tuo suggerimeto?
    Grazie
    Ovvio che non funziona perchè id_appoggio2 è una variabile tu la lasci dentro la stringa!
    Se fosse PHP potresti anche salvarti ma non lo è

    Prova così:

    codice:
    Cmd = New SqlCommand("SELECT * FROM Persona WHERE Id=" & Id_appoggio2, conn)
    In questi casi comunque è meglio usarei parametri! Ti consiglio di leggerti qualcosa sui parametri di comando!

  6. #6
    Grazie veronica, funge!
    Funziona anche col +

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da 19pantarei75
    Grazie veronica, funge!
    Funziona anche col +
    Scusa ma cosa non capivi del mio suggerimento?

    Pazienza sì, ma se non si utilizzano neanche le risposte, che senso ha rispondere?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    hai ragione, il fatto che vengo da linguaggi come il php, come diceva veronica, dove me la cavavo con quel costrutto, e non riuscivo a capire che ti riferivi alla select e al passaggio del valore nel Where.
    Grazie comunque per aver risposto.

  9. #9
    Tip: in VB.NET come in PHP (anzi, in PHP di più a causa della tipizzazione dinamica), le query costruite in quella maniera sono da evitare causa rischi di SQL injection, il modo corretto è usare le query parametriche.

    (di passaggio, aggiungo il tag del linguaggio alla discussione )
    Amaro C++, il gusto pieno dell'undefined behavior.

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.