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 :

Requête SQL avec bouton de commande


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Requête SQL avec bouton de commande
    Bonjour,

    Dans un formulaire de "saisie" j'ai placé trois listes déroulantes:
    -Nom Agent
    -Formation
    -Suivi

    Nom Agent va chercher dans la table Agent le nom et le prénom de l'agent sélectionné.
    Formation le nom de la formation choisie.
    Suivi renseigne si la formation est en statut "Demandé","Fait" ou "-"

    J'aimerais créer un bouton OK qui ajoute les données sélectionnées dans une autre table.
    J'imagine que ce sera une requête du type:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO <NomTableDestination> SELECT <Champ1>, <Champ2>….FROM <NomTableSource>

    Sauf que cette table doit stocker les identifiants (numériques) des agents, formations et suivi relié aux données choisies dans les listes déroulantes.

    Le bouton est crée mais je ne sais pas comment affecter des requêtes...

    Merci d'avance pour votre précieuse aide,

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Ton formulaire sera basé sur la table où tu veux mettre les données. Sur Celui-ci tu ajoutes tes 3 listes déroulantes. Et sur l'événements sur changement de chaque liste déroulante tu feras un truc de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Nom_agent_Change()
    Me![Id_formation] = me![Nom_agent]
    End sub
    Où Nom_agent représente le nom de ta liste déroulante qui est censé afficher les noms des agents.
    Tu le feras donc comme çà pour chaque liste déroulante.
    Cordialement
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Une méthode plus directe est de faire une formulaire lié à une table (ou une requête).
    Comme cela ta saisie se fait directement dans la table voulue sans une seule ligne de code VBA ou de SQL.

    Sinon pour répondre à ta question il y a plusieurs possibilités :
    1. Composer le SQL et l'exécuter.

      Ton SQL va ressembler à cela :
      Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      INSERT INTO [TaTable] ( [Champ1], [Champ2], ..., [ChampN])
      SELECT Valeur1 AS [Champ1], Valeur2 AS [Champ2], ..., ValeurN AS [ChampN];

      Pour le composer il faut du code qui ressemble à

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      dim SQL as string
      'Compose le SQL
      SQL="INSERT INTO [TaTable] ([ClefAgent], [ClefFormation], [ClefEtat]"
      SQL=SQL & " SELECT " & me.lstAgent & " AS [ClefAgent], " & me.lstFormation & " AS [ClefFormation], " & me.lstEtat  & " AS [ClefEtat];
       
      'Exécute le SQL
      dim db as dao.database:set db=currentdb
      call db.execute(sql, dbFailOnError)
      db.close: set db=nothing 'Libère la mémoire de travail utilisée
      me. refère au formulaire en cours.
    2. Exécuter une requête paramétrée via VBA
      Suppose que tu as une requête du type :
      Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      INSERT INTO [TaTable] ([ClefAgent], [ClefFormation], [ClefEtat]"
       SELECT [prmClefAgent] AS [ClefAgent], [prmClefFormation] AS [ClefFormation], [prmClefEtat]  & " AS [ClefEtat];

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      dim db as dao.database:set db=currentdb
      dim q as dao.querydef:set q=db.querydefs("NomTaRequeteAjout")
      q.parameters("prmClefAgent")=me.lstAgent
      q.parameters("prmClefFormation")=me.lstFormation
      q.parameters("prmClefEtat")=me.lstEtat
      call q.execute(dbFailOnError)
      set q=nothing
      db.close: set db=nothing 'Libère la mémoire de travail utilisée
      prm est mon abréviation personnelle pour paramètre. Cela me permet de savoir que la donnée provient de "l'extérieur".
    3. Faire la MAJ avec du VBA.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      dim db as dao.database:set db=currentdb
      dim r as dao.recordset:set r=db.openrecordset("TaTable", dbOpenDynaset)
      r.addnew
      r![ClefAgent]=me.lstAgent
      r![ClefFormation]=me.lstFormation
      r![ClefEtat]=me.lstEtat
      r.update
      call r.close:set r=nothing
    4. Il y a probablement une solution utilisant les macros mais je ne me sert pas des macros et donc ne la connait pas.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    J'ai oublié : c'est à adapter à ta réalité et à mettre dans la procédure événementielle associée à l'événement "Sur Clic" de ton bouton entre le Sub et le End Sub.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/02/2008, 11h45
  2. Requête SQL avec paramètre sur BDD Access
    Par BigMike dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/06/2007, 12h21
  3. erreur de requête SQL avec ASP mais pas dans Access
    Par csszzen dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/03/2007, 09h07
  4. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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