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

Access Discussion :

[VBA-SQL] Recherche sur *nom*


Sujet :

Access

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut [VBA-SQL] Recherche sur *nom*
    Bonjour,
    je dois faire une recherche sur un nom et faire apparaitre tout les dossiers ou ce nom et renseigné. Mais il se peut que plusieurs personne peuvent être associé à ce dossier.
    ex:
    n°1 - maurice dupond
    n°5 - maurice dupond, bernard delaplace
    etc...

    Je voudrais savoir comment faire pour que lorsque l'utilisateur saisie : dupond
    celà me retourne dans un champ :
    1
    5
    // avec les numéros séparés par des retours chariot

    Par exemple est ce que ceci est possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select num_dossier from table where nom='*" & nom.value & "*';
    Merci

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    oui c'est possible
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM MaTable
    WHERE MonChamp Like "*dupon[dt]*"
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    Ok mais comment dois je faire pour remplacé dupond par un champ saisie sur formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE MonChamp LIKE "*nom.value[dt]*"

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    à utiliser dans un formulaire (à cause du Me.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL = "SELECT * FROM MaTable WHERE MonChamp LIKE ""*" & _
            Me.Controls("UnControle") & "*"""
    Citation Envoyé par GarsDuCalvados
    Ok mais comment dois je faire pour remplacé dupond par un champ saisie sur formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE MonChamp LIKE "*nom.value[dt]*"
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    ça correspond à quoi ça exactement ==> ("UnControle") & "*"""

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Mouak !
    ben le nom du controle qui contient le texte de ta recherche ...

    Citation Envoyé par GarsDuCalvados
    ça correspond à quoi ça exactement ==> ("UnControle") & "*"""
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    Le texte de ma recherche est dans un champ saisi sur un formulaire :
    nom.value

    donc

    where nom like ' * " + nom.value + " *'

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    mouak mouak !

    évite le + comme opérateur de concaténation, préfère le &.

    si ton contrôle s'appelle "nom", alors remplace "uncontrole" par "nom", ok ?

    Citation Envoyé par GarsDuCalvados
    Le texte de ma recherche est dans un champ saisi sur un formulaire :
    nom.value

    donc

    where nom like ' * " + nom.value + " *'
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  9. #9
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    Bon c'est bon la requete est bonne :
    sql = "SELECT num_dossier FROM table WHERE nom LIKE ""*" & Me.nom.Value & "*"""

    Le hic c'est que lorsque qu'il y a plusieurs dossier il ne m'affiche qu'un dossier dans la textbox de retour.

    Comment faire pour faire affiché tout les numéros dans une textbox séparé par des retour chariot ??

  10. #10
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    en parcourant le recordset des résultats de la requête ...

    cf la FAQ pour l'utilisation des recordset
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  11. #11
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    Ok je parcours mon enregistrement comme ça :
    Do While Not rs.EOF
    mais comment dois je faire pour les enregistrements dans une textbox séparé chacun par un retour chariot?

  12. #12
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    J'ai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          If Not rs.EOF Then
                ' On se place au premier enregistrement concerné
                 rs.MoveFirst
                Do While Not rs.EOF
                        ' Récupération du résultat
                         Me!resultat.Value = Me!resultat.Value + rs.Fields(0).Value
     
                   rs.MoveNext
                Loop
     
            End If
    ça me recupere bien tout les enregistrement et ça me les met bien tous dans ma textbox
    mais c'est ilisible il faudrait que je fasse un retour chariot

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Utilise la constante vb Vbcrlf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    If Not rs.EOF Then
                ' On se place au premier enregistrement concerné
                 rs.MoveFirst
                Do While Not rs.EOF
                        ' Récupération du résultat
                         Me!resultat.Value = Me!resultat.Value & Vbcrlf &  rs.Fields(0).Value
     
                   rs.MoveNext
                Loop
     
            End If
    Et met des & à la place des plus pour concaténer

    Starec

  14. #14
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Points : 144
    Points
    144
    Par défaut
    Ok merci c'ets good ça marche.
    Je vous remerci bien
    @+

    Code final ::
    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
        ' Assignation de la requète
         sql = "SELECT num_dossier FROM dossier WHERE nom LIKE ""*" & Me.nom.Value & "*"""
         ' Exécution de la requète
         Set rs = db.OpenRecordset(sql)
     
          If Not rs.EOF Then
                ' On se place au premier enregistrement concerné
                 rs.MoveFirst
                Do While Not rs.EOF
                        ' Récupération du résultat
                         Me!resultat.Value = Me!resultat.Value & vbCrLf & rs.Fields(0).Value
     
                   rs.MoveNext
                Loop
     
            End If

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

Discussions similaires

  1. [VBA-Excel]recherche sur plusiers feuilles
    Par salim_kwada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/08/2006, 16h38
  2. Recherche sur noms de colonnes
    Par philippe281281 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 25/07/2006, 17h13
  3. [VBA SQL] rechercher si un pattern est inclu dans un autre
    Par Nenette_cherie dans le forum Access
    Réponses: 4
    Dernier message: 28/04/2006, 09h05
  4. [VBA-E] Recherche le NOM d'un fichier ...
    Par le_sonic dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2006, 11h34
  5. [PostGre SQL] Recherche sur un champs
    Par Cyberbob002 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/01/2006, 11h57

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