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

IHM Discussion :

Recherche dans sous formulaires


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 44
    Points : 39
    Points
    39
    Par défaut Recherche dans sous formulaires
    Bonsoir

    Je n'arrive pas à trouver, ni dans les FAQ, ni dans les tutoriels (ou j'ai mal cherché ce qui est possible) la façon d'afficher à la volée tous les enregistrements du sous formulaire qui commence par ce que je saisie dans un champ du formulaire principal en utilisant bien sur le joker *



    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
     
     Dim strTable As String, strField As String, strCriteria As String, strSql As String
        Dim Criter As Variant
     
        strTable = "Etablissements"
        strField = "Nom_etablis"
     
     
        strCriteria = strTable & "." & strField & " Like """ & Me.txt_critere & """"
     
       MsgBox (Me.txt_critere)
     
     
        ' construit la requête sql
        strSql = "SELECT DISTINCTROW " & strTable & ".*"
        strSql = strSql & " FROM " & strTable
        strSql = strSql & " WHERE ((" & strCriteria & "));"
     
     
        Me.SF.Form.RecordSource = strSql    ' affecte sql a lst_Resultat
        Me.SF.Requery             ' recalcule la liste

    Je voudrai bien entendu que le rafraichissement du SF se fasse tout au long de la saisie.

    Merci

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Si ce code fonctionnebiencomme je crois comprendre, il faut le mettre sur l'evenement "sur Entré" de ton champ de recherche.
    @+

  3. #3
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    Dans ce cas plutôt l'événement Change() et utiliser Me.txt_critere .Text pour référencer ta zone critère.
    ps: tu n'as rien trouvé dans la recherche multicritères qui puisse t'orienter?
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 44
    Points : 39
    Points
    39
    Par défaut
    je teste merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 44
    Points : 39
    Points
    39
    Par défaut Résolu
    Ok la solution est la. Merci à tous

    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
     
    Private Sub txt_critere_Change()
       Dim strTable As String, strField As String, strCriteria As String, strSql As String, valSai As String
       Dim Criter As Variant
     
        strTable = "Etablissements"
        strField = "Nom_etablis"
     
        valSai = Me.txt_critere.Text & "*"
     
     
        strCriteria = strTable & "." & strField & " Like """ & valSai & """"
     
     ' MsgBox (valSai)
     
     
        ' construit la requête sql
        strSql = "SELECT DISTINCTROW " & strTable & ".*"
        strSql = strSql & " FROM " & strTable
        strSql = strSql & " WHERE ((" & strCriteria & "));"
     
     
      Me.SF.Form.RecordSource = strSql    ' affecte sql a lst_Resultat
      Me.SF.Requery             ' recalcule la liste
    End Sub
    La recherche à la volée fonctionne en forçant le critere avec * et en plaçant le code sur Entrée

    Mercu

  6. #6
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Je te conseille d'utiliser DAO pour mieux gérer le cas où aucune occurence
    n'est retournée. Le fait que ce soit un ssform pose qqes soucis de ce côté là (à l'inverse de l'utilisation d'un form continu avec critère en entête du form). Un exemple et rien besoin de forcer
    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 Texte0_Change()
    On Error Resume Next
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
     
    Set db = CurrentDb
    sql = "SELECT Tbl.C1, Tbl.C2 FROM Tbl WHERE C1 Like '" & Me.Texte0.Text & "*' ORDER BY C1"
    Set rs = db.OpenRecordset(sql)
     
    rs.MoveLast  'Pour avoir le nombre d'occurrences
     
      If rs.RecordCount < 1 Then
        MsgBox "zéro trouvés pour" & " " & Me.Texte0.Text
        Me.Texte0.Text = Left(Me.Texte0.Text, Len(Me.Texte0.Text) - 1) 'Dernière saisie valide
        Me.Texte0.SelStart = 9999 'Curseur en bout de chaine
        Exit Sub 'Le dernier filtre valide reste appliqué
        End If
     
    Me.ssform.Form.RecordSource = sql
    Me.ssform.Requery
    Set rs = Nothing
    End Sub
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

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

Discussions similaires

  1. [AC-2007] Recherche dans sous formulaire
    Par Rickhq dans le forum IHM
    Réponses: 2
    Dernier message: 07/11/2013, 17h09
  2. [AC-2003] Afficher recherche dans sous formulaire
    Par tsuki95 dans le forum VBA Access
    Réponses: 1
    Dernier message: 01/02/2011, 17h11
  3. [AC-2007] Recherche dans sous-formulaires
    Par brg2009 dans le forum IHM
    Réponses: 2
    Dernier message: 30/05/2009, 10h34
  4. rechercher dans sous formulaire selon 1 critère
    Par cilcemax dans le forum IHM
    Réponses: 2
    Dernier message: 05/02/2008, 18h05
  5. Recherche dans sous-formulaire
    Par Junior_jef dans le forum IHM
    Réponses: 2
    Dernier message: 27/06/2007, 09h14

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