Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise à jour sur une table

5 réponses
Avatar
NewsMic
Bonjour,

Sur une même table, quelle est la syntaxe pour une mise à jour d'un champ
selon la valeur d'un autre ?
ex :
si champ Frais = 7 => champ Action = COL
si champ Frais = 16 => champ Action = CHR
Merci

NewsMic

5 réponses

Avatar
Blaise Cacramp
"NewsMic" a écrit dans le message de news:
4894807e$0$887$
Bonjour,

Sur une même table, quelle est la syntaxe pour une mise à jour d'un champ
selon la valeur d'un autre ?
ex :
si champ Frais = 7 => champ Action = COL
si champ Frais = 16 => champ Action = CHR
Merci

NewsMic



Bonsoir

C'est marrant, il me semble que tu réponds à la question toi-même

--
Cdt
Avatar
NewsMic
:)) C'est gentil !
Mais ce n'est pas une syntaxe SQL. ;)
Il faut un UPDATE, un FROM....etc

Je peux poser ma question autrement : quand je crée une requête simple PUIS
que j'en affiche le code SQL correspondant, ça donne à peu près la structure
SELECT * FROM....WHERE....
Est'il possible de créer ma requête ci-dessous en mode modification sans
passer directement par le code SQL ?

Merci

NewsMic

"Blaise Cacramp" a écrit dans le message de news:



"NewsMic" a écrit dans le message de news:
4894807e$0$887$
Bonjour,

Sur une même table, quelle est la syntaxe pour une mise à jour d'un champ
selon la valeur d'un autre ?
ex :
si champ Frais = 7 => champ Action = COL
si champ Frais = 16 => champ Action = CHR
Merci

NewsMic



Bonsoir

C'est marrant, il me semble que tu réponds à la question toi-même

--
Cdt




Avatar
3stone
Salut,

"NewsMic"
| Sur une même table, quelle est la syntaxe pour une mise à jour d'un champ
| selon la valeur d'un autre ?
| ex :
| si champ Frais = 7 => champ Action = COL
| si champ Frais = 16 => champ Action = CHR


Si la valeur "7" représente toujours "COL" et que le "16" représente
toujours "CHR", cela n'a pas lieu de se faire...
Et de toute façon, cela ne marche pas directement dans une table.

Pourquoi ?
Parce que dans une table, on ne crée pas de champ calculé, qui
serait seulement une valeur redondante.

Par contre, on peut faire cela en cas de besoin dans une requête:

Code: iif([Frais]=7;"COL";"CHR")

A condition de n'avoir que les deux valeurs citées.
Si plus de valeur, imbriquer les iif()
Mais à plus de deux ou trois, cela devient illisible et l'on préfèrera
écrire une petite fonction ou plus simplement, créer une petite
table qui contiendra ces équivalences...

PS:
Ce genre de souhait nait par une volonté de recréer ce qui se
fait dans Excel - ce qui est à proscrire dans une base de données.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
NewsMic
Bonjour,

Merci pour ces précisions et pour ta réponse.
La raison est un peu plus complexe : Je travaille beaucoup sur AS400 et peut
être en connaissez vous la structure des fichiers (fichier = table).
Il est notamment possible de mettre à jour des données directement sur un
fichier.
J'essaie de concevoir les tables Access pour exportation dans un format
correspondant exactement aux structures de mes fichiers AS400.
J'avoue qu'il n'est pas facile quand on programme depuis des années dans un
langage avec sa logique de s'adapter à une autre logique.
Dans le cas présent, j'ai commis l'erreur d'oublier le champ Origine à la
création de la table LignesdeCommandes. J'essaie de corriger cette erreur
avec une mise à jour.
Dans l'esprit, vous avez tout à fait raison dans vos réponses, aussi bien
toi que Blaise Cacramp.

Amicalement,

NewsMic

"3stone" a écrit dans le message de news:

Salut,

"NewsMic"
| Sur une même table, quelle est la syntaxe pour une mise à jour d'un
champ
| selon la valeur d'un autre ?
| ex :
| si champ Frais = 7 => champ Action = COL
| si champ Frais = 16 => champ Action = CHR


Si la valeur "7" représente toujours "COL" et que le "16" représente
toujours "CHR", cela n'a pas lieu de se faire...
Et de toute façon, cela ne marche pas directement dans une table.

Pourquoi ?
Parce que dans une table, on ne crée pas de champ calculé, qui
serait seulement une valeur redondante.

Par contre, on peut faire cela en cas de besoin dans une requête:

Code: iif([Frais]=7;"COL";"CHR")

A condition de n'avoir que les deux valeurs citées.
Si plus de valeur, imbriquer les iif()
Mais à plus de deux ou trois, cela devient illisible et l'on préfèrera
écrire une petite fonction ou plus simplement, créer une petite
table qui contiendra ces équivalences...

PS:
Ce genre de souhait nait par une volonté de recréer ce qui se
fait dans Excel - ce qui est à proscrire dans une base de données.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
3stone
re,

"NewsMic"
| Merci pour ces précisions et pour ta réponse.
| La raison est un peu plus complexe : Je travaille beaucoup sur AS400 et peut
| être en connaissez vous la structure des fichiers (fichier = table).
| Il est notamment possible de mettre à jour des données directement sur un
| fichier.
| J'essaie de concevoir les tables Access pour exportation dans un format
| correspondant exactement aux structures de mes fichiers AS400.
| J'avoue qu'il n'est pas facile quand on programme depuis des années dans un
| langage avec sa logique de s'adapter à une autre logique.
| Dans le cas présent, j'ai commis l'erreur d'oublier le champ Origine à la
| création de la table LignesdeCommandes. J'essaie de corriger cette erreur
| avec une mise à jour.
| Dans l'esprit, vous avez tout à fait raison dans vos réponses, aussi bien
| toi que Blaise Cacramp.


Je comprends, mais, malgré que Access soit par défaut "serveur de fichiers"
il ne serait pas raisonnable de laisser tomber son "R" (relationnel) pour
le transformer en gestionnaire de fichiers à plat...

Si tu souhaites disposer de cette correspondance, place cela
dans une petite table, comme dit.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




|
| "3stone" a écrit dans le message de news:
|
| > Salut,
| >
| > "NewsMic"
| > | Sur une même table, quelle est la syntaxe pour une mise à jour d'un
| > champ
| > | selon la valeur d'un autre ?
| > | ex :
| > | si champ Frais = 7 => champ Action = COL
| > | si champ Frais = 16 => champ Action = CHR
| >
| >
| > Si la valeur "7" représente toujours "COL" et que le "16" représente
| > toujours "CHR", cela n'a pas lieu de se faire...
| > Et de toute façon, cela ne marche pas directement dans une table.
| >
| > Pourquoi ?
| > Parce que dans une table, on ne crée pas de champ calculé, qui
| > serait seulement une valeur redondante.
| >
| > Par contre, on peut faire cela en cas de besoin dans une requête:
| >
| > Code: iif([Frais]=7;"COL";"CHR")
| >
| > A condition de n'avoir que les deux valeurs citées.
| > Si plus de valeur, imbriquer les iif()
| > Mais à plus de deux ou trois, cela devient illisible et l'on préfèrera
| > écrire une petite fonction ou plus simplement, créer une petite
| > table qui contiendra ces équivalences...
| >
| > PS:
| > Ce genre de souhait nait par une volonté de recréer ce qui se
| > fait dans Excel - ce qui est à proscrire dans une base de données.
| >
| > --
| > A+
| > Pierre (3stone) Access MVP
| > Perso: http://www.3stone.be/
| > MPFA: http://www.mpfa.info/ (infos générales)
| >
| >
|
|