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 :

INSERT date en ADO [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut INSERT date en ADO
    Bonjour,

    Je cherche à faire des INSERT dans un classeur xlsx en DAO. tout fonctionne bien sauf pour les dates.
    Le code suivant me renvoie une erreur de syntaxe dans l'instruction SQL.
    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
     
    Private Sub TestDates()
    Dim ConnexionDonnees As ADODB.Connection     'Connexion au classeur des données
    Dim Enregistrements As ADODB.Recordset
    Dim Commande As ADODB.Command
    Dim Requete As String
    Dim FichierDonnees As String
     
    'On récupère le chemin du classeur
        FichierDonnees = ThisWorkbook.Path & "\Comptes Familiaux - Donnees.xlsx"
     
    'On ouvre la connexion aux données
        Set ConnexionDonnees = New ADODB.Connection
        With ConnexionDonnees
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & FichierDonnees & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;ReadOnly=False;"""
            .Open
        End With
     
        Requete = "INSERT INTO [Ecritures$] (Date) VALUES (#12/31/2020#)"
     
        Set Commande = New ADODB.Command
        Set Enregistrements = New ADODB.Recordset
            Enregistrements.CursorType = adOpenDynamic
            Enregistrements.LockType = adLockOptimistic
     
        With Commande
            .ActiveConnection = ConnexionDonnees
            .CommandType = adCmdText
            .CommandText = Requete
            .Execute
        End With
     
        Set Commande = Nothing
        Set Enregistrements = Nothing
     
     
    End Sub
    J'ai fait différents essais. si je mets n'importe quoi entre quotes simples, comme pour une String, ça plante aussi, ce qui tend à prouver que le champ est bien reconnu comme étant de type date (en tout cas pas string)...

    Qui peut m'aider ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sans aucune conviction , mais on ne sait jamais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Values (" & Format("31/12/2020","#mm/dd/yyyy#") & ")"

  3. #3
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 585
    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 585
    Par défaut
    bonjour,
    tous les champs qui porte le même nom qu'un mot réservé comme Date doivent être [encadrées]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Requete = "INSERT INTO [Ecritures$] ([Date]) VALUES (#" & Format("31/12/2020","yyyy-mm-dd") & "#)"

  4. #4
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut Merci
    Thumb Down, t'es génial (enfin, presque... je dis ça parce que je risque d'avoir encore besoin de tes lumières !)

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je travaillerais avec des paramètres, ou avec un objet recordset en update.

    Pour ce qui est des noms de champs, je me doute que tu n'as peut-être pas la main, mais je déconseille tout de même d'utiliser des noms de colonnes qui correspondent à des mots réservés du SQL.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 585
    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 585
    Par défaut
    Bonjour Pierre,

    entièrement d'accord avec tes remarques tant pour le nom des champs que le paramétrage des requêtes!

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

Discussions similaires

  1. insertion date
    Par oceane751 dans le forum Oracle
    Réponses: 1
    Dernier message: 25/03/2006, 08h11
  2. [INSERTION DATE] dans requete d'insertion et mysql
    Par vincedjs dans le forum Requêtes
    Réponses: 9
    Dernier message: 03/02/2006, 17h11
  3. [SGBD] formulaire insertion date Bdd Mysql
    Par Mimisator dans le forum Administration
    Réponses: 7
    Dernier message: 30/11/2005, 09h38
  4. pb insertion date dans champs timestamptz
    Par stef74 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 08/07/2005, 09h06
  5. Dates et ADO
    Par rgarnier dans le forum XMLRAD
    Réponses: 2
    Dernier message: 18/05/2003, 22h00

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