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 et VBA Excel Discussion :

ADODB requête DELETE avec une jointure [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut ADODB requête DELETE avec une jointure
    Bonjour,

    Je souhaite supprimer de la table GPMOURES, les valeurs du champ MV_ORI n'apparaissant pas dans le champ OF_CODE de la table GPOF.

    La requête SELECT ci-dessous 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
    Sub TEST_1()
    Dim cnx As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnx = New ADODB.Connection
    Set rst = New ADODB.Recordset
    cnx.ConnectionString = "Provider=vfpoledb;Data Source=C:\Fichiers\;Extended Properties=dBASE IV;"
    cnx.Open
     
    rst.Open "SELECT * FROM GPMOURES INNER JOIN GPOF ON GPOF.OF_CODE <> GPMOURES.MV_ORI", cnx
     
    With ThisWorkbook.Sheets("Feuil3")
        .Range("A:Z").ClearContents
        .Range("A1").CopyFromRecordset rst
    End With
     
    rst.Close
    cnx.Close
    End Sub
    ... mais cette requête DELETE m'indique : "Syntax error".
    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
    Sub TEST_2()
    Dim cnx As ADODB.Connection
    Dim cmd As New ADODB.Command
    Set cnx = New ADODB.Connection
    Set cmd = New ADODB.Command
     
    cnx.ConnectionString = "Provider=vfpoledb;Data Source=C:\Fichiers\;Extended Properties=dBASE IV;"
    cnx.Open
     
    Set cmd.ActiveConnection = cnx
    cmd.CommandText = "DELETE FROM GPMOURES INNER JOIN GPOF ON GPOF.OF_CODE <> GPMOURES.MV_ORI"
    cmd.Execute
     
    cnx.Close
     
    Set cnx = Nothing
    Set cmd = Nothing
    End Sub
    Merci d'avance pour votre aide et bonne journée.

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd.CommandText="DELETE FROM GPMOURES left JOIN GPOF ON GPOF.OF_CODE=GPMOURES.MV_ORI where GPOF.OF_CODE IS null"
    cmd.Execute

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Bonjour Thumb down,

    Merci pour ta proposition mais j'ai toujours une erreur de syntaxe avec DELETE (pas avec SELECT).

    Cette condition est bien meilleure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where GPOF.OF_CODE IS null

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    En essayant au hasard j'ai finis par trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE GPMOURES FROM GPMOURES LEFT JOIN GPOF ON GPOF.OF_CODE = GPMOURES.MV_ORI WHERE GPOF.OF_CODE IS NULL"
    Il manquait GPMOURES entre DELETE et FROM.

    Un grand merci

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Citation Envoyé par atk_49 Voir le message
    En essayant au hasard j'ai finis par trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE GPMOURES FROM GPMOURES LEFT JOIN GPOF ON GPOF.OF_CODE = GPMOURES.MV_ORI WHERE GPOF.OF_CODE IS NULL"
    Il manquait GPMOURES entre DELETE et FROM.

    Un grand merci
    Oui désolé j'ai pas percuté !

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

Discussions similaires

  1. delete avec une jointure mysql
    Par LampeRouge dans le forum Requêtes
    Réponses: 7
    Dernier message: 03/04/2012, 19h21
  2. Requête possible avec une jointure ?
    Par Djakisback dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/11/2011, 13h55
  3. Requête DELETE avec jointure
    Par fcpwns dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/06/2009, 23h20
  4. Delete avec une jointure
    Par mazizou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/07/2007, 13h24
  5. Requête DELETE avec jointure
    Par Roach- dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/03/2006, 15h00

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