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

VBA Access Discussion :

Doublon d'E_mail renvoyé par mon code [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Doublon d'E_mail renvoyé par mon code
    Bonsoir membres du forum,
    Le champ E_mail est du type de données lien hypertexte dans ma table "Tbl_DerniereAdresse".

    1°) Remarque: une fois qu'on y enregistre des données, il est impossible d'apporter des modifications en cas de besoin.
    Question: que faut il faire pour apporter des modifications de données dans le champ lien hypertexte ?

    2°) Mon code
    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
     
    'Fonction ramenant la dernière adresse enregistrée d'un
    'Client ou Opérateur (2e méthode)
    Public Function DerniereAdresseEnregistreeClient_Operateur(IdCli_Op As Long, idAdr As Long) As String
    Dim bd As Database
    Dim R As Recordset
    Dim sql As String
    Set bd = CurrentDb
    sql = "SELECT * FROM Tbl_DerniereAdresse AS DACO WHERE DACO.ID_Clients_Operat = " & IdCli_Op & " AND DACO.ID_Adresse = " & idAdr & _
    " AND DACO.ID_Adresse = (select max(ID_Adresse) from [Tbl_DerniereAdresse] where ID_Clients_Operat = DACO.ID_Clients_Operat and ID_Adresse = DACO.ID_Adresse);"
    Set R = bd.OpenRecordset(sql)
    If Not R.EOF Then
    DerniereAdresseEnregistreeClient_Operateur = R.Fields("Adresse") & " " & _
    R.Fields("CodePostal") & " " & R.Fields("Ville") & " " & R.Fields("Téléphone") & " " & R.Fields("E_mail")
    End If
    End Function
    ramène les infos d'adresse dans un autre champ de type texte de la table "Entête_FACTURE".
    Et l'adresse E_mail y est ramenée en doublon ? Je n'est pas message d'erreur.

    Nom : CaptureTbl_DerniereAdresse_7.JPG
Affichages : 161
Taille : 70,3 Ko
    Nom : CaptureTbl_DerniereAdresse_8.JPG
Affichages : 150
Taille : 40,8 Ko

    Aidez moi à résoudre le problème de doublon de l'adresse E_mail.

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    S'il faut éditer le lien hypertexte dans une table ou dans un formulaire, on y accède via un click droit 'Edit hyperlink'
    S'il s'agit d'un nettoyage de l'adresse eMail (supprimer texte entre les #), voici un code à exploiter avant envoi de vos eMails, ou dans votre sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub cleanAdrEmail()
        Dim myAdr, hash
     
        myAdr = "xyz@gmail.com#mailto:xyz@gmail.com#"
        hash = InStr(myAdr, "#")
        myAdr = Left(myAdr, hash - 1)
     
        On Error Resume Next
        MsgBox myAdr  'ou Debug.Print myAdr, ou bien "Update Table" pour surécrire l'ancienne adresse.
     
    End Sub

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonjour membres du forum,
    bonjour Zekraoui_Jakani,

    S'il faut éditer le lien hypertexte dans une table ou dans un formulaire, on y accède via un click droit 'Edit hyperlink'
    1°) - Très heureux de votre réponse qui m'a permise de comprendre comment apporter une modification à un champ lien hypertexte.

    2°) - Compte tenu du fait que je ramène les adresse d'un opérateur ou un client d'un champ d'une table "Tbl_DerniereAdresse" à un champs d'une autre table "Entête_FACTURE" grace au code suivant:

    Nom : CaptureTbl_DerniereAdresse_7.JPG
Affichages : 163
Taille : 106,5 Ko
    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
     
    'Fonction ramenant la dernière adresse enregistrée d'un
    'Client ou Opérateur (2e méthode)
    Public Function DerniereAdresseEnregistreeClient_Operateur(IdCli_Op As Long, idAdr As Long) As String
    Dim bd As Database
    Dim R As Recordset
    Dim sql As String
    Set bd = CurrentDb
    sql = "SELECT * FROM Tbl_DerniereAdresse AS DACO WHERE DACO.ID_Clients_Operat = " & IdCli_Op & " AND DACO.ID_Adresse = " & idAdr & _
    " AND DACO.ID_Adresse = (select max(ID_Adresse) from [Tbl_DerniereAdresse] where ID_Clients_Operat = DACO.ID_Clients_Operat and ID_Adresse = DACO.ID_Adresse);"
    Set R = bd.OpenRecordset(sql)
    If Not R.EOF Then
    DerniereAdresseEnregistreeClient_Operateur = R.Fields("Adresse") & " " & _
    R.Fields("CodePostal") & " " & R.Fields("Ville") & " " & R.Fields("Téléphone") & " " & R.Fields("E_mail")
    End If
    End Function
    .
    Question: Comment pourrait on appeler votre procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub cleanAdrEmail()
        Dim myAdr, hash
     
        myAdr = "xyz@gmail.com#mailto:xyz@gmail.com#"
        hash = InStr(myAdr, "#")
        myAdr = Left(myAdr, hash - 1)
     
        On Error Resume Next
        MsgBox myAdr  'ou Debug.Print myAdr, ou bien "Update Table" pour surécrire l'ancienne adresse.
     
    End Sub
    dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereAdresseEnregistreeClient_Operateur
    afin quelle corrige les
    doublons du champ au moment du transfert de l'adresse complète dans le champ indiqué ?

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  4. #4
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Créer une requête de mise à jour du champ adresseEMAIL de la table "Entête_FACTURE"; la requête fera appel à la fonction en question (cleanAdr).

  5. #5
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    Créer une requête de mise à jour du champ adresseEMAIL de la table "Entête_FACTURE"; la requête fera appel à la fonction en question (cleanAdr).
    Bonjour membres du forum,
    bonjour Zekraoui_Jakani,

    Après avoir créé la requête mise à jour "MAI_Email", j'ai rendu la procédure "cleanAdrEmail" en fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    'Procédure pour éliminer les doublons d'une adresse email.
    Public Function cleanAdrEmail()
        Dim myAdr, hash
     
        myAdr = "xyz@gmail.com#mailto:xyz@gmail.com#"
        hash = InStr(myAdr, "#")
        myAdr = Left(myAdr, hash - 1)
     
        On Error Resume Next
        MsgBox myAdr  'ou Debug.Print myAdr, ou bien "Update Table" pour surécrire l'ancienne adresse.
     
    End Function
    Voici comment je l'ai appelée dans la requête mise à jour "MAI_Email" (voir capture d'écran)

    Nom : CaptureTbl_DerniereAdresse_10.JPG
Affichages : 126
Taille : 58,3 Ko

    Mais la requête mise à jour "MAI_Email" efface les données des champs "ADRESSE_OPERATEUR" et "ADRESSE_CLIENT".

    Par contre en appelant la fonction "cleanAdrEmail" intégrée dans la fonction
    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
    'Fonction ramenant la dernière adresse enregistrée d'un
    'Client ou Opérateur (2e méthode)
    Public Function DerniereAdresseEnregistreeClient_Operateur(IdCli_Op As Long, idAdr As Long) As String
    Dim bd As Database
    Dim R As Recordset
    Dim sql As String
    Set bd = CurrentDb
    sql = "SELECT * FROM Tbl_DerniereAdresse AS DACO WHERE DACO.ID_Clients_Operat = " & IdCli_Op & " AND DACO.ID_Adresse = " & idAdr & _
    " AND DACO.ID_Adresse = (select max(ID_Adresse) from [Tbl_DerniereAdresse] where ID_Clients_Operat = DACO.ID_Clients_Operat and ID_Adresse = DACO.ID_Adresse);"
    Set R = bd.OpenRecordset(sql)
    If Not R.EOF Then
    DerniereAdresseEnregistreeClient_Operateur = R.Fields("Adresse") & " " & _
    R.Fields("CodePostal") & " " & R.Fields("Ville") & " " & R.Fields("Téléphone") & " " & R.Fields("E_mail" = cleanAdrEmail())
    End If
    End Function
    , les autres infos des champs "ADRESSE_OPERATEUR" et "ADRESSE_CLIENT" sont insérées sauf les différentes adresses emails.
    Pas de message d'erreur.
    Ci joint les captures d'écran:

    Nom : CaptureTbl_DerniereAdresse_9.JPG
Affichages : 152
Taille : 47,7 Ko
    Nom : CaptureTbl_DerniereAdresse_11.JPG
Affichages : 129
Taille : 95,5 Ko
    Nom : CaptureTbl_DerniereAdresse_12.JPG
Affichages : 146
Taille : 98,5 Ko
    Nom : CaptureTbl_DerniereAdresse_13.JPG
Affichages : 134
Taille : 62,9 Ko
    Nom : CaptureTbl_DerniereAdresse_14.JPG
Affichages : 136
Taille : 130,3 Ko
    Nom : CaptureTbl_DerniereAdresse_15.JPG
Affichages : 140
Taille : 141,2 Ko

    NB: Je signale que chaque opérateur ou client à son E_mail personnelle. Il faudrait en tenir compte.

    Je vous envoie une pièce jointe d'une bd contenant des emails afin de vous permettre de mieux comprendre le but recherché.

    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  6. #6
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Méthode facile
    Bonsoir membres du forum,
    Je viens de trouver une méthode en créant deux nouveaux champs lien hypertexte "Email_Operateur" et "Email_CLIENT" dans la table "Entête_FACTURE".
    Et créé le code
    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
     
    'Fonction ramenant la dernière E_mail enregistrée d'un
    'Client ou Opérateur
    Public Function DerniereAdresseEmailOperateurClient(IdCli_Op As Long, idAdr As Long) As String
    Dim bd As Database
    Dim R As Recordset
    Dim sql As String
    Set bd = CurrentDb
    sql = "SELECT * FROM Tbl_DerniereAdresse AS DACO WHERE DACO.ID_Clients_Operat = " & IdCli_Op & " AND DACO.ID_Adresse = " & idAdr & _
    " AND DACO.ID_Adresse = (select max(ID_Adresse) from [Tbl_DerniereAdresse] where ID_Clients_Operat = DACO.ID_Clients_Operat and ID_Adresse = DACO.ID_Adresse);"
    Set R = bd.OpenRecordset(sql)
    If Not R.EOF Then
    DerniereAdresseEmailOperateurClient = R.Fields("E_mail")
    End If
    End Function
    Et ça marche pour le moment en attendant une suite favorable de votre par.

    Nom : CaptureTbl_DerniereAdresse_16.JPG
Affichages : 138
Taille : 141,9 Ko
    Nom : CaptureTbl_DerniereAdresse_17.JPG
Affichages : 121
Taille : 83,5 Ko
    Nom : CaptureTbl_DerniereAdresse_18.JPG
Affichages : 120
Taille : 87,7 Ko

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 15/08/2016, 20h48
  2. Erreur 3027 généré par mon code
    Par Salsaboy60 dans le forum VBA Access
    Réponses: 8
    Dernier message: 19/02/2014, 01h06
  3. taille de mémoire utilisée par mon code javascript
    Par need2learn dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/10/2009, 09h00
  4. [Conception] soucis avec mon code de recherche par un ou plusieurs critères
    Par jolipepage75 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 11/06/2006, 02h59
  5. [HTML / CSS] Prise en compte par le CSS de mon code exporte
    Par barthelv dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 27/12/2005, 15h10

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