[access] ajout d'enregistrement requete

fl0 Messages postés 365 Statut Membre -  
 Apprenti -
salut a tous

voila ce que je veut faire
a partir d'un formulaire ou je remplit des champ textes (nom,prenom,service) lorseque j'appui sur un bouton ajout que ca me creéé un enregistrement dans ma table utilisateur

voila mon code

Sql = "INSERT INTO Utilisateurs ( Nom, Prenom, Service )"
Sql = Sql & " VALUES (""" & Form_ajout!txtnom & """, """ & Form_ajout!txtprenom & """, """ & Form_ajout!lstservice & """)"

DoCmd.DeleteObject acQuery, "confirmationajout"
CurrentDb.CreateQueryDef "confirmationajout", Sql

Set Qry = CurrentDb.QueryDefs("confirmationajout")

jusqu'ici ca marche bien
ca la creer et quand je lance la requete comfirmajout que j'ai creer si dessus ca me créé un enregistrement
Mais quand je veut la lancer automatiquement dans VBa

Set rs = Qry.OpenRecordset

Set Qry = Nothing
Set rs = Nothing

la il ni veut pas

croyez vous que cela vienne des messages d'access
genre "vous etes sur le point d'ajouter un enregistrement etes vous sur? "
Si oui dite moi comment les annulé

Merci a ceux qui m'on lu
et merci d'avance pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

Résumé de la discussion

L’enjeu est d’ajouter un enregistrement dans la table Utilisateurs à partir d’un formulaire sans déclencher les messages d’alerte d’Access, en privilégiant une approche DAO qui gère les erreurs en interne. La solution recommandée emploie un recordset DAO via CurrentDb.OpenRecordset sur Utilisateurs, puis AddNew et Update pour insérer les champs Nom, Prenom et Service issus du formulaire, en gérant les erreurs sans les boîtes de dialogue. Des précautions incluent la fermeture du recordset et la gestion des erreurs, afin d’éviter les messages et de garantir l’intégrité des données, tout en assurant une reprise propre après ajout.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    il y a beaucoup mieux pour ajouter un record.
    Dim MaTable as RecordSet
    Set MaTable = CurrentDb.OpenRecordset("Utiisateurs", dbOpenDynaset)
    On Error Resume Next
    With MaTable
        .AddNew
        !Nom = Form_ajout!txtnom
        !Prenom = Form_ajout!txtprenom
        !Service = Form_ajout!lstservice
        .Update
        .Requery
    End With
    If Err.Number <> 0 Then
        MsgBox Err.Description, , Err.Number
        GoTo Fin:
    End If
    MaTable.Close
    Set MaTable = Nothing
    Fin:
    End Sub
    Ca te fait pas de vilains messages d'ajout (comme ça, tu peux les gérer toi-même...)
    5
  2. fl0 Messages postés 365 Statut Membre 209
     
    Merci Blux g choisi la methode bourin ca marche comme il faut
    merci de ton aide
    1
  3. fl0 Messages postés 365 Statut Membre 209
     
    salut

    Merci c'est cool mais il y a un petit probleme il me dit qu'il y a une incompatibilité de type et il me surligne cette ligne

    Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)
    0
  4. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Soit il te manque une référence à DAO (menu outils/références dans la fenêtre de code, cocher les 'manquantes'), soit tu ne mets pas de type à matable (Dim MaTable), ça devrait passer, mais c'est plus bourrin !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Regarde quand même les histoires de références, un jour ou l'autre, tu vas tomber dessus sans contournement possible...
    0
  7. fl0 Messages postés 365 Statut Membre 209
     
    oui je m'en suis deja servi mais depuis le debut je ne declare aucune variables je c que ce n'est pas bien mais vu que je ne voi pas la difference
    en tout cas merci de tes conseils
    0
    1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Ca prend (beaucoup) plus de place en mémoire, c'est pas (trop) bien géré, pis c'est pas beau...
      0
    2. fl0 Messages postés 365 Statut Membre 209
       
      meme operation mais pour supprimé un enregistrement
      0
    3. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      .delete après avoir trouvé le bon record en parcourant le recordset avec .movenext ou un positionnement par index...
      0
    4. fl0 Messages postés 365 Statut Membre 209
       
      salut et merci de ton aide

      en fait ce qu'il faut que je fasse c'est la meme chose que pour ajouter maisa la place de .addnew il faut que je mette .delete
      c'est ca
      0
    5. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Faut quand même se placer sur le record à supprimer...
      0
  8. adelzeg Messages postés 1 Statut Membre
     
    bonjour,

    j ai un probleme avec ACCESS. en faite j ai une table avec des codepart identiques pour des dates différentes.
    Je voudrais sélectionner pour chaque codepart la derniere date.

    c urgent svp
    -4
    1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Salut,

      merci de créer un nouveau message, celui-ci étant hors sujet pour ce post...
      0
  9. Apprenti
     
    Bonjour,
    Voulez-vous m'aider à ajouter des enregistrements sur ma base de données !
    -6