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 :

[access 2003][sql] utilisation "INSERT INTO "


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut [access 2003][sql] utilisation "INSERT INTO "
    Coucou tt le monde,
    voilà, j'ai un soucis avec une requête sql dans mon code vba :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     idate = Nz(Me.date, "")
    ilibelle = Nz(Me.lib, "")
     
     
    If Me.depense.Value = 0 And Me.recette.Value = -1 Then
    irecette = Nz(Me.montant, 0)
    CurrentDb.Execute "insert into compte(date,libelle,recette) values ('" & idate & "','" & ilibelle & "'," & irecette & " )"
    Voici le debug print :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    debug.print "insert into compte(date,libelle,recette) values ('" & idate & "','" & ilibelle & "'," & irecette & " )"
    insert into compte(date,libelle,recette) values ('13/03/2008','sy', )
    [/CODE]

    le champs date est du texte car je ne sais absolument pas comment le déclarer sous format "date" dans ma requête sql..


    L'erreur génèrée est : erreur 3134 " erreur de syntaxe...
    Merciii
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    1/ renommer le champ date : c'est un mot réservé, tu vas avoir plein de problème avec.
    2/ pour insérer une date (la FAQ est ton amie) : format #MM/DD/YYYY#
    3/ le champ recette est vide : teste le avec isnull ou nz.
    [Access] Les bases du débogage => ici

  3. #3
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Bon bref, pour cette requete la, ça ne marche pas, à vrai dire j'en aie encore une autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "insert into form_experience(id,experience,type,etablissement,année) values (" & iid2 & ",""" & iexperience2 & """," & itype2 & ",""" & ietablissement2 & """," & année3 & ""
    d'où :
    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
    iid2 = Nz(rst_nom!id, 0)
    année1 = Nz(Me.année1, "")
    année2 = Nz(Me.année2, "")
    If année2 <> "" Then
        If année2 = année1 Then
        année3 = année1
        Else
    année3 = année1 & "/" & année2
    année3 = Format(année3, yyyy / yyyy)
    End If
    ElseIf année2 = "" Then
    année3 = année1
    End If
    iexperience2 = Nz(Me.experience2, "")
    itype2 = Nz(Me.typeexp2.Column(0), 0)
    ietablissement2 = Nz(Me.etablissment2, "")
    iid2 : numérique
    itype2 : numérique
    Le reste est du texte


    Voici mon débug print :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    debug.Print "insert into form_experience(id,experience,type,etablissement,année) values (" & iid2 & ",""" & iexperience2 & """," & itype2 & ",""" & ietablissement2 & """," & année3 & ""
    insert into form_experience(id,experience,type,etablissement,année) values (10,"Saisie de courrier informatique",1,"société1",2007
    merciiii
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  4. #4
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Bonjour

    Faire un debug print est une excellente idée encore faut-il toutefois allez plus loin dans ta logique : une fois que tu vois le SQL, pourquoi ne pas faire un copy/paste dans le Query desginer pour comprendre là où le bat blesse.

    Dans ton dernier message, il aurait dû te paraître évident que le problème provient du fait que tu n'as pas de parenthèse fermée dans ton instruction Insert.

    Le query Designer te l'aurait fait remarqué de manière explicite.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  5. #5
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Kloun Voir le message
    1/ renommer le champ date : c'est un mot réservé, tu vas avoir plein de problème avec.
    2/ pour insérer une date (la FAQ est ton amie) : format #MM/DD/YYYY#
    3/ le champ recette est vide : teste le avec isnull ou nz.
    Coucou, désolé sur tout le retard pour repondre mais je me suis penchée sur un autre problème, comment fait ton pour inserer un champs date dans une instruction sql
    merci beauuucouppppp
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  6. #6
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Tu es sérieux ? Tu poses la question alors même que la réponse t'a été fourni et qu'en plus, tu mets cette réponse en citation de ta question.

    Poste ton instruction SQL avec ce que tu crois être la solution. Si ton SQL est mal construit, quelqu'un t'aidera à mieux l'écrire.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  7. #7
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    coucou,
    alors d'une part c'est "je suis serieuse" au feminin
    d'autre part, cette fameuse syntaxe #MM/DD/YYYY# ne marche pas, évidement que j'ai essaié. Il me semble qu'il s'agisse d'une syntaxe comme celle ci : # ' & date & ' # puisque date est un champ format date.
    Malheureusement, la requete me génère encore une erreur de "probleme dans la syntaxe insert into".
    J'essaie d'inserer champs par champs pour voir ce qui bug et effectivement la date pose problème. Alors ce que j'ait c'est mis ce champs "date" au format texte. bon c'est sur pour mon appli, c'est plus embêtant, il y a des normes a respecter dans un formulaire, je vais être obliger d'inserer une étiquette marqué "Format de la date obligatoire : jj/mm/aaaa" l'utilisateur n'est pas c*** certe mais bon au moins, s'il n'entre pas la date correctement, cela me genere une erreur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    debug.print "insert into compte(date,libelle,recette) values ('" & idate & "','" & ilibelle & "'," & irecette & " )"
    insert into compte(date,libelle,recette) values ('13/03/2008','sy',)
    Voici mon debug print, en effet un chamos est vide, j'utilise donc la propriété NZ, je peux auss modifier la syntaxe de la date :

    au lieu de : '" & idate & "' mettre """ & idate & """

    mais c'est toujours et encore la même chose, alors que je change de format a chaque fois ==>texte==>date==>texte==>date etc etc !!!!!

    Voila donc j'ai tout essaié,même la FAQ, j'ai chercher pour le problème de syntaxe "3134"... quand il s'agit de numérique, on passe de " & inumerique & " à " & inumerique

    Voila, donc si tu as une solution tant mieux, mais sinon tanpis, le sql, ça m'enerve !!!
    merci pour ton aide !!!!
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

  8. #8
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Citation Envoyé par Milyshyn76 Voir le message
    coucou,
    alors d'une part c'est "je suis serieuse" au feminin
    ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    debug.print "insert into compte(date,libelle,recette) values ('" & idate & "','" & ilibelle & "'," & irecette & " )"
    insert into compte(date,libelle,recette) values ('13/03/2008','sy',)
    Ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     insert into compte(date,libelle,recette) values (#03/13/2008#,'sy','')
    Tu dois convertir ta date au format américain. Pour obtenir le format, tu peux t'inspirer de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#" & Format(Date(), "mm/dd/yyyy") & "#"
    et donc, dans ton cas,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCMD.RUNSQL "insert into compte(date,libelle,recette) values (#" & Format(idate, "mm/dd/yyyy") & "#,'" & ilibelle & "','" & NZ(irecette,"") & "')"
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  9. #9
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Juste pour confirmer largement ce que t'a conseillé Kloun
    1/ renommer le champ date : c'est un mot réservé, tu vas avoir plein de problème avec.
    C'est à éviter ABSOLUMENT
    Gabout

  10. #10
    Membre habitué Avatar de Milyshyn76
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2007
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 440
    Points : 158
    Points
    158
    Par défaut
    Merciiii !! ça fonctionne, c'est super sympa !!!

    Bon pour tout les utilisateurs, la syntaxe est en haut.

    Et la bonne syntaxe vient de Cavo
    merci mille fois !!!
    Mon TWITTER : Ici Mon Instragam :
    ---- BTS Informatique de Gestion ---- ---- Etudiante Responsable Ingénieries Logiciels ----

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

Discussions similaires

  1. Access 2003 -> SQL Serveur 2005 Sans ODBC
    Par Destiny dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2007, 15h28
  2. [VB.NET]Utiliser un INSERT INTO avec une VIew Access
    Par Ashleyriot dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/11/2006, 18h31
  3. projet Access 2003 / SQL Server
    Par prumin dans le forum Access
    Réponses: 2
    Dernier message: 22/11/2006, 08h55
  4. [access 2003 + SQL] zone de liste basee sur requête
    Par guyaum dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/07/2006, 14h55

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