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 :

Effectuer une action si l'enregistrement existe déjà


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Effectuer une action si l'enregistrement existe déjà
    Bonjour à tous,

    Pour mes débuts dans ce forum, je vais poser une question qui j'espère n'a pas encore été traitée. Je ne sais pas si j'ai su utiliser les bons mots clés dans ma recherche.

    Donc,

    J'ai créé un système qui quand on écrit un numéro dans un champs d'un formulaire, un autre formulaire s'ouvre, avec ce même champs prérempli automatiquement (ce champs qui cette fois-ci correspond à un champs clé).

    Ma question :

    Maintenant, j'aimerais pouvoir faire en sorte que si le formulaire qui s'ouvre contient déjà l'information (l'enregistrement), il se referme automatiquement et que l'on revienne sur le premier formulaire !!

    Merci d'avance de vos réponses (j'espère que ma question est claire)

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut et bienvenu sur le forum.

    Il y a encore plus simple que ce que tu proposes.

    Sur l'évènement "Sur ouverture" de ton formulaire, tu crées une requête pour trouver ton enregistrement. Tu testes ensuite le nombre d'enregistrement de la requête : s'il y en a un tu n'ouvres pas le formulaire et tu affiche une boite de dialogue.

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Pourquoi ne pas tester avant l'ouverture ?

    Dans tout les cas le test est simple avec la fonction Dlookup().

    Avant l'ouverture mettre le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    if not isnull(dlookup("ChampNumero","Matable","ChampNumero=" & me.controle_numero)) then
       msgbox "ce numero existe déjà"
       exit sub
    endif
    docmd.openform monform....
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup pour ces réponses si rapides. mais je dois vous avouer que je suis quasi débutant sur access alors il ma faudrait des précisions.

    1- loufab, qu'est-ce que tu entends par "Me.controle_numero" ? Ca bogue la dessus, j'ai un message qui ma dit "erreur de compilation", "Membre de méthode ou de données introuvable"

    Sinon, d'après ce que j'ai compris de la fonction DLookup, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup("Le champs dans lequel je veux chercher", "la table où ce trouve ce champs", "le champs dans lequel je veux chercher=" Me.controle_numero)
    . C'est bien ça ?

    2- KIKOF, comme je l'ai dit plus haut, je débute alors je comprends très bien où tu veux en venir mais je suis incapable de la faire.
    Pour moi sur un évenement, on crée soit un code, une expression ou une macro. Quand tu parle de requête c'est d'une macro que tu parles ?
    Parce que d'une macro effectivement il y a la fonction trouverEnregistrement mais je ne sais pas comment lui dire que l'enregistrement qu'il doit trouver c'est celui que je viens d'écrire dans l'autre formulaire.

    Merci d'avance pour les réponses !

  5. #5
    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
    bonjour
    BenjaminL a ecrit:
    1- loufab, qu'est-ce que tu entends par "Me.controle_numero" ?
    mais un peu plus haut:
    J'ai créé un système qui quand on écrit un numéro dans un champs d'un formulaire, un autre formulaire s'ouvre...
    controle_numero c'est precisement ce champ de ton form.
    @+

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci pour ce renseignement mais même avec ce que tu me dit keita, ça ne marche toujours pas, j'ai une Erreur d'execution '3075' Erreur de syntaxe (opérateur absent) dans l'expression 'N° convention'
    Plutot que de beaux discours peut-être qu'une copie de mon programme sera plus utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Réf_N°_Convention_LostFocus()
     
    If Not IsNull(DLookup("N° convention", "X Convention", "N° convention=" & Me.[Réf N° Convention])) Then
       MsgBox "ce numero existe déjà"
       Exit Sub
    End If
     
    Application.DoCmd.OpenForm "X Convention", , , , acFormAdd, , Me.[Réf N° Convention]
     
    End Sub
    Avec N° convention : le champ de ma table X Convention
    Et Réf N° Convention : le champ qui est renseigné sur mon premier formulaire à partir duquel va s'ouvrir ou pas le second formulaire

    Par contre je me demande si le problème ne viendrait pas du fait que mon second formulaire porte le même nom que ma table à savoir X Convention !

    Merci d'avance

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Lorsque l'on utilise des noms avec des espaces il faut systématiquement les borner avec des crochets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not IsNull(DLookup("[N° convention]", "[X Convention]", "[N° convention]=" & Me.[Réf N° Convention])) Then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "[X Convention]", , , , acFormAdd, , Me.[Réf N° Convention]
    C'est pour cela que je déconseille toujours d'utiliser les espaces dans les noms (champs, tables, controles, objets...)
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    J'ai bien bien mis les crochet au niveau des noms, ce qui me résout un problème mais j'ai une autre erreur :

    "Erreur d'execution '3464'
    Type d'expression incompatible dans l'expression du critère"

    C'est ça le critère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[N° convention]=" & Me.[Réf N° Convention]
    Que se passe t-il ?

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    529
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 529
    Points : 464
    Points
    464
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [N°convention]=  Me.Réf N°Convention
    Rq: évitez d'utiliser l'espace entre les lettres.
    Bonne chance.
    Merci.
    Deux, n'apprendront pas; le timide et l'arrogant

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Verifie que ta réf soit bien au format numérique.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    C'est bien là le problème, je viens de me rendre compte que le'N° convention' était au format texte de longueur 50 et que le 'Réf N° Convention' était au format texte de longueur 15. Je ne sais pas si ça peut jouer.
    J'ai modifié le 'Réf N° Convention' pour le mettre d'une longueur 50 mais ça ne change rien au problème.
    Par contre je ne peux pas mettre les données au format numérique car j'ai souvent besoin que mes numéros commencent par un zéro ou un double zéro.

    Mais la fonction Dlookup ne marche qu'avec du format numérique ?

    Sinon pour la méthode d'Hocine, ça ne marche pas car si j'enlève l'espace il ne reconnait plus mon champ, mais pour ça je crois que les crochets font l'affaire.

    Donc je reste dans l'impasse...

  12. #12
    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
    re bonjour
    si Réf N° Convention est de type texte, alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[N° convention]=" & "'" & Me.[Réf N° Convention] & "'"
    @+

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par BenjaminL
    J'ai bien bien mis les crochet au niveau des noms, ce qui me résout un problème mais j'ai une autre erreur :

    "Erreur d'execution '3464'
    Type d'expression incompatible dans l'expression du critère"

    C'est ça le critère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[N° convention]=" & Me.[Réf N° Convention]
    Que se passe t-il ?
    Je crois que ce message d'erreur peut survenir si un des trois paramètres n'est pas correct, pas nécéssairement le troisième paramètre, qui est un critère... C'est un peu confondant, mais bon...

    Je vais contredire lofab, mais essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup("[N° convention]", "X Convention", "[Le champs]='" Me.[Réf N° Convention] & "'")
    Le deuxième paramètre ne fait pas référence à un object Table directement mais est le nom de la table, ce qui est légèrement différent.

    Dans l'aide de VBA, rubrique du DLookup (vous savez, le bouton magique, F1!), voici un exemple simple qui est donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim varX As Variant
    varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1")

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    ça y est, ça marche enfin !!!!
    Un grand merci à tous pour votre participation.
    Voici le code qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Réf_N°_Convention_LostFocus()
     
    If Not IsNull(DLookup("[N° convention]", "X Convention", "[N° convention]='" & Me.[Réf N° Convention] & "'")) Then
       MsgBox "ce numero existe déjà dans la table convention"
       Exit Sub
    End If
     
    Application.DoCmd.OpenForm "X Convention", , , , acFormAdd, , Me.[Réf N° Convention]
     
    End Sub
    Merci encore au forum

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

Discussions similaires

  1. [MySQL] Effectuer une action lorsque ON DUPLICATE KEY
    Par gforce dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/01/2007, 13h01
  2. Réponses: 2
    Dernier message: 26/10/2006, 19h32
  3. Réponses: 4
    Dernier message: 31/08/2006, 11h25
  4. Réponses: 10
    Dernier message: 17/05/2006, 19h55
  5. Lister un répertoire et effectuer une action
    Par ipeteivince dans le forum Windows
    Réponses: 2
    Dernier message: 11/03/2006, 18h37

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