|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Benoit Inscription : janvier 2006 Messages : 36 ![]() |
Bonjour,
Je patine sur un problème de sous-requête dans un UPDATE..., avec le classique message "l'opération doit utiliser une requête qui peut être mise à jour" J'ai une BDD avec une table "T_Clients" : > IdClient (clé primaire) > Nom > Prénom > etc... J'aurai à terme d'autres tables, par exemple de commandes de chaque client, ou n'importe quoi, liées à la table T_Clients sur cet "IdClient". J'ai une table "T_ClientActif", dans laquelle je note l'IdClient du client dont je veux afficher les détails, modifier ou saisir des infos, etc. Toutes mes requêtes s'appuieront sur cet IdClientActif. > IdClientActif Cette table T_ClientActif ne contient qu'un enregistrement, dont je modifie la valeur pour correspondre à l'IdClient qui m'intéresse. Quand je rajoute un nouveau client, j'aimerai pouvoir d'une requête modifier mon IdClientActif avec l'IdClient du nouveau Je sais récupérer le dernier IdClient de T_Clients (requête R_IdDernierClient) Code :
SELECT Max(T_Client.IdClient) AS DernierClient FROM T_Client; Code :
UPDATE T_ClientActif SET T_ClientActif.IdClientActif = 1; Code :
UPDATE T_ClientActif SET T_ClientActif.IdClientActif = (SELECT Max(T_Client.IdClient) AS DernierClient FROM T_Client); Je crois comprendre qu'il faudrait que je fasse une jointure, mais sur quoi ??? Help... Benoit |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour BMATH,
La démarche me paraît étrange, mais bon... Pour répondre à ta question, effectivement, Access a besoin de lier T_ClientActif à T_Client. Le problème est, si j'ai bien compris, que la table T_ClientActif ne contient qu'un seul champ IdClientActif. Le seul moyen que je vois, c'est de créer un champ "liaison" dans T_ClientActif qui aura, toujours, la valeur "1" (par exemple). Ensuite, créer un champ "liaison" dans T_Client qui, lui aussi, aura, toujours, la valeur "1", pour tous les clients. ==> la liaison devrait pouvoir s'effectuer via ce champ spécifique (qui ne servirait qu'à cela). A tester... dans l'étrange...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Benoit Inscription : janvier 2006 Messages : 36 ![]() |
Merci pour ta réponse, Richard.
Je ne vois pas quelle syntaxe adopter pour faire la liaison, puisque ma requête SELECT est du type MAX() : je ne peux choisir qu'un argument (IdClient), et donc pas intégrer le champ Liaison dans ma requête... Alors pour continuer à faire dans l'étrange, j'ai toujours la solution de supprimer l'enregistrement pré-existant dans ma table T_ClientActif, et d'en créer un nouveau avec la bonne valeur... Mais je dois être un gars étrange, car je ne vois pas le caractère étrange de ma démarche, ou du moins, je ne vois pas comment faire autrement ? (en programmateur du dimanche que je suis !!) |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Eh bien, tu vois, ta solution
Citation:
Pour répondre à Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#5 | |
|
Candidat au titre de Membre du Club
![]() Benoit Inscription : janvier 2006 Messages : 36 ![]() |
Citation:
Autrement dit, pour que d'un clic en validant ce nouveau client, je n'ai pas besoin ensuite d'aller "le chercher" dans la BDD, mais que ça se fasse tout seul. (pas sûr d'avoir été bien clair, pour le coup ^^) En tout cas, merci pour ton aide ! |
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour BMATH,
Si j'ai bien compris, donc, tu souhaites effectuer les opérations suivantes :
Si j'ai bien compris (encore une fois), pourquoi ne pas effectuer les opérations suivantes :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Benoit Inscription : janvier 2006 Messages : 36 ![]() |
En fait, quand j'active un client, je ne fais pas que lui attribuer une commande, mais j'affiche tout son dossier qui fait intervenir plusieurs tables, pour pouvoir modifier différentes infos dans les unes et les autres.
Et puis j'utilise les mêmes requêtes et formulaires quand je choisis un autre dossier client. D'où l'intérêt de stocker quelque part l'ID du client "actif", qui peut être soit celui que je viens de rentrer, soit celui d'un autre client, en fonction des besoins. En tout cas merci de t'être penché sur mon problème BM |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour BMATH,
La solution Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com