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 :

Requete parametrée access VB


Sujet :

VB.NET

  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut Requete parametrée access VB
    Bonjour,

    Après de nombreuses recherches sur internet, je n'ai toujours pas de réponse à mon problème...
    Voici mon souci : J'ai une requete parametrée qui fonctionne sous access

    SELECT Nom_indiv, Prenom_indiv
    FROM Individu
    WHERE Nom_indiv LIKE [Nom de l'élève :] & "*";

    J'aimerai savoir comment faire en vb pour indiquer que le parametre de la requete est une textbox sans avoir à réécrire toute la requete (faire en quelque sorte une procédure stockée sous access et accessible avec Visual studio 2005), et comment mettre à jour la liste des élèves qui se charge entièrement lors de l'ouverture de la fenetre.

    J'utilise ADODB.net...

    Petite précision : il s'agit d'une simple requete paramétré que j'arrive pas à integré en vb. J'aimerai qu'en tapant le début d'un nom d'élève dans un textbox, la listbox se mette à jour et ne garde que les èléves ayant un nom commençant par le texte saisie.
    A l'origine, la listbox contient tous les eleves de A à Z...

    Si quelqu'un pouvait m'aider car là je bloque depuis un moment

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Tu travailles donc dans l'vent keypress de ta textbox et la requete est :
    "SELECT Nom_indiv, Prenom_indiv FROM " & Nom_Table & " WHERE Nom_indiv LIKE '" & Textbox1.text & "%'"
    Voila et tu auras ce que tu veux
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    Je suis d'accord sur ce point là... ça je sais faire
    Cependant, le fait de recuperer la requete existante sous access et preciser à vb que le parametre dont il est question est la zone de saisie de mon application n'est pas résolu...

    sql =" select * From nomDeMaRequete Where param ='" & txtnom.Text

    J'aimerais trouvé un moyen qui me permettrais, en modifiant simplement la requete sous access, de modifier aussi la requete dans le code vb pour une utilisation plus simple

    C'est peut etre un plus clair non ? C'est peut etre impossible à faire entre access et vb mais bon... je tente !!

    La solution que vous m'avez donné, est la solution que j'envisageais de prendre si ce que je veux faire est impossible

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Ah dans ce cas je ne pense pas que ce soit possible sous Access... je te conseille d'utiliser ma solution qui est simple et claire non ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Ah dans ce cas je ne pense pas que ce soit possible sous Access... je te conseille d'utiliser ma solution qui est simple et claire non ?

    Non, tu conseilles d'utiliser un paramètre SQL

    lucie22 :
    Tu peux créer des paramètres SQL en VB aussi en utilisant maCommande.CreateParameter().
    Ensuite tu renseignes le type du paramètre, la valeur et tu l'ajoutes dans la liste des paramètres de ta commande. Il ne reste plus qu'à l'exécuter comme tu le fais d'habitude, avec un ExecuteReader() par exemple.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    Merci SaumonAgile, je vais essayer ta solution

  7. #7
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    SaumonAgile :

    Voilà le code que j'ai essayer de faire fonctionner:
    (cmd est le nom de ma commande déclarée en globale)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim rsajout As New ADODB.Recordset
            sql = "SELECT * FROM Vue_nomeleve"
            cmd.CommandText = sql
            cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
            cmd.ActiveConnection = cnx

    Code trouvé dans l'aide de Visual Studio 2005
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     ' Retrieve CustomerID to search for.
            Dim ID As String = TextBox1.Text
            Dim query As String = _
                "SELECT * FROM Orders WHERE CustomerID = @CustomerID"
            Dim cmd As SqlCommand = New SqlCommand(query, conn)
            cmd.Parameters.Add("@CustomerID", SqlDbType.VarChar, 5).Value = ID
            ' Code connecting to a data source has been omitted for brevity.
            Dim reader As SqlDataReader = cmd.ExecuteReader()
            ' Process results.
            reader.Close()
    Je ne sais pas comment faire pour adapter le code de l'aide au mien, ni comment faire pour ajouter les parametres à la requete. J'ai trouve comment le creer mais après, je ne sais pas

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim rsajout As New ADODB.Recordset
            sql = "SELECT * FROM Vue_nomeleve"
            cmd.CommandText = sql
            IDbParameter param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
            cmd.Parameters.Add(param)
            cmd.ActiveConnection = cnx
    EDIT : Et la prochaine fois, essaie de penser aux balises [CODE] (le bouton # dans l'éditeur de texte) pour formatter ton code. Merci.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    Merci, oui j'oubliais les balises désolée

    J'ai essayer le code que tu m'as donner, il y a deux lignes qui ne passe pas... Décidement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IDbParametre(param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant))
    cmd.Parameters.Add(param)

  10. #10
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Peux tu préciser l'erreur pour que SaumonAgile puisse t'aider ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  11. #11
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par lucie22 Voir le message
    Merci, oui j'oubliais les balises désolée

    J'ai essayer le code que tu m'as donner, il y a deux lignes qui ne passe pas... Décidement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IDbParametre(param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant))
    cmd.Parameters.Add(param)
    Essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDataParameter param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  12. #12
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    Je m'excuse car il est vrai que dans la précipitation avant d'aller en cours, j'ai oublier de préciser ou cela bloquait...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IDbParametre(param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant))
    cmd.Parameters.Add(param)
     
    IDataParameter param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
    Dans les deux cas, mon problème se situe au niveau de "IDbParametre" ou de "IDataParameter". J'ai essayer les deux et à chaque fois, ça m'indique "Variable non déclarée"

    Voilà pour la petite précision que j'avais oublié... Encore désolée

  13. #13
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    C'est normal c'est pas du vb.net ! En vb.net ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IDbParametre(param = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant))
    cmd.Parameters.Add(param)
     
    Dim param as IDataParameter = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  14. #14
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    Vue comme ça... Ca marche un peu mieux !! Cependant, (hé oui, mon problème persiste) après avoir lancer le débogage de l'application la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim param As IDataParameter = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
    est surlignée en jaune avec le message suivant :

    Impossible d'effectuer un cast d'un objet de type 'ADODB.InternalParameter' en type 'System.Data.IDataParameter'.

    Peut etre ai-je oublié de préciser quelque chose dans mon code que voici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim param As IDataParameter = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
            sql = "SELECT * FROM Vue_nomeleve"
            cmd.CommandText = sql
            cmd.ActiveConnection = cnx
            cmd.Execute()
    Je seche là...

  15. #15
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Peux tu me donner le code complet ?

    Le message d'erreur veut dire que tu essayes de faire une conversion impossible.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  16. #16
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut
    Le code complet est celui que je t'ai donné...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim param As IDataParameter = cmd.CreateParameter(Ajoutereleve.Text, ADODB.DataTypeEnum.adVariant)
    sql = "SELECT * FROM Vue_nomeleve"
    cmd.CommandText = sql
    cmd.ActiveConnection = cnx
    cmd.Execute()
    Je travail dans la procédure evenementielle textchanged... Et le code que j'ai est mis est ci-dessus.
    La zone de saisie Ajoutereleve.Text est une zone dans laquelle j'ai autorisé que les lettres
    sql est une variable chaine déclarée en globale
    cmd est egalement déclarée en globale en tant que ADODB.Command

    voilà pour cette partie du code

  17. #17
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Par défaut c bon !!
    Après un moi de recherche j'ai fini par trouver la solution à mon problème...
    Je le mets dans ce post, car il pourrait servir à d'autre personne

    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
     
    Dim rsAs New ADODB.Recordset
            Dim liste As New ADODB.Command
     
            liste.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
            liste.ActiveConnection = cnx
            liste.CommandText = "Nomrequete"
     
            liste.Parameters("[monparam]").Type = ADODB.DataTypeEnum.adLongVarChar
            liste.Parameters("[monparam]").Size = 20
            liste.Parameters("[monparam]").Value = zonedesaisie.Text
            rs = liste.Execute()
            listebox.Items.Clear()
            If Not rs.EOF Then
                Do While Not rs.EOF
                    listebox.Items.Add(rs.Fields("Champ1").Value & "  " & rs.Fields("Champ2").Value & "  " & rs.Fields("Champ3").Value)
                    rs.MoveNext()
                Loop
           End if
    Voilà !! c'est tout !

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

Discussions similaires

  1. requete avec parametre access-excel
    Par jokenjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/02/2008, 14h33
  2. Requete parametrée avec CristalReport de VB6?
    Par bonsam dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/12/2005, 09h22
  3. [C#] Requête MS Access (Problème avec Date)
    Par Erakis dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/02/2005, 22h54
  4. mes requetes sous access ne fonctionnent plus
    Par trialrofr dans le forum ASP
    Réponses: 12
    Dernier message: 04/12/2004, 21h52
  5. Requete parametrée TADOQuery
    Par cdlr27 dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/05/2004, 18h41

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