IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Recherche précise de données dans immense base de données SQL


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Par défaut Recherche précise de données dans immense base de données SQL
    Bonjour à vous,

    Me revoilà de plus belle avec un problème qui s'intensifie niveau complexité (enfin pour moi..) et comme j'ai visité des dizaines de pages et que j'ai vu tout et n'importe quoi..
    Voici mon problème, simple mais complexe :

    Je peux avoir accès à une grande base de données matériaux (style modules d'Young, coeff de dilatation, et j'en passe.. bref). Je souhaiterais afficher certaines de ces données dans un datagridview, certaines dans un combobox pour choisir un matériau par exemple et qui lierait alors d'autres textbox pour afficher les propriétés du matériaux.

    Problème 1 : je dois filtrer la BDD car elle contient plein de données mais je veux seulement celles relative à un code particulier (ASME)

    Problème 2 : je galère à faire la liaison sql, je sais qu'il faut que j'importe dans un DataAdapter puis un DataSet puis (enfin) le DataGridView (même si c'est très flou là..)

    Je donne un morceau de code pour savoir si je suis réellement à coté ou pas ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
        Sub Main()
     
            Dim Connexion As New SqlConnection("Data Source=NomServer;Initial Catalog=LàFautMettreQuoi?;User Id=******;Password=*******;")
     
            Try
                Connexion.Open()
     
                Dim Requete As String = "SELECT * from P_matieres"   'P_matiere est une table contenant diverses tables dont une par exemple que je veux, la table 'TE'
                Dim Commande As New SqlCommand(Requete, Connexion)
                Dim Adaptateur As New SqlDataAdapter(Commande)    ' créé un DataAdapter
                Dim DSToting As New DataSet
                Try
                    Adaptateur.Fill(DSToting, "P_matieres")   'rempli le DataAdapter
     
                    'Analyse du DataSet
                    For Each Ligne As DataRow In DSToting.Tables("P_matieres").Rows()     'là je sens que c'est du n'importe quoi..
                        Console.WriteLine(Ligne("TE").ToString)
                    Next
                    Dim DataView As New DataView(DSToting.Tables("P_matieres"))
     
                    DataView.RowFilter = "TC = 'ASME'"  ' là j'ai essayer de faire un semblant de filtre pour avoir la table TC pour le code asme uniquement   
     
     
                    TSP.DG_Toting.DataBindings(ds, "DGV1")   ' là ça remplit un DGV .. mais il me met une erreur, il est pas content, il n'aime pas "Databinding"
     
                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
     
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            Finally
                Connexion.Close()
            End Try
        End Sub
    Ce que je ne comprend pas, entres autres, c'est qu'il y a des trucs à faire sur les forms "lié aux données..." etc et qu'il y a aussi plein de truc à coder derrière ... :/
    Merci de votre aide,
    have a nice day !

  2. #2
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Amateur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 37
    Par défaut
    Bonjour,

    Déjà pour "filtrer", tu pourrais utiliser une clause WHERE dans ta requête SQL étant donné que tu cherches un code précis, je ne sais pas comment est dessinée ta Table, mais si tu as un champs code (celui qui contient ASME) tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim requete as String = "SELECT * FROM P_matieres WHERE code='ASME'"
    Ainsi, tu n'aura que les lignes dont le code est ASME
    pour ce qui est de récupérer les données, tu utilises soit une boucle si il y en a plusieurs, soit tu mets directement dans des variables. Mais si tu formules correctement ta requête alors le travail sera déjà bien dégrossi.

    Je ne sais pas si c'était ton problème... Mais voilà peut être déjà une piste

  3. #3
    Membre confirmé Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Par défaut
    C'est déjà une bonne piste ! Merci beaucoup j'essaierai te mettre ca en pratique des que possible !

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut
    Salut Adakhum;

    Si tu souhaite afficher les résultats de ta recherche dans un datagridview tu peut procéder de la manière suivante et ainsi éviter de le créer manuellement.

    Tu créer une nouvelle connexion via l'utilitaire de Vb.net directement sur ta BDD.

    Nom : co.png
Affichages : 697
Taille : 52,8 Ko

    Puis dans les paramétrés du datagridview tu te connecte à ton dataset et tu sélectionne ta table.

    Nom : data.png
Affichages : 676
Taille : 24,8 Ko

    Du coup, le datagridview va te génerer ce code qui permet de charger ta BDD sql dans le datagridview.

    Nom : ge.png
Affichages : 634
Taille : 6,4 Ko

    Petite question hors sujet tu est étudiant en quoi ?

    Si tu à encore besoin d'aide n'hésite pas !

    De plus effectivement la requête sql Select where te permet de filtrer les données.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Par défaut
    petite précision supplémentaire sur le poste de "Egeal67"
    quand on connais DOT.NET les source de donnée, c'est ce qu'il y a de plus rapide à faire mais c'est pas top pour apprendre

    ensuite dans la dernière image "les taches du DataGridView" il ne faut pas oublier de décocher les cases qui permette de supprimer des lignes ou modifier ou insérer
    (sinon tu va supprimer des enregistrement dans t'as base)


    si tu veux de l'aide pour tout crée à la main n'hésite pas


    (ps intéresse toi au bindingList même si c'est plus compliqué)

  6. #6
    Membre confirmé Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Par défaut
    Hello vous !

    Bonne année déjà ! Merci pour vos réponses que j'ai lues mais n'ai qu'appliquées que maintenant.

    Thanx Egeal67, je suis en master de physique spécialité Mécanique numérique pour être précis, ce qui fait que le vb.net à la base ce n'est pas trop ma branche ...
    Je suis plutot dans la modelisation et le calcul de structure par éléments finis par exemple etc ..

    Mais le programme y'a de la thermomécanique derrière du coup ça m'interesse un peu :p et le vb.net aussi on va pas se mentir mais avec cette BDD je galère ..

    Lorsque je fais comme toi (Egeal67) et que je démarre mon prgramme, j'ai bien les lignes "TODO ..." qui s'affiche au début de mon programme mais il y a une erreur, il ne veut pas accéder à la BDD, je ne sais pas pourquoi mais je me renseigne, pourtant le mot de passe est bon ..

    Normalement y'a que ça à faire ? :o ouah ..


    [EDIT]
    Bon ça faisait quelques temps que je ne m'étais pas penché sur le problème. Je reviens de plus belle pour donner quelques réponse si certains bloque comme moi à chercher dans une base de données SQL.

    Dans ma BDD j'ai plein de tableau, plein, plein. Parce que je n'ai pas trouvé ce que je cherchais sur le net mais j'ai dû pas mal glaner, je vais essayer de faire une synthèse de mes trouvailles.

    Mon But ultime : Choisir un paramètre dans un ComboBox (donc l'utilisateur sélectionne en fait une ligne parmi des centaines dans mon cas dans une Table située sur la BDD) > fait correspondre donc une ligne dans une table > exploiter toutes les infos de cette ligne (contenant plusieurs colonnes) > prendre les infos et les exploiter (car elles me mèneront dans d'autre tables et ainsi de suite ...)

    Pour cela, je créé une combobox, je fais utiliser des éléments liés aux données, puis dans source de données, ajouter la source ... Là en gros c'est Visual Studio qui prend la connexion en charge tout automatiquement. Il vous faut connaitre votre serveur, des identifiants et mot de passe si nécessaire et enfin le nom de la BDD.

    Ne pas oublier de cocher "oui enregistrer dans mon code les informations sensibles etc ..." sinon votre programme ne pourra pas aller taper dans la BDD.

    Quand vous avez fait ça vous pouvez sélectionner toutes les tables que vous souhaitez. ça créé automatiquement un dataSet et des dataTable. De plus, Visual vous a écrit une ligne dans votre prgrm.Load pour lancer la recherche de données dans votre BDD à chaque démarrage de programme.

    Ensuite comme personnellement mes tables sont grandes j'avais besoin de trier le tout. voici la syntaxe à utiliser pour faire des filtres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'TODO*: cette ligne de code charge les données dans la table 'BDDDataSet.Table_xxx'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Me.Table_xxxTableAdapter.Fill(Me.BDDDataSet.Table_xxx)
            TablexxxBindingSource.Filter = "Nom_de_votre_colonne Like 'Critère_de_filtre' And Nom_de_votre_colonne Like 'Critère_de_filtre' And Nom_de_votre_colonne >= 20000"
            'Les And sont là pour ajouter des filtres (ici 3) mais vous pouvez aussi trier selon les symboles >  <  =   etc ...
    J'ajoute que si vous voulez trié seulement avec un début de nom de critère vous pouvez seulement taper : "Nom_de_votre_colonne Like 'Critère%'"

    En espérant que ça aura aider certains, merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/06/2013, 17h21
  2. [MySQL] Recherche depuis une page dans une base de données
    Par illidan05 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/07/2009, 00h04
  3. recherche a la google dans ma base de données
    Par kanzarih dans le forum Débuter
    Réponses: 5
    Dernier message: 03/04/2009, 17h31
  4. Recherche par mot clé dans une base de donnée
    Par sihamsisim dans le forum ASP
    Réponses: 1
    Dernier message: 24/04/2008, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo