[VB .NET 2005] Lire les données de SQL Server

Résolu
angel59 -  
 km -
Bonjour,

Je développe une me permettant d'ajouter, de supprimer et de rechercher des éléments dans une base de données SQL Server.

L'ajout des données est réalisé.

Par contre la recherche de données et leur affichage m'échappe.

Dans une interface graphique, je saisis par exemple un nom et je souhaite le rechercher dans la base de données pour afficher l'ensemble des colonnes correspondant à ce nom dans un DataGridView. Mon prob est que je n'arrive pas à aller récupérer les informations dans la base de données. Si quelqu'un sait comment faire, ça m'aiderait beaucoup.

Merci d'avance.

--
Angel59 ;)
Configuration: Windows XP Pro SP2
Visual Studio 2005
SQL Server 2005

38 réponses

  • 1
  • 2
Résumé de la discussion

La problématique porte sur la recherche et l'affichage des enregistrements d'une base SQL Server dans un DataGridView à partir d'une interface VB.NET. Des réponses proposées privilégient l'utilisation d'un DataSet avec des BindingSources et des TableAdapters pour relier SQL Server à l'affichage, ou l'emploi d'un DataView et d'un filtrage sur DataTable. En cas de besoin, certains répondants montrent aussi des approches plus directes avec DataReader ou DataView afin d'obtenir rapidement les valeurs et de les afficher dans des contrôles. D'autres contributions indiquent que le choix entre DataSet/BindingSource et DataReader dépend du besoin d'édition en temps réel et de la complexité des requêtes et des transactions.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. angel59
     
    Prob résolu.
    28
    1. JmC97one
       
      je voudrais savoir comment as tu fais pour te connecter a la base et pour lire tes données en SQL a partir de vb
      0
    2. angel59 > JmC97one
       
      Salut,

      Tout d'abord bonne année. Et désolé de mettre autant de temps à répondre mais je ne passe plus beaucoup de temps sur ce forum.

      J'aimerais répondre aujourd'hui à ta question, mais il faut que je replonge dans mon code (depuis le temps) et je n'ai pas vraiment le temps actuellement. Je regarderais ce week end comment j'ai fait et te dirais quoi la semaine prochaine.
      0
    3. angel59 > JmC97one
       
      Bonjour,

      Voici la réponse à ta question. J'ai utilisé un DataSet pour faire le lien entre mon programme et la base de données SQL Server, des BindingSources pour faire le lien avec les différentes tables et des TableAdapters pour lesquels j'ai créé des requêtes SQL.

      Si tu veux je peux te passer mon code (il n'a rien de confidentiel et il n'a aucun brevet dessus ;) ) pour que tu puisses voir plus précisément. Mais pour cela, il faudra que tu me donnes un adresse mail (par MP) pour que je t'envoies le projet complet (sauf la base de données - mais je te donnerais les tables et champs à créer).
      0
    4. Nathalie 06 > angel59
       
      salut angel59,

      ton message date un peu, mais je serai ineteressée par ton code;
      je cherche à lire une base de donnée access 97 dans un programme vb2005; si tu pouvais me l'envoyer à cet email nat06@free.fr, ca serait sympa!
      merci d'avance;
      nathalie
      0
    5. Blessed > JmC97one
       
      Salut, j;aimerai aussi avoir le code dans Vb sans la base de donnees Sql (ou mm avec si c possible)pour voir plus clairement comment tu t'y est pris,mon email est uyasmine@gmail.com. Merci beaucoup. Y
      0
  2. hajarussa
     
    salut ,

    Même pb avec la recherche sous vb.net et sql 2005, pourriez vous nous passer le code.

    Merci d'avance
    voilà mon code
    Private Sub bt_search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_search.Click
    Dim recherche As String
    recherche = InputBox("Veuillez saisir le nom du Patient ")
    If Not recherche = String.Empty Then

    On Error Resume Next
    'definition de notre table
    Dim Matable As DataTable
    Matable = DS_cabinet.Tables("_tbPATIENT")

    'cree un objet dataview pour filtrer les enregistrements
    Dim filtre As New DataView(Matable)
    filtre.RowFilter = "nom like '*" & recherche & "*'"

    'affiche les valeurs
    txt_id.Text = filtre.Item(0)(0)
    txt_nom.Text = filtre.Item(0)(1)
    txt_prenom.Text = filtre.Item(0)(2)
    txt_s.Text = filtre.Item(0)(3)
    txt_a.Text = filtre.Item(0)(4)
    txt_p.Text = filtre.Item(0)(5)
    txt_adr.Text = filtre.Item(0)(6)
    txt_tel.Text = filtre.Item(0)(7)
    txt_m.Text = filtre.Item(0)(8)

    End If

    End Sub
    2
  3. salima111
     
    Bonjour,

    Merc i bcp, mais moi je connais bien faire ce code là et voila comment !!

    Dim Reader As OdbcDataReader
    Reader = commande.ExecuteReader()
    While Reader.Read()
    Dim oo As String = ""
    Dim i As Integer
    For i = 0 To Reader.VisibleFieldCount - 1
    oo += Reader(i).ToString + ""
    Next
    listbox1.Items.Add(oo)
    End While

    Et ça est deja executé sans aucun blem, jai pas de problemes avec laffichage , le seul souci c'est que je veux pas afficher les données dans une LISTBOX mais les affichées dans un DATAGRIDVIEW (les données dans un datagridview saffichent clairement), et je sais pas comment faire le code d'affichage pour le DATAGRIDVIEW !

    SI tu le connais merci de me le dire !

    Dsl pr le derangement !
    2
    1. anonymous
       
      sur Reader = commande.executeReader() j'ai un probleme avec commande ...
      c'est normale ?
      0
  4. adil
     
    salut tt le monde ,
    c la 1er fois que j 'essayé d utiliser sql server 2005 et vb.net (visual studio 2005),mes problèmes sans les suivants:
    1) je ne sais pas comment je peux indiqué les relations entre les tables a partir de visual studio 2005 !
    2) j arrive pas a établire la connection!!
    merci de m aider!!
    bj
    1
    1. km
       
      meme prob
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. trabelsineji808 Messages postés 6 Statut Membre 2
     
    Salut monde
    Je realise une application vb.net qui gere une base de donneé sql server 2005 local (client/serveur sur meme machine)
    SVP j'ai eu un probleme pour realiser la connexion et la manupilation (Insert, Update, ...)
    Qui peut me donne les etape pour les realiser
    mon Email est trabelsineji@yahoo.fr
    1
  7. nis
     
    salut,
    svp est-ce que je peux avoire un exemple qui explique comment lire les donnees d'une base de donnee sql server a partire du vb en mode connecte
    1
  8. stitch88
     
    salut stp je pourrai avoir ton code pour l'accès aux données mon ad est leelou_tem@hotmail.com. merci d'avance^^

    Bonjour,

    Voici la réponse à ta question. J'ai utilisé un DataSet pour faire le lien entre mon programme et la base de données SQL Server, des BindingSources pour faire le lien avec les différentes tables et des TableAdapters pour lesquels j'ai créé des requêtes SQL.

    Si tu veux je peux te passer mon code (il n'a rien de confidentiel et il n'a aucun brevet dessus ;) ) pour que tu puisses voir plus précisément. Mais pour cela, il faudra que tu me donnes un adresse mail (par MP) pour que je t'envoies le projet complet (sauf la base de données - mais je te donnerais les tables et champs à créer).
    1
  9. julien
     
    salut
    sous quelle version de SQL server 2005 tu travail la standard !
    0
  10. progfann Messages postés 365 Date d'inscription   Statut Membre Dernière intervention   23
     
    bonsoir,

    s'il vous plait je voulais un code d'une base de donnée sql server crée sous le vb.net,

    merci d'avance...

    voila mon email: progfann@gmail.com

    remerci...
    0
    1. imen
       
      svp g un projet ds l'sgbd avec le vb je c pa comment crée des tables d'un sql à l'aide d'un vb svp si vous avez la reponse aidez moi..merci
      0
  11. wgreg Messages postés 1 Statut Membre
     
    Bonjour Angel59,
    Pourrais-tu m'envoyer sur greg_3008@yahoo.fr ton projet par mail s'il te plait ?
    Je cherche aussi à intéragir avec une base de données en vb2005.

    Merci d'avance.
    à bientôt.
    Greg
    0
  12. maestro1303 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
     
    Bonjour,

    J'ai un serveur sous sql 2005 server(auquel je ne connais presque rien, mais je suis un utilisateur avancé de Mysql et je connais bien le langage SQL). J'ai deux contraintes:

    1. Sur ce serveur tournent plusieurs applications et BD et je veux être sûr de ne rien déranger en créant ma petite base de données à part de façon bien cloisonnée avec les autres syèstèmes.
    2. Si j'ai choisi d'avoir recours à sql 2005 server, c'est bien pour pouvoir utiliser l'environnement de programmation et aussi les stored procedures.
    3. Je ne connais pas par où commencer déjà pour crééer ma BD et mes tables que je connais bien et qui sont limitées, si quelqu'un peut me donner un bon tuto pour commencer ou un coup de pouce.

    Merci infiniment.

    Voilà le problème que j'ai évoqué sur plusieurs forums il y a plus d'un mois et qui est resté malheureusement sans réponse:

    J'ai un problème que je ne suis pas arrivé à regler, et je serais vraiment reconnaissant si quelqu'un peut m'aider à y arriver: j'ai une table dont chaque enregistrement est ainsi constitué

    désignation ,x,y ,z,t avec x,y,z et t des valeurs numériques et je voudrais pouvoir dire pour chaque ligne l'ordre décroissant des colonnes x, y, z et t

    Voici un exemple de quelques valeurs extraites du tableau initial:

    Valeur1 29.802 58.6891 22.144872 17.389612
    Valeur2 59.469 117.3457 44.164955 34.746724
    Valeur3 14.9148 29.3492 11.08262 8.699456
    Valeur4 950.515 1875.7157 706.012579 555.422693
    Valeur5 118.915 234.6812 88.317102 69.483248
    Valeur6 7.5314 14.7284 5.5969 4.403528
    Valeur7 1901.03 3751.4314 1412.025158 1110.845386
    Valeur8 237.715 469.301 176.559313 138.905096
    Valeur9 3.8397 7.418 2.85404 2.255564
    Valeur10 475.315 938.5406 353.043735 277.748792
    Valeur11 1.9704 3.7448 1.465266 1.163582
    Valeur12 1.0427 1.9177 0.783776 0.627091

    Et voici un exemple ce à quoi je voudrais arriver

    Valeur1 1er 3ème 4ème 2ème
    Valeur2 1er 3ème 2ème 4ème
    Valeur3 2ème 3ème 4ème 1er
    Valeur4 4ème 3ème 1er 2ème
    Valeur5 1er 3ème 4ème 2ème
    Valeur6 3ème 1er 4ème 2ème
    Valeur7 2ème 3ème 4ème 1er
    Valeur8 2ème 3ème 4ème 1er
    Valeur9 4ème 3ème 1er 2ème
    Valeur10 4ème 3ème 1er 2ème
    Valeur11 1er 3ème 2ème 4ème
    Valeur12 4ème 3ème 1er 2ème

    1er, 2ème,3ème et 4ème sont par rapport au classement dans chaque ligne.

    Merci infiniment de toute aide ou indication.
    0
    1. adil
       
      bonjour
      1)pour la creation de la base de donnée et des tables, vous devez utilisé "Microsoft SQL Server Management Studio " qui est un outile trés simple qui facilite la creeation des bd (sql server 2005), la création des table et l établissement des defirente relation entre les table, alors il faut qu tu l instal .

      voici un lien qui montre comment l installer et comment utilisé:
      https://morpheus.developpez.com/sql-server-2005/

      2) lors de l installation du sql server 2005 , vous devez faire attention et bien choisir un mode d authentification que vous allez utilisé pour se connecté au serveur , noté qu il ya deux mode: authentification windows ,et authentification sql server (ici avec un mot de passe ...) ,voici un lien qui parle de ça :
      https://docs.microsoft.com/fr-fr/previous-versions/sql/sql-server-2005/ms143705(v=sql.90)?redirectedfrom=MSDN

      bj
      0
    2. adil
       
      pour l exemple ,j ai rien compris , est ce que tu n as pas trempé dans l exemple!!!
      0
  13. maestro1303 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
     
    Merci beaucoup Adil de ta réponse qui m'aidera sans aucun doute.

    Pour ce qui est de l'exemple imagine que tu as une table T:

    T a la structure:

    Valeur :string
    coutA: float
    coutB: float
    coutC: float
    coutD: float

    Je vais peupler cette table avec quelques lignes:
    =====================================
    val1 | 1 |0.2|3|0.01|
    val2 |0.1|0.1|1|0.02|
    val3 |0.3|0.2|3|0.07|

    val4 |1 |0.2|3|0.01|
    val5 |1 |0.2|3|0.01|
    val6 |1 |0.2|3|0.01|
    val7 |1 |0.2|3|0.01|
    val8 |1 |0.2|3|0.01|
    val9 |1 |0.2|3|0.01|
    ....
    valn |1 |0.2|3|0.01|

    Considérons seulement les 3 premiers enregistrements correspondant à val1,2 et 3,

    je voudrais qu'à la fin de ma requête afficher
    val1 |3|2|4|1|
    val2 |2|3|4|1|
    val2 |3|2|4|1|

    donc le n° d'ordre croissant de la valeur du champ car pour val1 :
    le nombre réel 1 est le 3 ème en commençant du plus petit au plus grand au sein de cette même ligne
    le nombre réel 0.02 est le 2 ème en commençant du plus petit au plus grand au sein de cette même ligne
    le nombre réel 3 est le 4 ème en commençant du plus petit au plus grand au sein de cette même ligne
    le nombre réel 0.01 est le 1 er en commençant du plus petit au plus grand au sein de cette même ligne

    d'où le classement 3,2,4,1 au sein de cette ligne.

    En d'autres termes je veux une procédure qui me garantisse que le tri se fera au niveau de chaque ligne.

    Merci infiniment.
    0
    1. Pascal
       
      Bonjour,

      Ca peut etre fait avec une requete sql du type :

      select Valeur,
      case when CoutA > CoutB then 1 else 0 end +
      case when CoutA > CoutC then 1 else 0 end +
      case when CoutA > CoutD then 1 else 0 end + 1 as ClassementA,

      case when CoutB > CoutA then 1 else 0 end +
      case when CoutB > CoutC then 1 else 0 end +
      case when CoutB > CoutD then 1 else 0 end + 1 as ClassementB,

      case when CoutC > CoutA then 1 else 0 end +
      case when CoutC > CoutB then 1 else 0 end +
      case when CoutC > CoutD then 1 else 0 end + 1 as ClassementC,

      case when CoutD > CoutA then 1 else 0 end +
      case when CoutD > CoutB then 1 else 0 end +
      case when CoutD > CoutC then 1 else 0 end + 1 as ClassementD
      from Table

      cdlt
      PaF
      0
  14. maestro1303 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
     

    ReBonjour à tous
    J'ai seulement entendu parler des procédures stockées et quelqu'un m'a dit qu'elles pourraient être mon sauveur et je veux bien le crooire et m'y mettre

    Merci Adill, merci à tous!
    0
  15. adil
     
    salam
    je m 'excuse pr le retard ,mais je me suis pas connécté ces derniers jours
    code a testé en Vb.NET

    'declaration des variable de connexion
    Private nom_connexion As New SqlConnection
    Private cmd As New SqlCommand()
    Public myReader As SqlDataReader

    ' inicialisation de la chaine de connexion dans le cas d une authentification windows
    nom_connexion.ConnectionString = "server=nom_du_serverur;"& _
    "database=nom_de_la_base;"& _
    "Persist Security Info=false;" & _
    "Integrated Security=SSPI;"
    ' inicialisation de la chaine de connexion dans le cas d une authentification sql server
    nom_connexion.ConnectionString = "server=nom_du_serverur;"& _
    '"database=nom_de_la_base;"&
    '"Persist Security Info=True;" & _
    '"User ID=sa;" & _ 'sa ou un autre login!!
    '"Password=mot_de_passe;"
    ' ouverture de la connexion

    nom_connexion.Open()
    'initialisation de la commande

    cmd.Connection = nom_connexion

    i=1
    Do While i <> nbr_totale_de_lign
    str_ma_requette="SELEC Valeur,CoutA,CoutB,CoutC,CoutD From Ma_Table WHERE " & _
    " valeur = Val"& i.toString
    cmd.CommandText = str_ma_requette
    myReader = cmd.ExecuteReader()
    if(myReader.Read)
    Ma_Procedure_De_Tri(i,myReader.GetValue(1).toString,myReader.GetValue(2).toString,myReader.GetValue(3).toString,myReader.GetValue(4).toString)

    myReader.Close()

    i = i + 1
    Loop

    'la fonction Ma_Procedure_De_Tri

    Sub Procedur Ma_Procedure_De_Tri(ByVal i as int,ByVal ValA as String,ByVal ValB as String,ByVal ValC as String,ByVal ValD as String)
    'cette procedure doit stocké les 4 valeur dans une table :T
    ' effectué le trie de cette table (il ya +ieur méthode de trie !)
    'les resultat de l ordre doit etre stocké dans une autre table :Table_resultat :
    'si valA = T[k] alors tu dois Table_resultat[0]=k & eme
    'et si ValB =T[m] alors tu Tab_Resultat[1]=m et ansi de suite ....
    'puis tu inser ces valeurs dans ta base de donné apr le code suivant

    str_ma_requette="INSERT into Ma_Table(CoutA,CoutB,CoutC,CoutD ) Value" & _
    Table_resultat[0] & "," & Table_resultat[1] & "," & Table_resultat[2] & "," & Table_resultat[3] & _
    "WHERE Valeur =val" &
    " valeur = Val"& i.toString
    cmd.CommandText = str_ma_requette
    myReader = cmd.ExecuteReader()

    RQ: j ai pas tester ce code mais j espère qu il t aide un peut

    END Sub
    0
    1. soniabrini
       
      bonjour j'ai un probléme j'ai un datagridview vide je veux le code comment faire pour que mon data grid affiche les donne d'une table cree sur sql 7.et vb.2005
      merci
      0
  16. salima36
     
    bjr !
    Je voudrais savoir comment puis-je faire pour faire un login et mot de passe dans mon application vb.net qui compte sur la lecture des données sql server svp c urgent .
    Merci d'avance
    0
  17. salima111 Messages postés 1 Statut Membre
     
    Bjr !
    Svp puis-je savoir le code pr faire un login et mot de passe de mon application vb.net ki lit des données apartir d'une base de données SQl
    server !

    merci d'avance
    0
  18. adil
     
    salam salima,
    voici une classe de connexion que tu peut l'utilisée directement:

    Public Class ClasseConnexion

    Private nom_connexion As New SqlConnection
    Private cmd As New SqlCommand()
    Public myReader As SqlDataReader
    Sub New()
    'Connexion sans mot de passe
    ' nom_connexion.ConnectionString = "server=nomduserveur\SQLEXPRESS;" & _
    ' "database=nomdeBD;" & _
    ' "Persist Security Info=false;" & _
    ' "Integrated Security=SSPI;"

    'Connexion avec mot de passe
    nom_connexion.ConnectionString = "server=nomduserveur\SQLEXPRESS;" & _
    "database=nomdeBD;" & _
    "Persist Security Info=True;" & _
    "User ID=sa;" & _
    "Password=motdepasse;"

    End Sub

    Public Sub Ouverture()
    nom_connexion.Open()
    cmd.Connection = nom_connexion
    End Sub

    Public Sub Fermetur()
    nom_connexion.Close()
    End Sub

    Public Sub Requette(ByVal str_ma_requette As String)
    Dim Resultat As New String("")
    cmd.CommandText = str_ma_requette
    myReader = cmd.ExecuteReader()
    End Sub

    End Class

    et oici un exemle d'utilisation de cette classe:

    Private MaConnexion As New ClasseConnexion
    MaConnexion.Ouverture()
    StrRequette = "SELECT meschamps FROM matable
    MaConnexion.Requette(StrRequette)

    while (MaConnexion.myReader.Read) Then
    ListResultat = MaConnexion.myReader.GetString(LIndexduChampsqueTuVeux) 'ou getint ou .....
    'traitement
    endwhile
    MaConnexion.myReader.Close()
    'j ai passé bcp de tmps afin de savoir comment créeer et utilisé la classe connexion!!!!'

    bonne réception et je serai tjr a votre disposition
    0
  19. salima111
     
    Bonsoir ,

    Merci beaucoup AdIL

    On ma parlé de Procedure Stoquée k'il est trés important ...J'aimerai bien savoir de quoi il s'agit avec un exemple si c' possible bien sur !

    Un special Merci d'avance :)
    0
    1. ramdane
       
      Bonjour salima,

      je te donne mon code avec vb.net
      il faut céer une procedure stockée avec parametre avec sql server et lui donnée un nom ex enca
      '==========procedure stockée avec parametre ==============

      Dim param As New SqlClient.SqlParameter("@cp", SqlDbType.NChar, 10)
      cmd.Connection = conx

      ' type de la commande
      cmd.CommandType = CommandType.StoredProcedure

      ' nom de la procedure stockée
      cmd.CommandText = "encan.delcp"

      param.Value = InputBox("le code produit")
      cmd.Parameters.Add(param)
      cmd.ExecuteNonQuery()
      cmd.Connection.Close()

      j'éspére que ca t'aidera. Ramdane
      0
      1. ziados > ramdane
         
        Bonjour ;
        je travail avec VB net 2003 et SQl server 2000 , mais je veut travailler avec vb net 2005 mais j'ai quelque problemes de connexion et d'extraction des donneé puisque avec vb net 2003 j'utilise une datagrid pour selectionner , mettre à jour et ajouter des donneés dans ma base mais avec 2005 j'ai essayer d'utiliser un datagridview et j'ai trouver pas mal de difference qui m'enpaiche de continuer ( je peut vs donner la fonction que j'utilise avec vb net 2003)
        Enfin, Merci d'avance a votre aide
        0
      2. hasna > ziados
         
        slt
        merci ziados pour le code tu peut m'envoyer le code du modification et la recherche dans une bd sql server
        merci d'avance
        0
  20. naoual_sr
     
    Bonjour,
    je veux just un simple code qui me permet d'afficher le contenu d'une table sql en utilisant l'odbc dans une application vb.net
    0
  • 1
  • 2