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 :

Erreur code VBA, cause : Requête sql ou clé primaire?


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut Erreur code VBA, cause : Requête sql ou clé primaire?
    Bonjour,

    Voici un problème que je rencontre. Le programme que j'ai fait doit
    ajouter la requête sql dans une table existante.
    C'est une base de donnée dans laquelle la table TBL_CONTACTS a une relation
    de 1 à infini avec la table TBL_ENQUETES.
    La clé primaire de la table TBL_CONTACTS est ID_CONTACT

    Voici 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
    Sub Formload()
     
    Dim Id_Arg As Integer
    Dim Reference As Integer
    Dim Localisation As String
    Dim Reponsgbox As String
     
    Dim NbrOccurences As Integer
    Dim SQL As String
    Dim rs As dao.Recordset
    Dim oDb As dao.Database
    Dim rs2 As dao.Recordset
     
    SQL = "SELECT TBL_CONTACTS.ID_CONTACT,"
    SQL = SQL & "TBL_ENQUETES.ENQ_P_A_CATEGORIE,"
    SQL = SQL & " Max(TBL_ENQUETES.ENQ_DATE) AS "
    SQL = SQL & "[Date de la dernière enquête qui doit être révisée]"
    SQL = SQL & " FROM TBL_CONTACTS INNER JOIN TBL_ENQUETES "
    SQL = SQL & "ON TBL_CONTACTS.ID_CONTACT = "
    SQL = SQL & "TBL_ENQUETES.ID_CONTACT "
    SQL = SQL & "WHERE ((( TBL_CONTACTS.CON_DDF) Is Null)) "
    SQL = SQL & "GROUP BY TBL_CONTACTS.ID_CONTACT, "
    SQL = SQL & "TBL_ENQUETES.ENQ_P_A_CATEGORIE "
    SQL = SQL & "HAVING (((Max(TBL_ENQUETES.ENQ_DATE))"
    SQL = SQL & "))<=IIf([ENQ_P_A_CATEGORIE]='FAMILLE', "
    SQL = SQL & "Now()-180,Now()-365);"
     
    Set rs = CurrentDb.OpenRecordset(SQL)
    rs.MoveLast
    rs.MoveFirst
    NbrOccurences = rs.RecordCount
     
    Set rs = CurrentDb.OpenRecordset(SQL)
     
    'permet d'afficher le message d'alerte avec bouton rouge si enquêtes > à 100
    'sinon simple VBOKonly si inf à 100 et rien du tout si pas d'occurrences du click sur OK
     
    If NbrOccurences > 100 Then
      Reponsgbox = MsgBox("Attention, vous devez faire des enquetes", vbYesNo, "Avertissememt")
      If Reponsgbox = vbYes Then
      DoCmd.OpenForm "FRM_ENQESS"
      End If
     
    ElseIf NbrOccurences <= 100 Then
      MsgBox "Attention, vous devez faire des enquetes", vbOKOnly, "Avertissememt"
     
    ElseIf NbrOccurences = 0 Then
    End If
     
    Reference = 0
    Localisation = "FRM_ENQUETE_A_JOUR"
     
    Set oDb = CurrentDb()
    Debug.Print SQL
    Set rs2 = oDb.OpenRecordset("TBL_ARGUMENTS")
     
    rs2.MoveLast
    rs2.MoveFirst
     
    Do Until rs.EOF = True
    rs2.AddNew
    rs2.Fields("ARG_REFERENCE") = Reference
    rs2.Fields("ARG_LOCALISATION") = Localisation
    rs2.Fields("ARG_ARGUMENT") = rs![TBL_CONTACTS]![ID_CONTACT]
     
    rs2.Fields("ARG_DESCRIPTION") = (DateDiff("m", rs!ENQ_DATE, Now()))
     
    rs2.Update
    rs.MoveNext
    Loop
     
    Set rs2 = Nothing
    Set oDb = Nothing
     
    End Sub
    L'erreur se trouve à cette ligne :
    rs2.Fields("ARG_ARGUMENT") = rs![TBL_CONTACTS]![ID_CONTACT]

    et j'ai comme message: 'rs![TBL_CONTACTS]![ID_CONTACT]=<Element non trouvé dans cette collection.>'

    De quel type d'erreur s'agit-il? une erreur de code VBA de requête sql ou encore a cause d'une jointure avec clé primaire?

    Pouvez vous m'aider ?

    Merci

  2. #2
    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, je verrai ça plutôt comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs2.Fields("ARG_ARGUMENT") = rs.Fields![ID_CONTACT]
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  3. #3
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Salut,

    effectivement ça a résoud le problème .
    C'est à cause de quoi ça que je me suis melé avec DAO et ADO ?

    Mais je reste encore bloqué à la seconde ligne avec la fonction Datediff().

    j'ai remplacer par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =(DateDiff("m", rs.Fields![ENQ_DATE], Now() ))
    mais ça n'a pas résoud le problème

    Pouvez vous m'aider encore.

    Merci

  4. #4
    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
    et comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(DateDiff("m", rs.Fields![ENQ_DATE], Now ))
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  5. #5
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Encore merci pour la réponse

    Mais ça ne résoud pas le problème. J'ai ce message

    'rs.Fields![ENQ_DATE]=<Element non trouvé dans cette collection.>'

    Je vois pas d'ou peut venir le problème ?

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Bonjour,
    ton champs n'est pas retourné par la requête, ça explique le message.

    Essayes plutot avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    =(DateDiff("m", rs.Fields("[Date de la dernière enquête qui doit être révisée]"), Now() ))
    Tu peux réduire le nom l'alias pour plus que ça soit plus simple...

    Philippe

  7. #7
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Salut Philben,

    Grand merci a tous. C'etait bien cela le probleme

    Merci

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

Discussions similaires

  1. [VBA-E] requête SQL
    Par jpo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2007, 19h52
  2. code dans une requête SQL
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 03/01/2007, 19h24
  3. VBA avec requête SQL
    Par seba_stien dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/10/2006, 15h39
  4. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 13h29
  5. [VBA-A] Requête SQL
    Par Berny03 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/11/2005, 21h16

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