Récupérer le résultat d'un SELECT (VB.net)

Résolu
Truc -  
 SAIH -
Bonjour,

je travaille avec une base de données SQL Server, je fait une simple requête sur ma table et elle me renvoie un seul résultat.

Mon problème c'est que je ne sais pas comment récupérer ce résultat que je souhaite afficher dans un TextBox.

Pouvez-vous m'aider SVP?

Merci d'avance.
Configuration: Windows Vista
Firefox 3.0.12

15 réponses

  1. byLPG Messages postés 17 Statut Membre 50
     
    je croyais que tu developpais dans ASP.NET.... c'est pour ça que je t'ai parlé d'url.... autant pour moi :

    donc tu es dans VB.NET : pour mettre une variable dans la requete SQL attachée a ton datasource, il faut mettre un @ devant le nom du champs : select toto,titi,tata from machin where nom = @mavariable

    automatiquement VS va reconnaitre la variable et il va te demander a quoi elle doit être egale :

    tu vas lui dire que c'est un controle, par exemple textbox1, et que la propriété qui t'interesse est ".text"

    a chaque actualisation il remplacera @mavariable par le contenu de textbox1.

    ça devrait resoudre ton probléme....

    ton probléme de schema c'est que tu créés un controle a partir d'une certaine requete, et qu'ensuite tu changes celle-ci sans modifier le controle. avec l'astuce du @mavariable tu n'aura plus ce soucis car le schema de la requete ne changera pas.

    LPG
    14
  2. byLPG Messages postés 17 Statut Membre 50
     
    tu peux mettre un controle gridview dans la même page et le rendre visible ou invisible quand c'est le moment. ça va te faire une table tres jolie, synamique, triable etc... (a configurer dans l'interface graphique comme d'hab).

    Mais bon si tu veux vraiment passer a une autre page, emporte avec toi le paramétre issue du textbox :
    le plus simple c'est de le mettre dans l'URL de la page destination, et tu le recupere ensuite apres ouverture de la page :

    - dans ta page de départ :
    page.redirect ("~/toto.aspx & "?nom=" & textbox1.text )
    (le "?" sert a indiquer un parametre dans une URL : il est suivi du nom de la variable = valeur)

    ensuite à l'arrivée, dans ta page toto.aspx tu peux récuperer ce parametre :

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    dim MyNom
    MyNom= Request.QueryString("nom")
    etc...

    et derriere tu fais ta requete et tu alimentes un gridview ou un datagrid ou n'importe quel control data.
    (c'est quand même plus simple que de fabriquer une table de A a Z).

    tient moi au courant...

    LPG
    10
  3. byLPG Messages postés 17 Statut Membre 50
     
    bon, on va faire ultra simple :

    au lieu de se faire chier avec les dataset, datadapter, sqlsources et autres databindings de VS, on va tout faire à la main :

    tu mets sur ta form un combo box et un datagrid, c'est tout !

    et dans le code tu mets ça : (tu changeras evidemment les requetes, les noms de serveur, de BD etc...)

    dans cette exemple je requete une table "magasins" par rapport au champs "nom" sur la base "commandes" du serveur VLPG01\SQLexpress.

    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    Public Class Form1
    Public i As Integer
    Public sqlSelect As String
    Public ConnSQL As New SqlConnection()
    Public ReadSQL As SqlDataReader
    Dim ev As System.EventArgs
    Dim susername As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'remplissage de la combobox

    ConnSQL.ConnectionString = "Data Source=vlpg01\sqlexpress;Initial Catalog=commandes;Integrated Security=SSPI"
    ConnSQL.Open()

    sqlSelect = "SELECT [mag_nom] FROM magasins"
    Dim CommandSQL As New SqlCommand(sqlSelect, ConnSQL)
    ReadSQL = CommandSQL.ExecuteReader()
    Do While ReadSQL.Read()
    ComboBox1.Items.Add(ReadSQL.GetValue(0))
    Loop

    ReadSQL.Close()
    ConnSQL.Close()
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

    'selection dans la combo

    ConnSQL.ConnectionString = "Data Source=vlpg01\sqlexpress;Initial Catalog=commandes;Integrated Security=SSPI"
    ConnSQL.Open()

    sqlSelect = "SELECT * FROM magasins where mag_nom='" & ComboBox1.SelectedItem & "'"
    Dim dt As New DataTable

    Dim oSqlDataAdapter As New SqlDataAdapter(sqlSelect, ConnSQL)
    oSqlDataAdapter.Fill(dt)

    DataGridView1.AutoGenerateColumns = True
    DataGridView1.DataSource = dt
    DataGridView1.Refresh()
    ReadSQL.Close()
    ConnSQL.Close()

    End Sub

    End Class

    tu peux adapter tout ça a tes propres controles.

    amuses toi bien !

    lpg
    10
  4. progfann Messages postés 365 Date d'inscription   Statut Membre Dernière intervention   23
     
    cnx.open()
    com=new sqlcommand("select...",cnx)
    TextBox1.Text = com.ExecuteScalar()
    cnx.close()
    5
    1. SAIH
       
      thank you very much
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lorie-triger Messages postés 72 Statut Membre 22
     
    merci bien LPG :)
    mais aprat ca !
    j'ai toujours des problems dans la modification de la requete de base dans les datagrid view
    j'ai lu qu'il y a des etapes a suisvre afin de modifier cette requete
    je dois creer un tableadapter et puis dataset et plein de chose que je comprends pas :s
    je sais meme pas les etapes !
    et ca je l'ai trouvee sur un cours ado.net d'une ancienne verstion vb
    alors que moi je suis sur visual studio 2005 !
    alors vous dites quoi apropos de ca !?
    5
  7. byLPG Messages postés 17 Statut Membre 50
     
    oui c'est vrai que c'est un peu merdique tout ces datamachins :

    je suis habitué au dotnet et c'est bien plus simple qu'en Windows Form

    je vais essayer de faire ton truc et je te redis.
    4
  8. lorie-triger Messages postés 72 Statut Membre 22
     
    bonjour
    merci bien LPG
    tu m'as beaucoup aidée !!
    voila le code maintenant ca marche bien !

    Public Class Form1
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    ChargerDonnees()
    End Sub
    
    Private Sub ChargerDonnees()
            Dim connectString As String = "Server=ALI\SQLEXPRESS;Database=TWO;Trusted_Connection=True;"
            Dim connection As New System.Data.SqlClient.SqlConnection(connectString)
            Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM assia where testoo='" & TextBox1.Text & "'", connection)
            Dim dt As New DataTable
            Dim adpt As New Data.SqlClient.SqlDataAdapter(command)
            Try
                connection.Open()
                adpt.Fill(dt)
                DataGridView1.DataSource = dt
            Finally
                connection.Close()
            End Try
    End Sub
    End Class
    


    PS : merci a toi aussi tomlev :)
    4
  9. lorie-triger Messages postés 72 Statut Membre 22
     
    et si on veut mettre les resultats dans un tableau !!
    comment faire ?!
    par exemple dans un 1er form on insere le nom puis on clique sur le bouton et on affiche toutes les donnees existante dans une table "personne" et qui conserne cette personne qu'on vient de taper le nom !!
    je veux juste les etapes et ce que je dois utiliser :)
    merci bien !
    3
  10. byLPG Messages postés 17 Statut Membre 50
     
    et bin c'est pas compliqué millard de diou !

    sur ta form tu met un text box "textbox1" et un bouton quelconque.
    tu ajoutes autant de textbox que tu as de champs dans ta table (textbox2,3 etc...)

    tu doubles clic sur le bouton et tu arrives dans le code. là tu mets

    (je pars du principe que tu as déclaré tout le binz avant, et mis les imports necessaires)

    connsql.open()
    sqlselect = select nom, prenom, age, taille, couleur, genre, QI from matable where nom='" & textbox1.text & '"
    Dim CommandSQL As New SqlCommand(sqlSelect, ConnSQL)
    ReadSQL = CommandSQL.ExecuteReader()
    ReadSQL.Read()

    textbox2.text = ReadSQL.GetValue(0)
    textbox3.text= ReadSQL.GetValue(1)
    textbox4.text = ReadSQL.GetValue(2)
    ... etc....

    readsql.close
    connsql.close
    connsql.dispose

    et pis c'est tout !

    nb: tu enroberas tout ça dans de la barbe a papa histoire de faire joli (des labels devant les textbox et tout le cinéma).

    bon courage !

    LPG
    3
  11. lorie-triger Messages postés 72 Statut Membre 22
     
    merci bien LPG
    mais c'est pas ca ce que je chereche !
    en fait je veux que les resultats s'affichent dans un tableau !
    je m'explique
    en premier lieu tu inseres le nom dans un textbox tu clique sur le bouton
    tu passes a un autre form la ou il y a les resultats du select concernant ce nom deja tapé sur un form1
    vous voyez !
    et en plus je veux que ces resultas s'affichent en tableau non pas en textbox !

    alors ce que je dois faire c'est faire la requete dans le code du bouton du 1er form
    puis la garder quelque par ! :S"la ou je me bloque"
    puis afficher ca en tableau ! ca m'echape aussi :(
    3
  12. lorie-triger Messages postés 72 Statut Membre 22
     
    bonjour
    merci bien LPG ^^'
    bon je vous dis quesque j'ai fait :
    j'ai pu garder la valeur de la variable du form1 pour la reaficher dans form2 dans un textbox !
    il suffit de faire
    Me.TextBox1.Text = Form1.TextBox1.Text

    alors maintenat j'ai la variable que je vais utiliser dans la requete select du datagrig view !
    ici vient le probleme a nouveau !
    quand je cree un datagrid view j'arrive pas a changer la requete de base !
    je m'explique :
    je clique sur le triangle de datagrid view
    puis je fais choisir la source de donnees
    je passe les etapes jusqu'a avoir la table que je veux et puis cette table s'affiche toute entiere
    je clique encore pour faire ajouter une requete
    et je l'ajoute je l'execute
    mais une fois je fais ok pour voir le resultat dans cette dataview grid !
    il me donne "le shema retourné pqr la nouvelle requete est different de celui de la requete de base "
    et la je bloque a nouveau !!
    et j'avais toujours ce problems de gestion des datagrid view !
    soit je fais le select de la table entiere et la ca marche
    si je veux modifier la requete je passe toujours par des view que je cree dans mon sqlsever et je les recupere dans le datagrid view
    mais la je peux pas l'utiliser car la variable est a saisir dans le form lui meme !
    3
  13. lorie-triger Messages postés 72 Statut Membre 22
     
    salut !
    et me voila encore une fois !!
    je suis vaiment malheureuse ..j'ai passé 2 jours et ca marche plus :(

    voila mon code :

    Public Class Form1
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim connectString As String = "Server=ALI-582A65A96CB\SQLEXPRESS;Database=ONE;Trusted_Connection=True;"
            Dim connection As New System.Data.SqlClient.SqlConnection(connectString)
            connection.Open()
            Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM assia ", connection)
            Dim mook As DataTable
            Dim hana As New Data.SqlClient.SqlDataAdapter(command)
            Dim DataGridView1 As New DataGridView
    
            hana.Fill(mook)  //  ici il bloque lors du debogage il me dit : la valeur ne peut pas etre null 
    
            DataGridView1.ColumnHeadersVisible = True  // ici il n'y a plus autogeneratecolumns
            DataGridView1.DataSource = mook
            DataGridView1.Refresh()
            connection.Close()
    
    
        End Sub


    ce visual studio 2005 n'a pas accepté beaucoups de mots de votre code je sais pas ..il est nouveau peut etre !!
    bon j'ai fait de mon mieux afin de pouvoir genrer ca a la main !
    mais ca marche pas !
    et aussi la requete il n'accepte plus la condition avec telle ecriture !:(
      Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM assia where testoo='" & textBox1.SelectedItem & "' ", connection)
    3
  14. byLPG Messages postés 17 Statut Membre 50
     
    bonjour Lorie, t'inquitée pas on a tous les même problémes au début.

    j'avais fait ce code sous VS2008 c'est pour ça que tu trouves quelques differences.

    quand tu remplis le datatable a partir du sqladapter ( hana.Fill(mook) ) il trouve dans ta table des champ avec la valeur NULL et ça y sait pas quoi en faire. pour contourner ce probléme, au lieu de prendre tout les champs sans rien controler, on va mettre une requete plus "intelligente" :

    a la place de "SELECT * FROM assia " tu vas mettre :

    "SELECT isnull(champ1, '0') , isnull(champ2,'0') ,isnull(champ3,'0') etc... FROM assia"

    ou champ1, champ2 etc... sont les champs de ta table (ceux que tu veux afficher dans le datagrid).

    le isnull( champs1, '0') veut dire : renvoi moi la valeur de champ1, et si elle est null tu met '0' a la place !

    en general on met '0' ou 0 sans quote pour les champs numeriques et 'Neant' ou 'vide' pour les champs texte.

    ensuite ton erreur sur le
    Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM assia where testoo='" & textBox1.SelectedItem & "' ", connection)

    ça vient du selecteditem : il faut préciser selecteditem.text...

    Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM assia where testoo='" & textBox1.SelectedItem.text & "' ", connection)

    quand à l'autogeneratecolumns, je suppose qu'il n'existe pas en 2005 (asp2) , mais en VS2008 (asp3.5)
    tu me diras si ça te pose un probléme (il ne devait pas servir a grand chose).

    bonne journée !
    1
  15. Youneci
     
    Le résultat ne peut pas être négative, tu peux passer toutes tes informations dans un fichier excel comme ça les diables ne peuvent pas t'emerder la vie :D
    1