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 :

Procedure de recherche? [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par défaut Procedure de recherche?
    Bonjour tous le monde et surtout qui sont en veille comme moi.

    J'ai fais un grand pas dans mon prg (Ajout, Suppression, Modification) et cela grâce a ce forum. il me reste que le procédure de recherche sur 1 critère ("CIN") puis sur 3 critères différents (exemple: "CIN" seul ou "CIN" et "CNRPS" ou "CIN" et "CNRPS" et 'ASSURANCE" sont tous de type Réel Double).

    voici mon code de suppression pour donner une idee sur ma connexion a la base et ce qui suit ...

    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
     Cn.Open() 'Ouvrir la connexion 
            If Cn.State = ConnectionState.Open Then 'Vérifier si la connexion est faite
                ' MsgBox("La connexion est établit.", 0 + 64, " Réussi") 'Message en cas connexion 
                Cmd.CommandText = "Delete From  TPersonnels where CIN = " & Val(TxTCIN.Text) & ""
                Cmd.Connection = Cn
                Cmd.ExecuteNonQuery()
                TxTCIN.Text = ""
                TxTCNRPS.Text = ""
                TxTAssurance.Text = ""
                TxTGroupe.Text = ""
                            Cn.Close() 'Fermeture de la connexion
                Afficher1()
                MsgBox("Enregistrement Supprimer", 0 + 64, "Réussi")
            Else
                MsgBox("La connexion a échoué. Vérifier la connexion réseau ou l’existence de la base", 0 + 16, " Échec") 'Message en cas d’échec
                Cn.Close() 'Fermeture de la connexion
            End If
    ainsi je cherche un aide pour la recherche si cet ouvrier existe ou non lors de sa création ou lors du suppression.

    je sais que c'est du gâteau pour vous. merci comme même.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    Il faudrait penser à utiliser des requêtes paramétrées, ça simplifierait les choses, ça serait plus propre, etc.

    En dehors de ça je ne vois pas ce qui vous pose problème exactement ?
    Vous ne savez pas comment faire en sorte qu'on choisisse soit 1 critère, soit un autre, soit 2 combinés, soit les 3 combinés ?

    Le mieux est probablement de faire un If et de générer la requête avec les Where qui vont bien en fonction de ce que vous voulez comme critères

  3. #3
    Membre averti
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par défaut demande d'aide
    bonjour.
    je voulais un code source qui me fait un recherche suivant un critère (exp: CIN) et m'affiche l'enregistrement dans des TextBox pas dans DataGridView.
    C'est la mon problème.
    Merci.

  4. #4
    Membre averti
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par défaut Comment faire un recherche dans une base access avec VS12
    EDIT SANKASSSSS : Message provenant d'une deuxième discussion créée par MoMeBe qui a été fusionnée.

    Rebonjour.

    j'essaye de clarifier ma question, car je crois qu'il y a quelques amis qui sont fâchées de moi (de ma question débile et incompréhensible).

    En bref.

    J'ai un base de donnée Access 2007, un interface VB (Form)qui contient des TextBox, des ComboBox, des TabPage mais pas de DataGridView .

    Ma forme contient tous les champs concernant un enregistrement et pas un tableau de tous les enregistrements, c'est pour cela que je n'utilise pas un DataGrid.

    Je peux ajouter un employer, modifier ou supprimer un enregistrement de ma base.

    Ma question est comment faire un recherche d'un enregistrement dans ma base et l'afficher dans ma Form ?

    J'espere que ma question est lisible.

    Merci pour tout le monde.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    Bonjour MoMeBe,

    Afin de faciliter la tâche à tout ceux qui souhaitent t'aider, il t'est demandé de fournir les erreurs obtenues, ou d'expliquer le comportement inhabituel de ton code. Te contenter de dire « je voulais un code source qui me fait un recherche suivant un critère » n'est pas suffisant ...
    Je t'invite à éditer ton message afin de nous dire où tu bloques précisément.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Cela devrait ressembler à ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Dim dr As OleDbDataReader
            '...
            ' requête paramètrée, ici exemple pour access
            cmd.CommandText = "SELECT CNRPS, Assurance FROM TPersonnels where CIN = ? "
            cmd.Parameters.Add("CIN", System.Data.OleDb.OleDbType.Double) ' étonnant que la clé soit en double
            cmd.Parameters("CIN").Value = txtId.Text
            dr = cmd.ExecuteReader()
            dr.Read
            TxTCNRPS.Text = dr("CNRPS")
            TxTAssurance.Text = dr("Assurance")
    Avec access les paramètres doivent être ajouté dans l'ordre de la requête.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    EDIT SANKASSSSS : Message provenant d'une deuxième discussion créée par MoMeBe qui a été fusionnée.
    Bonjour,
    Exemple pour une recherche : Exemple dans votre autre post

    Cour sur ADO

    Cour sur les requêtes paramétrées

    Cour général sur ADO

    Pour savoir si une ou plusieurs ligne existe lors d'une requête "SELECT" vous avez la fonction HasRows du DataReader qui renvoi une valeur boolean. (True ligne(s) présente(s), False pas de ligne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    Using reader As OleDbDataReader = Commande.ExecuteReader()
                        If reader.HasRows Then MessageBox.Show("Une ou plusieurs lignes existent")
                    End Using
    A+, Hervé
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonjour,

    j'ai fusionné les deux discussions vu qu'il s'agissait du même sujet comme l'a souligné rv26t.
    Les messages 4 et 7 proviennent de la deuxième discussion.

  9. #9
    Membre averti
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par défaut Erreur
    Salut

    Merci monsieur rv26t pour ton aide. J'ai essayeee ton code mais le meme message d'erreur.

    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
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            
    
            ' Ils ont été déclaré dans un ModuleGlobal.vb
            'Public Cn As New OleDbConnection("Provider=MicroSoft.ACE.OleDb.12.0; Data Source =Y:\DGUI2014\DGUI 2014.accdb")
            'Public Cmd As New OleDbCommand
            'Public Dr As OleDbDataReader
            'Public Da As New OleDbDataAdapter
            'Public Dt As New DataTable
            'Public Ds As New System.Data.DataSet
    
            Dim SQ As String
            Cn.Open()
            SQ = " Select CNRPS, AssuranceFrom TPersonnels where CIN = '" & TXTCIN.Text & "'"
            Cmd.CommandText = SQ
            Cmd.Parameters.Add("CIN", System.Data.OleDb.OleDbType.Double)
            Cmd.Parameters("CIN").Value = TXTCIN.Text
            Dr = Cmd.ExecuteReader() ' Erreur ICI dans la ligne 18 " Type de données incompatible dans l'expression du critère."
            Dr.Read()
            TXTCNRPS.Text = Dr("CNRPS")
            TXTMutuel.Text = Dr("Assurance")
            Cn.Close()
    
        End Sub
    Je n'ai pas de solution.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Citation Envoyé par MoMeBe Voir le message
    il me reste que le procédure de recherche sur 1 critère ("CIN") puis sur 3 critères différents (exemple: "CIN" seul ou "CIN" et "CNRPS" ou "CIN" et "CNRPS" et 'ASSURANCE" sont tous de type Réel Double).
    Edit : Houla j'étais pressé, je corrige.
    J'avais indiqué q'il ne faut pas de cote autour de TXTCIN.Text. (Je laisse l'info pour ceux qui procédent ainsi, mais cela n'est pas recommandé)
    La requête doit être comme dans le post N°6 que j'avais précédemment écrit comme exemple.
    Merci Sankasssss d'avoir rectifié le tir.
    Et attention à l'espace manquant entre Assurance et From.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    il faut remplacer la ligne 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            SQ = " Select CNRPS, AssuranceFrom TPersonnels where CIN = '" & TXTCIN.Text & "'"
            Cmd.CommandText = SQ
            Cmd.Parameters.Add("CIN", System.Data.OleDb.OleDbType.Double)
            Cmd.Parameters("CIN").Value = TXTCIN.Text
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            SQ = " Select CNRPS, AssuranceFrom TPersonnels where CIN = ?"
    car vous utilisez (comme il faut le faire) les requêtes paramétrées.

  12. #12
    Membre averti
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par défaut Remerciment
    Merci beaucoup cher rv26t.

  13. #13
    Membre averti
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par défaut Erreur inexplicable
    Bonjour

    Je n'arrive pas à dormir. Après avoir eu la réponse je me trouve sur un autre problème inexplicable. Le code source fonctionne correctement sur la Form principale (fenêtre contenants les TextBox où sont afficher les infos d'un Personnel), Le même code dans une Form de recherche ne marche 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
     Private Sub BtnOk_Click(sender As Object, e As EventArgs) Handles BtnOk.Click
    
            Cn.Open()
            SQ = " Select CNRPS, Mutuel From TPersonnels where CIN = " & TXTCIN.Text & ""
            Cmd.CommandText = SQ
            Cmd.Parameters.Add("CIN", System.Data.OleDb.OleDbType.Double)
            Cmd.Parameters("CIN").Value = TXTCIN.Text
            Dr = Cmd.ExecuteReader() ' Erreur "ExecuteReader: Connection property has not been initialized."
            Dr.Read()
            'FrmPersonnels.TXTCIN.Text = IIf(IsDBNull(Dr("CIN")), "", Dr("CIN"))
            FrmPersonnels.TXTCNRPS.Text = IIf(IsDBNull(Dr("CNRPS")), "", Dr("CNRPS"))
            FrmPersonnels.TXTMutuel.Text = IIf(IsDBNull(Dr("Mutuel")), "", Dr("Mutuel"))
            FrmPersonnels.TXTNumBadge.Text = IIf(IsDBNull(Dr("NumBadge")), "", Dr("NumBadge"))
            FrmPersonnels.TXTPreNomPers.Text = IIf(IsDBNull(Dr("PreNomPers")), "", Dr("PreNomPers"))
            FrmPersonnels.TXTPerePers.Text = IIf(IsDBNull(Dr("CNRPS")), "", Dr("CNRPS"))
            FrmPersonnels.TXTNomPers.Text = IIf(IsDBNull(Dr("NomPers")), "", Dr("NomPers"))
                    Dr.Close()
            Cn.Close()
    
            FrmPersonnels.Show()
            Close()
        End Sub
    La Form Recherche contient 4 TextBox (pour la recherche soit par CIN ou par CNRPS ou par Mutuel ou par NumBadge) et 2 Boutons (Ok et Annuler)

    il est 04:13 du matin C'est moi

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    La propriété connection pour la commande n'est pas renseignée.
    Et pensez à utiliser les requêtes paramétrées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQ = " Select CNRPS, Mutuel From TPersonnels where CIN = ? "
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  15. #15
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Et pensez à utiliser les requêtes paramétrées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQ = " Select CNRPS, Mutuel From TPersonnels where CIN = ? "
    J'appuie cela pour deux raisons, la première est qu'il y a plein d'avantage à utiliser les requêtes paramétrées (facilement trouvable sur internet), la deuxième est que vous utilisez les paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Cmd.Parameters.Add("CIN", System.Data.OleDb.OleDbType.Double)
            Cmd.Parameters("CIN").Value = TXTCIN.Text
    Et que si vous ne le mettez pas dans la requête, l'application devrait planter.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/11/2020, 14h55
  2. Réponses: 2
    Dernier message: 25/02/2011, 08h48
  3. Recherche procedure ou tuto de migration Exchange 2007 à 2010
    Par michael10fr dans le forum Exchange Server
    Réponses: 2
    Dernier message: 20/01/2011, 00h09
  4. procedure recherche d'un mot dans toutes les bdd
    Par asmar dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/11/2009, 10h10
  5. procedure recherche en matlab
    Par hanou88 dans le forum MATLAB
    Réponses: 19
    Dernier message: 30/04/2009, 16h12

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