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

Access Discussion :

INSERT depuis formulaire


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 29
    Points
    29
    Par défaut INSERT depuis formulaire
    Salut tout le monde,
    je m'excuse par avance d'avoir poser une question similaire mais je débute vraiment...
    J'ai créé un formulaire base sur 2 tables : "commande header" et "commande details".
    Maintenant, je voudrais créer un bouton qui me pemette d'enregistrer ces valeurs dans 2 nouvelles tables ("commande validée header" et "commande validée details") lorsqu'elles sont traitées.

    J'ai essayé avec ca mais ca ne marche pas (peut etre que je ne l'utilise pas comme il faut...), j'obtiens une erreur sur la ligne Set rst1 = CurrentDb.... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim rst1 As Recordset 
    Set rst1 = CurrentDb.OpenRecordset("commande validée header", dbOpenDynaset) 
    rst1.Edit 
          rst1!Champ1 = modif 1 
          rst1!Champ2 = modif 2 
          ... 
    rst1.Update 
    rst1.Close 
    Set rst1 = Nothing
    Ou faut-il utiliser un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO 'commande validée header'..."
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    db.Execute "INSERT INTO 'commande validée header'..."
    Merci d'avance pour les éclaircicements

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour


    Pour tout ce qui est nom Access (nom de champ, nom de table ...), évite les espaces.

    Il te faut une reference DAO dans ton projet pour pouvoir utiliser currendb et les recordset.

    Donc sous VBA, menu Outils-->Reference et tu ajoute Microoft DAO 3.X avec X le plus haut.

    Ensuite quand tu déclares tes varaibles (comme les recordsets par exemple) , indique la librairie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rst1 As DAO.Recordset
    On obtiens donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim rst1 As DAO.Recordset 
    DIM db as DAO.database
    set db=currentdb
    Set rst1 = db.OpenRecordset("[commande validée header]", dbOpenDynaset) 
    rst1.Edit 
          rst1!Champ1 = modif 1 
          rst1!Champ2 = modif 2 
          ... 
    rst1.Update 
    rst1.Close 
    Set rst1 = Nothing

    Et n'oublies pas que dev.com regorge de tutoriel notamment sur Access

    Tu peux aussi utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO [commande validée header]..."
    L'important est donc d'encadrer tes nom avec des crochets quand tu as des espaces, des caractères spéciaux ou encore des mots reservé tel un champ nommé date. Il faudra l'appelé par [date] dans les requêtes ou alors ne pas utiliser dans ta table mais plutôt [ladate]

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Salut tofalu et merci pour ton aide

    J'obtiens une erreur sur cette ligne :
    Set rst1 = db.OpenRecordset("[commande validée header]", dbOpenDynaset)

    Quand je passe la souris au dessus de rst1, il me dit rst1 = Nothing
    et lorsque je la passe au dessus de dbOpenDynaset il me dit dbOpenDynaset = 2

    Qu'est ce que ca veut dire?
    Merci d'avance...

  4. #4
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    salut,

    pour apporter une petite modification : l'objet Recordset DAO accepte bien des espaces dans le nom d'une table s'il ne contient pas d'autres arguments. mais en règle général ce qu'a dit Tofalu est correcte. ne pas oublié de mettre pour ton code essais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sub DAO_Ajoutdetatable()
    Dim rst1 As DAO.Recordset 
    DIM db as DAO.database 
    set db=currentdb() 
    Set rst1 = db.OpenRecordset("commande validée header") 
    rst.AddNew
          rst1("Champ1") = modif 1 
          rst1("Champ2") = modif 2 
          ... 
    rst1.Update 
    rst1.Close 
    Set rst1 = Nothing
    set db = Nothing
    End Sub

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 29
    Points
    29
    Par défaut [Résolu]
    Youpi, ca marche !
    Merci à vous, c'est vraiment cool !

    J'ai aussi essayé ca et ca marche également :
    DoCmd.RunSQL "INSERT INTO [commande validée header]..."
    Euh, au fait, comment on met le tag 'résolu' ?

  6. #6
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    le tag [résolu] se trouve en bas à gauche de ton écran juste à coté du bouton [délestage].
    voilà !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/07/2010, 13h09
  2. insert into depuis formulaire avec condition
    Par vinc54 dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/05/2008, 10h37
  3. PB d'insertion via formulaire
    Par xtiand4 dans le forum Langage
    Réponses: 5
    Dernier message: 23/06/2006, 09h45
  4. Insertion données Formulaire
    Par Go_Ahead dans le forum Access
    Réponses: 2
    Dernier message: 17/06/2006, 13h59
  5. [access2002] [etat Depuis Formulaire]
    Par louroulou dans le forum IHM
    Réponses: 5
    Dernier message: 02/06/2006, 11h09

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