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 6 et antérieur Discussion :

[VB6]Recherche dans Access avec un recordset (DAO)


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut [VB6]Recherche dans Access avec un recordset (DAO)
    Bonjours, c'est encore moi
    J'arrive à la fin de mon application et la je me heurte à un problème par rapport aux déplacement avec un recordset.

    Je voudrai que selon l'OptionBouton selectionné l'application fasse une recherche dans ma base de donnée et affiche toutes les informations sur le bouteilles qui y correspondent dans des textbox.

    Donc j'arrive à faire une recherche normal, avec un .MoveNext.

    [1er problème]Mais lorsque clique sur precedent ( .MovePrevious ) il dit qu'il n'y a pas d'enregistrement. Apres quelque recherche j'ai ajouté des .EOF et .BOF!
    Mais ca ne change rien!

    [2nd problème]Et lorsque ca fonctionne (avec le .MoveNext pour le moment), il m'affiche les donnée des bouteilles d'une autre catégorie. C'est-à-dire qu'au lieu de m'affiché tout les Rouge-St Emilion les un apres les autres, il passe du Rouge St Emilion aux Champagne, puis aux Rosé,..

    Je pense que ma facon de faire est beaucoup trop grossiere (manque d'experience )

    Donc si vous voyez ce qui pourrait fonctionné ou si vous avez des remarques constructives à faire, n'hésitez pas!

    Vos opinions sont toutes les bienvenus.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Private Sub prev_Click()
     
      Dim db As DAO.DataBase
      Set db = OpenDatabase("BDD.mdb")
     
      If Option1.Value = True Then
        Set req_ent = db.OpenRecordset("SELECT *   FROM TAB_DEVIS Where Categorie LIKE '" _
                                           & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option2.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT * FROM TAB_DEVIS Where Appellation LIKE ('" _
                                            & TRes.Text & "*') ", adOpenDynamic)
      End If
      If Option3.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT *  FROM TAB_DEVIS Where Cru LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option4.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT *  FROM TAB_DEVIS Where Titre LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option5.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT * FROM TAB_DEVIS Where Fournisseur LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option6.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT * FROM TAB_DEVIS Where Contenant LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option7.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT * FROM TAB_DEVIS Where Millesime LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option8.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT * FROM TAB_DEVIS Where Prix LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
      If Option9.Value = True Then 
        Set req_ent = db.OpenRecordset("SELECT * FROM TAB_DEVIS Where Rangement LIKE '" _
                                            & TRes.Text & "*' ", adOpenDynamic)
      End If
     
      If req_ent.RecordCount > 0 Then
        req_ent.MovePrevious
     
        If req_ent.BOF Then
          Rep = MsgBox("Plus d'objet trouvé!", vbCritical)
        Else
          Rcat = req_ent!categorie
          Rapp = req_ent!Appellation
          Rtit = req_ent!cru
          Rcru = req_ent!Titre
          Rfou = req_ent!fournisseur
          Rcon = req_ent!contenant
          Rmil = req_ent!Millesime
          Rsol = req_ent!Solde
          Rprix = req_ent!prix
          Rran = req_ent!Rangement
        End If
     
      Else
        Rep = MsgBox("Aucun objet n'a était trouvé!", vbInformation, "Confirmation")
      End If
     
      req_ent.Close
      db.Close
     
    End Sub
    L'application est en VB6, la base de donnée est en Microsoft Access 2000 et la connexion est en DAO!

    Ps: j'ai essayé de rendre le code le plus lisible possible.

    Merci encore d'avance à tous.

  2. #2
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    salut

    pas tres bien compris ta question cependant regarde si lorsque tu fai un movenext il ne passe pa à la requete suivante et aussi au lieu de mettre des
    "like" met des "="

    voila essaye deja ca ca nous avancera un peu

  3. #3
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Désolé, mais j'ai renoncé à lire ton post. Présenté comme celà, au kilomètre, il est illisible.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Bonjours.
    Bon j'avais pourtant prit soin de tout détailler et de bien structurer pour que ce ne soit pas trop compliqué et illisible!

    En fait souhaiterai pourvoir faire une recherche dans ma base de donné et avoir des boutons souvant et precedant.
    Mais le bouton precedant ( avec .moveprevious) ne fonctionne pas.

    J'espere avoir était plus claire.
    Le code que je vous ai montré est celui du bouton precendant.

    Merci moulefrite pour tes conseils, je les essayerai ce soir.

    Merci à tous!

  5. #5
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Quel est le type de curseur que tu utilises. A priori, tu semble utiliser un curseur de type en avant seulement. Définis le type de curseur à dynamic.

    Quant à la présentation, ce n'est pas une question de structure, mais seulement de passer à la ligne pour les lignes de codes trop longues. Ainsi, tu restes dans des limites lisibles. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If Option1.Value = True Then Set req_ent = db.OpenRecordset_ 
    ("SELECT *   FROM TAB_DEVIS Where Categorie LIKE '" & TRes.Text & "*' ")
    C'est pas mieux

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Bonjours.
    J'ai restructuré mon code source comme vous me l'avez conseillé.
    Malheureusement j'ai beaucoup de travail ce soir! Je reviendrai demain pour dire si les modifications ont fonctionné et voir si il y a de nouvelles solutions proposées!

    Merci a tous et bonne soirée.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Bonjours.
    mouledrite, lorsque je met "=" à la place de "like" il ne trouve plus les donnée, et lorsque je fait un movenext il ne passe pas à la requette suivante.
    jacman, j'ai mis mon curseur en adOpenDynamic mais toujours le même probleme.
    D'autres propositions?

    Merci à tous

  8. #8
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Citation Envoyé par xdiethank
    mouledrite, lorsque je met "=" à la place de "like" il ne trouve plus les donnée, et lorsque je fait un movenext il ne passe pas à la requette suivante.
    MoveNext et requête suivante . Là je décroche. Tu voulais sans doute dire "enregistrement suivant".

    D'autres propositions?
    Essaie avec une seule requête et vois ce que celà donne. Et pour cet essai, donne nous toutes les propriétés de la connection et du recordset et le code.

    Le mieux que tu pourrais faire, c'est de créer un DataEnvironment et un objet Command et de voire leurs propriétés. Les propriétés par défaut conviennent parfaitement pour la connexion et la commande. Tu n'aurais donc qu'à t'en inspirer. Et en utilisant le générateur SQL de l'objet Command, tu obtiendrais une requête du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Nom FROM TAB_DEVIS WHERE (Categorie = 'valeur')
    et même une requête paramétrée comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Nom FROM TAB_DEVIS WHERE (Categorie = [param])
    J'ai mis 2 minutes pour obtenir ces deux requêtes (plus exactement des requêtes similaires avec une base de données que j'avais), et elles sont parfaitement opérationnelles.

    Pour finir, comme je le dis souvent, lorsque l'on rencontre une difficulté on divise le problème. Avec tout ton code, on se perd dans les détails au détriment du problème réel.

    PS: et s'il te faut un "LIKE' à la place d'un "=", c'est que le contenu de ta textbox est différent de la valeur du champ de la table (probablement une question d'espace à la fin).

Discussions similaires

  1. [VB6]Images dans access
    Par Alainpe dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 12/06/2006, 12h51
  2. Comment faire une recherche dans ACCESS
    Par Bass_Room dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 10h51
  3. Bouton Recherche dans access
    Par fouf_01 dans le forum VBA Access
    Réponses: 9
    Dernier message: 23/05/2006, 16h34
  4. Réponses: 4
    Dernier message: 28/04/2006, 23h21
  5. recherche dans access
    Par jeck dans le forum Access
    Réponses: 20
    Dernier message: 28/04/2006, 14h26

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