Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1455 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête mise à jour dans ACCESS 97

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête mise à jour dans ACCESS 97

n°361217
gab229
Posté le 15-04-2003 à 09:45:23  profilanswer
 

Bonjour a tous!
 
J'aurais un petit problème.
 
J'aimerais, depuis une requête selection, effectuer une requête mise a jour sur un champ d'une table!
Donc, j'ai une table avec un champ. J'ai créer une requête selection avec un champ calculé. Et maintenant j'aimerais créer une requête mise à jours pour mettre le champs de ma requête selection dans le champ de ma table.
 
Malheureusement, Access me dit: "L'opération doit utiliser une requête qui peut être mise à jour.". Je ne comprends pas du tout ce message d'erreur.
 
Vous pouvez m'aider???
 
Merci... :jap:

mood
Publicité
Posté le 15-04-2003 à 09:45:23  profilanswer
 

n°361223
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-04-2003 à 09:52:22  profilanswer
 

Poste donc ta requête, ça pourrait aider...


---------------
J'ai un string dans l'array (Paris Hilton)
n°361230
gab229
Posté le 15-04-2003 à 09:56:03  profilanswer
 

Harkonnen a écrit :

Poste donc ta requête, ça pourrait aider...


 
Je pense que c'est ce que tu aimerais: UPDATE R_Test, T_Personne SET T_Personne.NbJoursCode84 = [T_Personne]![NbJoursCode84]+[R_Test]![Test];
 

n°361258
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-04-2003 à 10:13:43  profilanswer
 

Moi je verrais plutot ça en 2 requêtes :
 
SELECT (T_Personne.NbJoursCode84 + R_Test.Test) As Calcul FROM T_Personne, R_Test
 
tu sauvegardes cette requête sous le nom "Req" par exemple
 
Puis tu fais ton Update :
 
UPDATE T_Personne,Req SET T_Personne.NbJoursCode84 = Req.Calcul
 
A tester, je sais pas ce que ça peut donner...


---------------
J'ai un string dans l'array (Paris Hilton)
n°361262
gab229
Posté le 15-04-2003 à 10:15:39  profilanswer
 

Harkonnen a écrit :

Moi je verrais plutot ça en 2 requêtes :
 
SELECT (T_Personne.NbJoursCode84 + R_Test.Test) As Calcul FROM T_Personne, R_Test
 
tu sauvegardes cette requête sous le nom "Req" par exemple
 
Puis tu fais ton Update :
 
UPDATE T_Personne,Req SET T_Personne.NbJoursCode84 = Req.Calcul
 
A tester, je sais pas ce que ça peut donner...


 
ok mais bon moi je travail pas en SQL, juste en ACCESS mais je peut créer une requête, aller en mode SQL, et copier ce que tu m'a mis!?^.^

n°361268
urd-sama
waste of space
Posté le 15-04-2003 à 10:18:39  profilanswer
 

tu seras surement obligé de faire une maccro, et dans la maccro tu dois pouvoir faire en sorte de démarrer une requête puis l'autre non?


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
n°361274
gab229
Posté le 15-04-2003 à 10:22:29  profilanswer
 

Alors j'ai essayer ton idée Harkonnen, et ca ne fonctionne pas. J'ai fais 2 requête et en executant, il me dit que je vais modifier des données, jusque là ca va....
Et juste après il me redit: L'opération doit utiliser une requête qui peut être mise à jour.
 
Mince....!!!!
...............................................................
 
Ben je sais pas torp Urd....le blème c'est pas le fait qu'elle ne se suive pas je pense....en fait je sais pas du tout pourquoi ca fait ca!  :pt1cable:  
 

n°361281
kamui36
Posté le 15-04-2003 à 10:25:32  profilanswer
 

Urd-sama a écrit :

tu seras surement obligé de faire une maccro, et dans la maccro tu dois pouvoir faire en sorte de démarrer une requête puis l'autre non?


 
c'est pas nécessaire... il y a un moyen de mettre le code de la requête a appeler dans le champ critère de la première requête^^ le soucis ne se pose pas là... mais plutot dans le type de requête utilisée^^


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
n°362016
gab229
Posté le 15-04-2003 à 15:51:32  profilanswer
 

Halala.....plus j'y pense plus je ne comprends pas pourquoi ca ne fonctionne pas. Ca doit être possible de faire une requête mise a jour avec une autre requête sur un champ d'une table. :??:  
 
Ca m'enerve!!! :cry:

n°362856
gab229
Posté le 16-04-2003 à 10:27:29  profilanswer
 

A force de réfléchire je suis arrivé à qqch mais ce n'est pas encore juste!
 
Puisque ACCESS me faisait un message d'erreur car il utilisait une requête qui ne pouvais pas être mis a jour, je me suis dis que j'allais mettre le résultat de cette requête dans un formulaire pour ensuite l'utiliser!
 
J'ai donc créer une zone de liste qui contient la valeure de la requête.
J'ai ensuite fais cette requête: UPDATE T_Personne SET T_Personne.NbJoursCode84 = [Formulaires]![F_Test]![Test];
 
(Le champs Test est la zone de liste qui contient la valeure à mettre a jour)
 
Bon cette fois il ne m'affiche plus de message mais il y a quand même un problème.
 
Pour la suite il faut savoir que mon champ "Test" (dans mon formulaire "F_Test" ) contient plusieurs valeure. Celle-ci sont avec un champ nommé "nompersonne". Dans ACCESS, cela donne comme ceci:
Nompersonne:   Test:
Dubois         10
Favre          6
Chirac         8
 
Et ainsi de suite...
Le problème avec ma requête c'est qu'elle met a jour tout le monde avec le premier chiffre qu'elle voit...ce qui donne une fois la requête effectuée:
 
Dubois    10
Favre     10
Chirac    10
 
Alors qu'il devrai prendre les chiffre un par un suivant la personne...
 
Je sais pas si j'ai bien expliqué....en tout cas ca serait très gentil à vous de me répondre parceque je n'y arrive vraiment pas!:sweat:  
Si vous ne comprennez pas qqch demander le moi^.^
 
Merci  :jap:

mood
Publicité
Posté le 16-04-2003 à 10:27:29  profilanswer
 

n°364190
kamui36
Posté le 17-04-2003 à 07:44:47  profilanswer
 

UP!


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
n°364476
vttman2
Je suis Open ...
Posté le 17-04-2003 à 10:55:51  profilanswer
 

Ta requête testée inititialement c'était celle-ci ?
 
UPDATE R_Test, T_Personne SET T_Personne.NbJoursCode84 = [T_Personne]![NbJoursCode84]+[R_Test]![Test];
 
Je vois pas de jointure/lien entre R_Test et T_Personne ?
 
UPDATE R_Test, T_Personne SET T_Personne.NbJoursCode84 = [T_Personne]![NbJoursCode84]+[R_Test]![Test]
where ... ?
 
 
Quant à cette requête
 
UPDATE T_Personne SET T_Personne.NbJoursCode84 = [Formulaires]![F_Test]![Test];  
tu mets à jour le champ NbJoursCode84 pour toute la table
T_Personne, c pas ce que tu voulais je suppose ...
 
Donne les structures de tes 2 tables, on va bien arriver
à faire kkchose sans passer par un stockage dans  
une liste ;)  
 
 
 

n°364609
gab229
Posté le 17-04-2003 à 11:41:46  profilanswer
 

Merci de répondre vttman2!   :hello:  
 
 
Bon pour la requête initiale c'était ca oui...mais même avec une liaison il me mettait un message d'erreur!!^.^
 
Par contre pour l'autre oui tu as raison ca met à jour tout les champs de la table avec la même valeur! Mais ce n'est pas comme je veux.
 
Oui je veux que tout les champs de la table soient mise a jour mais pas avec la même valeur!
 
Il faudrait que pour chaque personne, il mette a jour avec la valeur de la parsonne en question. Alors que pour l'instant, dans ma base, il met à jour toutes les personnes avec la valeur de la première!
 
Halala... j'espère que tu saura quoi faire....
 
 
Peut tu me dire ce que tu veux quand tu me demande les structures de mes deux tables!???
 
Merci beaucoup!  :jap:


Message édité par gab229 le 17-04-2003 à 11:43:42
n°365167
vttman2
Je suis Open ...
Posté le 17-04-2003 à 16:33:43  profilanswer
 

zut je t'avais oublié  :jap:  
et bien pour les structures si tu peux
m'envoyer ce genre de renseignements ...
bon 2,3 lignes pour les enr.
 
 
par ex
Matable1 (clé id_a)
id_a champb
1    jeu
2    serviette
 
Matable2 (clé id_a + id_b)
id_a id_b champx
1    10   libelle 111  
1    11   libelle_111
 
 
Au fait tu as bien des clés primaires définis sur tes tables ?
 
 
 
       
 

n°368137
kamui36
Posté le 22-04-2003 à 07:43:47  profilanswer
 

up!


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
n°368155
gab229
Posté le 22-04-2003 à 08:57:35  profilanswer
 

Salut....passé un bon week?
 
Alors je vais te mettre ces tables:
 
T_Personnes (clé #NoPersonne)
 
#NoPersonne   NomPersonne   NbJoursCode84
2                  Bähler             6
5                  Brossin            6
26                 Jobbin             6
 
Au départ, toutes les peronnes de la tables ont six comme valeur dans le champ NbJoursCode84.
Quand qqun prends des vacances, une requête la calcule: R_TotalCode84. Jusque là tout foncitonne.
 
Ensuite, la requête R_Test additionne le champ NbJoursCode84 de la table T_Personne avec le résultat de la requête R_TotalCode84. Ce qui donne le champ Test.
Ensuite, j'essaye de mettre à jour le champ NbJoursCode84 avec le champ Test.  
Comme ca ne fonctionnais pas en le faisant directement, j'ai affiché dans un formulaire le champ Test ainsi que le champ NomPersonne. Mon formulaire ressemble à ceci:
 
NomPersonne   Test
 
Bähler             7
Brossin            6
Jobbin             6
 
Mais en faisant la requête mise a jour Requête2 ca met a jour tout les champs avec la même valeur comme tu lwe sais.
 
 
Heu....pour chaque tables j'ai une clé primaire oui.
 
Dis moi si tu as besoin d'autre chose...
Je n'y arrive vraiment pas.
 
Merci beaucoup!


Message édité par gab229 le 22-04-2003 à 08:59:04
n°368212
gab229
Posté le 22-04-2003 à 10:26:45  profilanswer
 

Alors...a force de réfléchire j'ai bien fini par réussire.  
 
Mais bon c'est un peu compliqué!
 
J'ai créer une requête création de table qui créait une table bien sûr avec le champ test a l'intérieur. (je sais pas pourquoi mais il m'a pas fait chier...)
 
Ensuite, je fais une mise a jour de table à table. Et voilà....
 
 
Bon il doit y avoir plus simple je pense mais bon...ca fonctionne c'est l'essentiel.

n°368386
vttman2
Je suis Open ...
Posté le 22-04-2003 à 13:23:04  profilanswer
 

Salut le WE a été très bon  :)  
 
Tant mieux si t'es arrivé à une soluce mais ...
 
Normalement t'aurais pas du avoir besoin de passer par
un formulaire et l'update suivant  
devrait fonctionner ...
 
UPDATE R_Test, T_Personne SET T_Personne.NbJoursCode84 = R_totalcode84.champcontenantlesjoursvacances
where T_Personne.clé = R_totalcode84.clé;
 
bon t'as pas donné le contenu de ta requête R_totalcode84
et je suppose que dans cette requête tu as un et un seul
enr. pour chaque personne, le champ clé est nécessaire pour
établir la relation entre T_Personne et R_totalcode84 ...
sinon ça donnerait nimp !
 
 
 
 
 

n°368533
gab229
Posté le 22-04-2003 à 16:20:03  profilanswer
 

Bon j'ai fais ce que tu m'a dit mais ca fonctionne pas, ca me met un message d'erreur.
Mais bon j'ai fais du copier-coler...
 
 
Pour ma requête R_TotalCode84:
 
NomPersonne   SommeJoursCode84
Bähler                 1
Brossin                0
Cherpillod             2
 
Effectivement il y a plusieurs valeur suivant la personne!
 
Mais si tu as une facons plus simple de faire cette mise a jour je veux bien....
 
En tout cas c'est très gentil de m'aider.
 
 
 

n°368569
vttman2
Je suis Open ...
Posté le 22-04-2003 à 16:51:55  profilanswer
 

Il faudrait rajouter dans ta requête r_totalcode84,
 le champ clé pour avoir =>
 
clé   NomPersonne   SommeJoursCode84
2     Bähler                 1
5     Brossin                0
99    Cherpillod             2
 
et tester soit
(Je me suis trompé c pas r_test !!! qu'il fallait mettre
dans ma requête précédente mais r_totalcode84 !!!)

 
UPDATE r_totalcode84 , T_Personne  
SET T_Personne.NbJoursCode84 = R_totalcode84.SommeJoursCode84  
where T_Personne.clé = R_totalcode84.clé;
 
soit
 
UPDATE T_Personne SET T_Personne.NbJoursCode84 =  
(select R_totalcode84.SommeJoursCode84 from  r_totalcode84
where T_Personne.clé = R_totalcode84.clé);
 
 
 :hello:  

n°369105
gab229
Posté le 23-04-2003 à 08:12:06  profilanswer
 

Alors...
 
Comme tu me l'as demandé j'ai rajouter la clé dans ma requête R_TotalCode84 de façons à avoir ce que tu m'a écrit!^.^
 
 
J'ai copié collé ce que tu m'as écrit et il me met toujours un message d'erreur:
"LE champ spécifié "T_Personne.clé" peut désigner plusieurs tables listées dans la clause FROM de votre instreuction SQL".
 
Au fait, dans ce que tu m'a donné, c'est bien "clé" qu'il faut mettre ou il faut mettre le nom de la clé primaire???
 
Non parceque si je met le nom de la clé primaire (#NoPersonne) a la place de "clé" il me met une erreur de syntaxe.
Si je met le nom de la clé entre crochet pour éviter l'erreur de syntaxe, il me demande la valeur de SommeJoursCode84. Puis ensuite il me dis que l'opération doit utiliser une requête qui peut être mis a jour.
 
Halala....
 
Merci beaucoup!


Message édité par gab229 le 23-04-2003 à 08:24:56
n°369174
vttman2
Je suis Open ...
Posté le 23-04-2003 à 09:40:13  profilanswer
 

Ok, reprenons ...
 
Requête R_TotalCode84  
=> d'accord on laisse tomber le champ clé
on met à la place NoPersonne (primarykey)

NoPersonne   NomPersonne   SommeJoursCode84
2            Bähler                 1
5            Brossin                0
99           Cherpillod             2
 
T_Personne (clé NoPersonne)  
NoPersonne   NomPersonne   NbJoursCode84  
2            Bähler             6  
5            Brossin            6  
26           Jobbin             6  
 
Remarque si t'as un #NoPersonne  comme nom de ton champ,  
tu remplaceras NoPersonne par #NoPersonne
aussi dans les requêtes suivantes ...
 
Soit (à tester)
 
UPDATE r_totalcode84 R , T_Personne  T
SET T.NbJoursCode84 = R.SommeJoursCode84  
where T.NoPersonne = R.NoPersonne;  
 
ou (à tester)
 
UPDATE T_Personne T  
SET T.NbJoursCode84 =  
(select R.SommeJoursCode84 from  r_totalcode84 R
where T.NoPersonne = R.NoPersonne);  
 
Si tu as de nouveau le message suivant  
"LE champ spécifié "T_Personne.clé" peut désigner plusieurs tables listées dans la clause FROM de votre instreuction SQL".  
Tu vas dans ta requête r_totalcode84
 
et tu rajoutes des alias
Note : pour T_personne tu prends pas T comme alias
vu que cet alias est utilisé dans les 2 requêtes précédentes ...
 
ex : select TX.NoPersonne ... from T_Personne TX
 
 
Bonne chance !
 
 

n°369195
gab229
Posté le 23-04-2003 à 10:17:04  profilanswer
 

la récapitulation est bonne!^.^
 
Bon j'ai essayer ce que tu as écrit! Il me fait plus d'erreur de type:"Le champ spécifié "T_Personne.clé" peut désigner plusieurs tables listées dans la clause FROM de votre instreuction SQL".
 
Mais il me demande d'entrer la valeur de R_SommeJoursCode84.
 
Pour les alias je ne sais même pas ce que c'est!
 
Mais bon...j'ai trouvé une soluce et ca fonctionne alors je sais pas...ca devient un peu compliqué là non!??
 
Encore merci!  :jap:

n°369211
vttman2
Je suis Open ...
Posté le 23-04-2003 à 10:34:11  profilanswer
 

gab229 a écrit :

la récapitulation est bonne!^.^
 
Bon j'ai essayer ce que tu as écrit! Il me fait plus d'erreur de type:"Le champ spécifié "T_Personne.clé" peut désigner plusieurs tables listées dans la clause FROM de votre instreuction SQL".
 
Mais il me demande d'entrer la valeur de R_SommeJoursCode84.
>>>>>>>>>>  R.SommeJoursCode84
>>>>>>>>>>  S'il te demande de rentrer une valeur
>>>>>>>>>>  c que la syntaxe n'est pas bonne
>>>>>>>>>>  ou que le nom du champ n'est pas le bon/inexistant...
 
Pour les alias je ne sais même pas ce que c'est!
>>>>>>>>>> Tu remplaces le nom de ta table par un alias
>>>>>>>>>> et par exemple r_totalcode84.NoColonne devient  
>>>>>>>>>> R.NoColonne ce qui se lit mieux !
Mais bon...j'ai trouvé une soluce et ca fonctionne alors je sais pas...ca devient un peu compliqué là non!??
>>>>>>>>>> A distance OUI sans doute !
Encore merci!  :jap:  
>>>>>>>>>> Pas de quoi on est sur un forum d'entraide ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête mise à jour dans ACCESS 97

 

Sujets relatifs
traiter des erreurs accesstemps d'execution d'une requete SQL
erreur d'ouverture de base accessDes bon tutoriaux pour ACCESS
Envoyer plusieurs objets ACCESS via OutlookPositionnement HTML/CSS + Mise en forme des cadres
[MySql] une requête qui fonctionne sur Access et pas sur mySql ! HELPCharger une listbox a partir du resultat d'une requete Mysql
ACCESS requete pour recuperer une sorte d'"intevalle" 
Plus de sujets relatifs à : Requête mise à jour dans ACCESS 97


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR