Mise à jour d'une Table

Résolu
Bonjour a tous, Je suis débutant en Access.
J'ai une mise à jour sur une table que je n'arrive pas à effectuer. Alors voici mon problème

- J'ai une table "Panneau" avec un champ "louer" de type "oui/non"
- J'ai un formulaire "location" qui permet d'enregistrer des location de panneaux, le bouton enregistrer de ce formulaire doit mettre à jour le champ "louer" (en oui) de la table panneau
- J'ai créer une requête maj_panneau avec le code sql suivant :
UPDATE Panneau INNER JOIN Location ON Panneau.ref_panneau = Location.[Panneaux disponibles] SET Panneau.louer = Yes;

- Mon soucis est de savoir comment insérer cette requête au bouton enregistrer, j'ai essayé en faisant un clic droit sur le bouton et en choisissant "créer code événement" mais l'option ne m'aide pas

Quelqu'un pourrait m'aider , merci.

9 réponses

Résumé de la discussion

Il s'agit de mettre à jour le champ louer d'une table Panneau (Oui/Non) lorsque le formulaire Location enregistre une location et que la requête SQL associée s'exécute. Elle consiste à intégrer la requête UPDATE Panneau INNER JOIN Location ON Panneau.ref_panneau = Location.[Panneaux disponibles] SET Panneau.louer = Yes dans la procédure liée au bouton Enregistrer. Plusieurs échanges signalent des soucis de type de données: des champs en texte court empêchent parfois la mise à jour, puis des contraintes Date/Heure apparaissent lorsque des dates entrent en jeu. En cas de persistance, exécuter la requête dans l'éditeur SQL d'Access permet de vérifier les erreurs et de confirmer l'exactitude des noms de champs et de la jointure.

Bobot (l’IA à votre service)
  1. Contributeur
    bonjour, peux-tu partager ton fichier?
    1. Bon jour, ok je vous l'envoie
    2. Je n'arrive pas à attaché le fichier . C'est un fichier de 2.5 Mo
  2. https://www.cjoint.com/c/HGsqotS2ovY
    bonjour
    dans ce lien la base modifiée avec des relations.
    j'ai fait un formulaire et sous formulaire ou tu pourras enregistrer les données.un client, un panneau, et la location
    donne moi ton avis
    1. Salut, désolé du retard
      Je viens de consulter ta proposition je trouve que l'idée est bonne
      Donc si je comprends bien le formulaire de base sera le F_client?
      Je vais l'exploiter en profondeur
  3. Bonjour
    As tu regarder mon envoi
    1. J'ai aussi un autre problème lié au champ datelier de la table location. Quand je met les types de données en date/heure et à chaque j'entre une date un message s'affiche pour me dire que la valeur entrer est incorrecte. As tu déjà rencontré ce problème ?
  4. bonjour
    Dans la table location , il n'y a pas de champ datelier seulement date dateDebut et dateFin
    1. Oui effectivement, quand je mete les champs date_debut et date_fin en type date/heure
      Ensuite impossible d'entrer une date dans ces champs
      Un message s'affiche en disant valeur non valide pour ce champ
    2. Contributeur
      @van Mdifficile pour nous de deviner ce que tu essaies d'encoder comme date, ni comment tu le fais, et pourquoi cela ne fonctionne pas.
      cela se produit quand tu modifies la table en direct, via le formulaire, ou dans les deux cas?
    3. En fait au départ j'ai mis mes champs en type " texte court"
      Ensuite après avoir fait une requête sur ma table (location ) , la requête ne fonctionne parce mes champs sont de type texte court

      Ma requête met à jour le champ louer ( de la table panneau ) à non si date_fin <date ()
      La requête ne fonctionne que si mes champs sont de type Date/Heure

      Le problème est que après cela impossible d'entrer une date dans ses champs

      Un message dit " la valeur que vous avez entrée ne correspond pas types de données Date/heure dans cette colonne
    4. Contributeur
      @van Mcela se produit quand tu modifies la table en direct, via le formulaire, ou dans les deux cas?
      quelle valeur essaies-tu d'introduire dans le champ date?
  5. Bonjour
    Il faut mettre les deux champs a la propriété date heure et non a texte.choisir un format 00/00/00
    1. C'est fait. Je viens d'utiliser le format que tu proposes mais c'est pareil malheureusement
  6. Bonjour
    Je ne comprends pas cela fonctionne sur mon pc mais je n'ai pas access 2016 mais 2007
    1. Bonjour. C'est bizarre moi j'utilise le 2013


    2. J'essaie de t'envoyer une capture d'écran
    3. Contributeur
      @van Met si tu utilises le petit bouton calendrier, cela montre la date comment?
      peux-tu partager ton fichier?


    4. Voilà comment sa se présente
    5. Contributeur
      @van Met si tu choisis une date via ce calendrier, aussi un message d'erreur?
      peux-tu partager ton fichier?
  7. bonjour
    aucun souci avec access 2007
    1. 7Bonjour castour
      Pour mon problème de départ j'ai opté plutôt pour un code événement que j'ai introduit au niveau de mon bouton enregistré. Le code est le suivant :

      Private sub record_click
      DoCmd.RefreshRecord
      DoCmd.OpenQuery "maj_panneaux"


      maj_panneaux est ma requête

      Et sa marche à merveille.
    2. J'ai un dernier problème à vous soumettre

      - Je veux faire une mise en forme conditionnelle sur mon champ date_fin

      - Alors l'idée est de mettre la date_fin en rouge lorsque la différence entre date_fin et date actuelle est inférieur ou égal à 14 jours

      - j'ai insérer une expression dans ma mise en forme conditionnelle qui est :
      Diffdate ('j'; [date_fin ];date ())<=14

      - le soucis est que même pour les dates dont la difference est supérieur à 14 jours sont mis en rouge
    3. Contributeur
      @van Mas-tu vraiment mis un espace après date_fin?
      et si tu fais simplement
      [date_fin] - date() <= 14
      ?
    4. @yg_beBonjour,
      Non j'ai pas mis d'espace après date_fin c'est une erreur au niveau de mon message
      J'ai essayé votre proposition et c'est le contraire qui produit elle prend en compte les dates antérieure

      Exemple :

      Date_fin = 31/07/2018 et date () = 25/07/2018 : date_fin est mis en rouge c'est normal

      Date_fin = 30/06/2018 et date () = 25/07/2018 : date_fin est aussi mis en rouge , ici c'est pas normal

      En fait cette formule comme la mienne ne tiennent compte que des jours et non de la date en entier
    5. Contributeur
      @van Mla différence entre 30/6/18 et 25/7/18 est négative, donc inférieure à 14.
      tu expliques que tu veux mettre en rouge toutes les dates antérieures à dans 14 jours. et c'est bien ce que fait la formule:
      [date_fin] <= date() + 14

      n'hésite pas à expliquer en français ce que tu veux réellement obtenir, ni à donner des exemples.
  8. Salut Mr Castours vous avez donner un url pour la solution d'une base pour une demande de credit:

    table clients
    table prets
    tables remboursements

    est-ce que vous pouvez m'envoyer l'url.merci
    1. bonjour
      je ne vous ai jamais donné d'adresse mais si me donnais le contenu des des tables , je pourrai essayer de faire votre base.
    2. Bonjour
      https://www.cjoint.com/c/HGEhyHXJSsN
      Bonjour
      Dans ce lien un base emprunteur avec table emprunteurs, emprunts,remboursement
      Donne réponse
      Merci