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

Requêtes et SQL. Discussion :

Requete de non correspondance sur deux critères


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Requete de non correspondance sur deux critères
    Bonjour,
    J'ai créé un requete de non correspondance "PROJETS_r_Selection" sur deux champs, FK_ID_projet et FK_ID_contact.
    Lorsque je la passe en VBA, ca ne fonctionne pas.
    Je pense que le probleme vient du champ PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_projet, qui est cpmplété par une constante, qui est la valeur d'une combo en utilsiant (" SELECT Contacts_t_ListeContacts.ID_Contact, " & int_Projet & " AS FK_ID_projet" & _).
    Plus précisément, j'ai notifié le type de valeur comme integer, mais j'ai fait les essais avec string ou variant, et cela ne fonctionne guerre mieux.
    Vous trouverez le code dans "LancerRequetePourTrouverContactsAquiAffecterProjet", et une transcription ci-dessous:

    Part 1: works fine:
    str_SQL_finale = ""
    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
     str_SQL_finale = "INSERT INTO PROJETS_t_AffectationProjetA_Contacts_temp(FK_ID_contact,FK_ID_projet)" & _
                        " SELECT Contacts_t_ListeContacts.ID_Contact, " & int_Projet & " AS FK_ID_projet" & _
                        " FROM Contacts_t_ListeContacts" & _
                        " WHERE " & strAllCriteria & ""
     
     
    Debug.Print str_SQL_finale
    'On vide la table intermediaire
        str_Sql = "DELETE FROM PROJETS_t_AffectationProjetA_Contacts_temp"
        objConnection.Execute (str_Sql)
    'Puis on la complete avec la requete:
        objConnection.Execute (str_SQL_finale)
    Me.Refresh
    '------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'la partie qui ne marche aps:
     
    str_SQL_finale2 = "SELECT PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_contact,PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_projet" & _
                    " FROM PROJETS_t_AffectationProjetA_Contacts_temp LEFT JOIN PROJETS_t_AffectationProjetA_Contacts ON" & _
                    " (PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_projet = PROJETS_t_AffectationProjetA_Contacts.FK_ID_projet)" & _
                    " AND (PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_contact = PROJETS_t_AffectationProjetA_Contacts.FK_ID_contact)" & _
                    " WHERE PROJETS_t_AffectationProjetA_Contacts.FK_ID_contact Is Null"
     
    Debug.Print str_SQL_finale2
    'Puis on la complete avec la requete:
        objConnection.Execute (str_SQL_finale2)
      Me.Refresh



    Merci d'avance de votre aide.
    Etxe.

  2. #2
    Rédacteur/Modérateur

    Bonjour,

    Le Execute ne fonctionne qu'avec des requêtes Actions (INSERT, DELETE, UPDATE, CREATE...) pas avec une SELECT.

    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

  3. #3
    Membre du Club
    Bonjour LouFab,
    Merci beaucoup, c'est bien ça.
    voici le code modifié et qui fonctionne:

    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
     
        str_SQL_finale = ""
        str_SQL_finale = "INSERT INTO PROJETS_t_AffectationProjetA_Contacts_temp(FK_ID_contact,FK_ID_projet)" & _
                        " SELECT Contacts_t_ListeContacts.ID_Contact, " & int_Projet & " AS FK_ID_projet" & _
                        " FROM Contacts_t_ListeContacts" & _
                        " WHERE " & strAllCriteria & ""
     
     
    Debug.Print str_SQL_finale
    'On vide la table intermediaire
        str_Sql = "DELETE FROM PROJETS_t_AffectationProjetA_Contacts_temp"
        objConnection.Execute (str_Sql)
    'Puis on la complete avec la requete:
        objConnection.Execute (str_SQL_finale)
    Me.Refresh
    '-------------------------------------------------------------------------------------------------------------------------------------------------------------------
    'Sailkatua izan den xedean direnak kentzen dituk tablatik:
     
    str_SQL_finale2 = "SELECT PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_contact,PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_projet" & _
                    " FROM PROJETS_t_AffectationProjetA_Contacts_temp LEFT JOIN PROJETS_t_AffectationProjetA_Contacts ON" & _
                    " (PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_projet = PROJETS_t_AffectationProjetA_Contacts.FK_ID_projet)" & _
                    " AND (PROJETS_t_AffectationProjetA_Contacts_temp.FK_ID_contact = PROJETS_t_AffectationProjetA_Contacts.FK_ID_contact)" & _
                    " WHERE PROJETS_t_AffectationProjetA_Contacts.FK_ID_contact Is Null"
     
     
    With oBjRcrdst_RecordSetSource
      .Source = str_SQL_finale2
      .ActiveConnection = objConnection
      'doesnt work with 'CurrentProject.connection
      .CursorType = adOpenDynamic
      .LockType = adLockOptimistic
        .Open
    End With
     
    Set Me.PROJETS_sf_f_AffectationContacts_Projets.Form.Recordset = oBjRcrdst_RecordSetSource
     
      Me.Refresh

###raw>template_hook.ano_emploi###