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

Requêtes et SQL. Discussion :

Comment ajouter un enregistrement à une table et modifier les autres


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut Comment ajouter un enregistrement à une table et modifier les autres
    Voilà mon problème.

    J'aimerais avec accès 2000 créer une liste contenant des projets. Mes projets doivent être classés par priorité.

    Exemple:

    J'ai une liste de 5 projets priorisé de 1 à 5. Mon gestionnaire me demande d'ajouter un projet de priorité 1. Donc l'ancien projet numéro 1 devient numéro 2 et ainsi suite. Donc je vais avoir maintenant 6 projets dans ma table. Par malheur mon gestionnaire me demande en plus d'insérer un nouveau projet dans la basse de donnée. Ce nouveau projet est priorité 4. L'ancien numéro 4 devient alors 5 et le 5 devient 6 et 6 devient 7.

    Est-ce possible de faire cela avec accès 2000????? Si oui donnez moi la soluce car je vire en rond depuis plusieur jour.

    Merci de votre aide

    Pepitos

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjours et bienvenu.

    Tu peux utiliser simplement des requêtes pour résoudre ton problème.

    1- Un requête Mise à jour qui va ajouter 1 à tout les enregistrements dont les priorités sont supérieures ou égales à la priorité à ajouter.
    Par exemple tu doit ajouter un projet de priorité 4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Update Tatable Set Priorite=Priorite+1 Where Priorite>=4;
    2- Ensuite tu fais une requête ajout pour enregistrer le nouveau projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO Tatable(Champ1, Priorite) Values("Libelle Projet",4);
    PS: Ici j'ai saisi la valeur de la priorité (4). tu peux très bien utiliser une variable à la place.
    Voila une solution.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Le code je l'inscrit où???

    et je peux mettre quoi comme variable à la place du chiffre 4.

    Oufff beaucoup choses à apprendre encore.

    Pepitos

  4. #4
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Bonjour Pepitos et bienvenue sur le site Developpez.com.

    Pourrais-tu modifier le titre de la discussion pour un titre plus implicite. Par exemple, "Comment ajouter un enregistrement à une table et modifier les autres en fonction de celle ajouter à l'aide de requêtes?" ou quelque chose du genre.

    Pour ce faire clique sur "Éditer" de ton premier message. Merci

    Pour répondre à ta question. Regarde dans l'onglet "Requête" de Access, crée une nouvelle requête et va modifier son type dans le menu "Requête", pour une requête "Ajout" et l'autre pour une requête "Mise à jour"

    Visite la F.A.Q. Access, avant de poser ta question, souvent tu trouveras ta réponse.

    Bonne chance

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Comme expliqué par Subkill, tu crée une requête Mise à jour en utilisant la fenêtre adéquate et une autre requête ajout.

    A la pace du 4 tu peux utiliser une variable provenant d'un formulaire.

    Procédes calmement par étape.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    J'ai compris comment créer une requête voici le problème.

    Je fais une requête en mode création
    Je choisi ma table (seule et unique dans ma basse de donnée)
    Je clique dans le menu sur requête et sur le type mise à jour.
    Là est-ce que je colle le code sur la ligne mise à jour???
    Si oui je le fais. ouppss erreur de syntaxe. Le Where cause problème et la je suis perdu. même problème avec la requête ajout problème avec la syntaxe Values.

    J'aimerais que vous me disez en claire quoi inscrire dans la case mise à jour et dans les autres cases.

    M

    Merci et en passant je suis très calme

    Pepitos

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Voici le message que j'ai supprimer . Je tenais à le remettre ici car vous pouvez voir ma table.

    J'ai une liste de 5 priorites classée de 1 à 5. Mon gestionnaire me demande d'ajouter une priorité d'importance 1 donc de priorité 1. Donc l'ancienne priorité numéro 1 devient numéro 2 et ainsi suite. Donc je vais avoir maintenant 6 priorités dans ma table.

    Par malheur mon gestionnaire me demande en plus d'insérer une nouvelle priorité dans la basse de donnée. Cette nouvelle priorité est numéroté 4. L'ancien numéro 4 devient alors 5 et le 5 devient 6 et 6 devient 7. Je dois préciser que les enregistrements se font à partir d'un formulaire.

    J'ai déjà eu une réponse de DMboup que je colle ci-dessous:
    Tu peux utiliser simplement des requêtes pour résoudre ton problème.

    1- Un requête Mise à jour qui va ajouter 1 à tout les enregistrements dont les priorités sont supérieures ou égales à la priorité à ajouter.
    Par exemple tu doit ajouter un projet de priorité 4.

    Code :
    Code :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    Update Tatable Set Priorite=Priorite+1 Where Priorite>=4;

    2- Ensuite tu fais une requête ajout pour enregistrer le nouveau projet

    Code :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Tatable(Champ1, Priorite) Values("Libelle Projet",4);

    PS: Ici j'ai saisi la valeur de la priorité (4). tu peux très bien utiliser une variable à la place.

    Voila une solution.

    Alors ou je dois inscrire ces 2 lignes de code. De plus comment fait-on pour créer un formulaire qui inclus les requêtes mise à jour et ajout.

    Merci Merci et Merci avant que je fais un burn-out.

    P.S. Ma seule table se nomme priorite , détail ci-dessous.

    Clé primaire : No _ NuméroAuto
    numpriorite _ Numérique (Numéro qui priorise la liste)
    priorite - Texte (Titre de la priorite)
    description _ Texte (Description de la priorite)
    datedebut _ Date/Heure (Date à laquelle la priorité a été décidée)
    datefin _ Date/Heure (Date à laquelle la priorite a été réalisée)

    Pepitos.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Requête Mise à jour
    Pièce jointe 10785

    Requête Ajout
    Pièce jointe 10787

    Tu crée le formulaire nommé AjoutPriorite un champ nommé NumPriorite.

    Après saisie de la nouvelle priorité à créer tu exécutes d'abord la mise à jour et ensuite l'ajout.

  9. #9
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Pepitos, je ne te donnerai pas le code tout cru dans l'bec. Tu dois chercher un peu par toi-même. Mais voiçi tout de même une bonne piste:

    Après avoir créé ton formulaire. Si tu décides que l'action d'ajout se fasse avec un clique de souris sur un bouton. Dans l'événement 'clique' du bouton entre le code suivant : (bien sur, tu dois l'adapter à ton programme, c'est-à-dire, mettre des bons noms de variables)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim db As Database
     Dim qdf As QueryDef
     
     'Ajout
     Set qdf = db.QueryDefs("lenomdetarequeteAjout")
     qdf("lenomdetavariable1danslarequete") = lenomdelavariable1dansleformulaire
     qdf("lenomdetavariable2danslarequete") = lenomdelavariable2dansleformulaire
     qdf.Execute

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Pour commencer merci DMboup.

    J'ai suivi vos conseils à la lettre. J'ai créé mes requêtes grâce à vos images.

    Voilà ce qui se produit.

    Ma table ne contient aucuns enregistrements.

    J'ai créé un formulaire intitulé AjoutPriorité avec seulement un champs intitulé numpriorite. Dans la case j'inscrit 1 et j'exécute la requête mise à jour à l'aide d'un bouton que j'ai créé sur mon formulaire. Vous allez exécuter ... OUI, Vous allez mettre à jour 0 lignes .... OK. Après je clique sur le bouton requêteAjout. vous allez exécuter... OUI. Une boite apparaît et le titre est "Entrer la valeur du paramètre. Oupppsss quelle valeur aucune idée. Je prends une chance et je répond 1. Réponse vous aller ajouter 0 ligne.

    Dans mon formulaire ListePrioritaire dans la colonne numpriorite il est inscrit 1.

    Retour dans formulaire AjoutPriorite dans la case je tape 2. Je clique sur mise a jour. La même réponse 0 ligne a jour. Je clique sur Ajout, demande valeur je clic 2. 1 ligne ajouté.

    Dans mon formulaire ListePrioritaire le chiffre 2 a été ajouté mais le chiffre 1 a été remplacé par le chiffre 2. Donc j'ai deux priorité 2.

    J'ai fait plein de test. Lorsque j'ai une série de priorité exemple de 1 à 5 et que je rajoute 4 il me rajoute 4 lignes avec le chiffre 4.

    Assez parlé maintenant c'est à votre tour. Moi je suis vraiment perdu.

    Pepitos.

  11. #11
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Je ne suis pas très bon pour la création de requete d'ajout et de m-a-j avec access, mais je me débrouille en sql. Alors voici une alternative:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim strSQL As String
     
    strSQL = "UPDATE tblpriorite SET tblpriorite.numpriorite = numpriorite+1 " & _
             "WHERE (tblpriorite.numpriorite)>=" & Me.numpriorite & ";"
     
    DoCmd.RunSQL (strSQL)
     
    strSQL = "INSERT INTO tblpriorite ( numPriorite, priorite, description ) " & _
             "VALUES (" & Me.numpriorite & ",""" & Me.Priorite & """,""" & Me.description & """);"
     
    DoCmd.RunSQL (strSQL)
    Ce code s'inscrit sur l'événement clique du bouton d'ajout. Dans cette exemple seuls les champs du Numéro de la priorité du titre et de la description son rempli...

    NB J'ai changé le nom de ta table pour tblpriorite car il est trop mauvais d'avoir un nom de champs égale au nom de la table.

    Peut-être que ca va t'aider...

  12. #12
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci à tous pour vos conseils.

    La solution de Subkill concernant la mise à jour des enregistrements semble fonctionner.

    Sauf lorsque je veux faire un ajout un message d'erreur apparaît: le message d'erreur, en format.gif, est joint à cette discusion. Je voulais ajouter la priorité No 4. Donc dans le formulaire Ajout Priorité j'ai saisie un nouvelle enregistrement 4. je clic sur le bouton commande 5 (Ajout), Vous allez enregistrer une ligne, je répond OUI, ensuite message d'erreur. Enregistrement No 4 ne se retrouve pas dans ma RequêteBase1.

    Merci de m'aider.

    Pepitos

  13. #13
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Merci à tous,

    Bon le but de ma question a été résolu. Le tout fonctionne à merveille et avec mon peu d'expérience, j'ai réussi à faire des actions sur mon formulaire et j'en suis fière.

    Bonne Journée

    Pepitos

  14. #14
    Membre régulier Avatar de Subkill
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 174
    Points : 124
    Points
    124
    Par défaut
    Bravo

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

Discussions similaires

  1. Selon réponse, remplir une table mais pas les autres
    Par laurent_42 dans le forum Modélisation
    Réponses: 4
    Dernier message: 06/03/2014, 08h12
  2. Réponses: 1
    Dernier message: 09/12/2013, 13h57
  3. Réponses: 7
    Dernier message: 19/01/2012, 08h16
  4. Comment faire SET sur une table lié a 3 autres tables
    Par Battosaiii dans le forum Oracle
    Réponses: 2
    Dernier message: 13/04/2011, 17h59
  5. Réponses: 1
    Dernier message: 27/03/2011, 19h50

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