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

Macros Access Discussion :

Problème sur FindFirst qui trouve toujours même si n'existe pas [AC-2016]


Sujet :

Macros Access

  1. #1
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 433
    Points : 188
    Points
    188
    Par défaut Problème sur FindFirst qui trouve toujours même si n'existe pas
    Bonjour,
    Avec le code suivant, j'ai toujours la réponse enregistrement trouvé.
    Si c'est vrai, Access trouve vraiment le code, si je décoche 'strFusion = "EREETR", il trouve aussi mais le Msgbox reste vide.
    Ou se trouve mon erreur svp. Je pourrais tester avec résultat vide ou pas, mais ce n'est pas parfait !

    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
    Private Sub Texte13_Click()
         Dim strSousCategorie As String
         Dim strCategorie As String
         Dim strFusion As String
     
            strCategorie = Me.txt_Categorie
            strSousCategorie = Me.txt_SousCategorie
            strFusion = strCategorie & strSousCategorie
     
            Dim dbs As DAO.Database
            Dim Enr As DAO.Recordset
            'Get the database and Recordset
            Set dbs = CurrentDb
            'Set rst = dbs.OpenRecordset("r_ChampFusion")
            Set rst = CurrentDb.OpenRecordset("r_ChampFusion", dbOpenDynaset)
     
            'strFusion = "EREETR"
     
            'Search for the first matching record
            If Not IsNull(strSousCategorie) Then
                rst.FindFirst "[ChampFusion] = '" & strFusion & "'"
                If Me.RecordsetClone.NoMatch Then
                    MsgBox "enregistrement non trouvé"
                    MsgBox rst("ChampFusion")
                Else
                    MsgBox "enregistrement trouvé"
                    MsgBox rst("ChampFusion")
                    'Me.Bookmark = Me.RecordsetClone.Bookmark
                End If
            End If
                rst.Close
                Set rst = Nothing
                Set dbs = Nothing
    End Sub
    Le mieux est l'ennemi du bien

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(strSousCategorie) Then
    peut-être parce que les variables déclarées en type String ne contiennent pas nul mais vide ("") du coup, ce n'est jamais en erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If strSousCategorie<>"" Then
    PS: ce sous-forum, c'est pour les Macros Access, pas VBA
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre habitué Avatar de Superpat9999
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2003
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 433
    Points : 188
    Points
    188
    Par défaut
    Merci tee_grandbois , je réponds et je ferme la discussion. (Peux-tu la transférer dans le bon forum, svp)
    J'ai modifié 3 choses,
    - La catégorie de :
    strSousCategorie As Variant (je sais pas pourquoi, pour moi c'était un string)
    - Le test sur :
    If Not IsNull(strSousCategorie) Then en
    If strCategorie <> "" Then
    - Le test sur le Recordset
    If Me.RecordsetClone.NoMatch Then en
    If rst.NoMatch Then
    Et tout fonctionne correctement
    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
    Private Sub Texte13_Click()
         Dim strCategorie As String
         Dim strSousCategorie As Variant
         Dim strFusion As String
     
            strCategorie = Me.txt_Categorie
            strSousCategorie = Me.txt_SousCategorie
            strFusion = strCategorie & strSousCategorie
     
            Dim dbs As DAO.Database
            Dim rst As DAO.Recordset
            'Get the database and Recordset
            Set dbs = CurrentDb
            Set rst = dbs.OpenRecordset("r_ChampFusion")
     
            'strFusion = "EREETR"
     
            'Search for the first matching record
            If strCategorie <> "" Then
                rst.FindFirst "[ChampFusion] = '" & strFusion & "'"
                If rst.NoMatch Then
                    MsgBox "enregistrement non trouvé : " & rst("ChampFusion")
                Else
                    MsgBox "enregistrement trouvé : " & rst("ChampFusion")
                    'Me.Bookmark = Me.RecordsetClone.Bookmark
                End If
            Else
                    MsgBox "Catégorie vide, pas de création"
            End If
                rst.Close
                Set rst = Nothing
                Set dbs = Nothing
    End Sub
    Le mieux est l'ennemi du bien

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    je réponds et je ferme la discussion. (Peux-tu la transférer dans le bon forum, svp)
    je n'ai pas ce pouvoir, il faut demander à un modérateur
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. Problème sur Heroku qui n'est pas sur le serveur local
    Par Ryuk976 dans le forum Général Python
    Réponses: 3
    Dernier message: 12/09/2020, 22h27
  2. Problème sur programme qui transforme des lettres en majuscules
    Par paradoxe1235 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 05/11/2017, 12h18
  3. [WD17] HFiltre sur requete qui comporte une même table employée 2 fois
    Par droliprane dans le forum WinDev
    Réponses: 16
    Dernier message: 17/01/2013, 14h50
  4. problème sur requête qui fige un formulaire
    Par v tec dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/10/2012, 09h32
  5. Problème sur INSERT et UPDATE en même temps
    Par harf18 dans le forum Développement
    Réponses: 2
    Dernier message: 09/12/2009, 15h50

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