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

Syntaxe dans une formule de champs

7 réponses
Avatar
John
Bonjour,

Dans un champs nommé CREATION correspondant à la date de création d'un
enregistrement j'essaie de mettre la formule suivante

case when [CREATION] is NULL then getdate() end

pour que le champs ne prenne la valeur getdate() que lors de la création.
Mais cela ne fonctionne pas, cette formule n'est pas valide.

Quelqu'un aurait-il une idée ?

Merci

7 réponses

Avatar
Fred BROUARD
John a écrit :
Bonjour,

Dans un champs nommé CREATION correspondant à la date de création d'un
enregistrement j'essaie de mettre la formule suivante

case when [CREATION] is NULL then getdate() end

pour que le champs ne prenne la valeur getdate() que lors de la création.
Mais cela ne fonctionne pas, cette formule n'est pas valide.

Quelqu'un aurait-il une idée ?

Merci






Dans quelle genre de requête ? INSERT ?? UPDATE ???

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
John
"Fred BROUARD" wrote in message

John a écrit :
> Bonjour,
>
> Dans un champs nommé CREATION correspondant à la date de création d'un
> enregistrement j'essaie de mettre la formule suivante
>
> case when [CREATION] is NULL then getdate() end
>
> pour que le champs ne prenne la valeur getdate() que lors de la


création.
> Mais cela ne fonctionne pas, cette formule n'est pas valide.
>
> Quelqu'un aurait-il une idée ?
>
> Merci
>
>
>

Dans quelle genre de requête ? INSERT ?? UPDATE ???

A +




Dans la définition de la table
Spécification de la colonne calculée

Merci par avance
Avatar
Patrice
Et le message d'erreur est ? Code SQL minimal montrant l'erreur ?

J'ai l'impression que l'on essaye de définir un champ calculé en fonction de
lui-même ? Ou est-ce un autre champ que l'on définit ??

Je dirais un champ normal avec une valeur par défaut : il prendra alors la
valeur par défaut à la création d'une ligne et la gardera sauf si une
instruction la change...

--
Patrice

"John" a écrit dans le message de news:
%23Le$

"Fred BROUARD" wrote in message

John a écrit :
> Bonjour,
>
> Dans un champs nommé CREATION correspondant à la date de création d'un
> enregistrement j'essaie de mettre la formule suivante
>
> case when [CREATION] is NULL then getdate() end
>
> pour que le champs ne prenne la valeur getdate() que lors de la


création.
> Mais cela ne fonctionne pas, cette formule n'est pas valide.
>
> Quelqu'un aurait-il une idée ?
>
> Merci
>
>
>

Dans quelle genre de requête ? INSERT ?? UPDATE ???

A +




Dans la définition de la table
Spécification de la colonne calculée

Merci par avance




Avatar
John
Le message d'erreur est simple "Erreur lors de la validation de la formule
pour la colonne "CREATION"

Le problème est que ce champ par défaut a comme valeur getdate(). Donc il me
met une nouvelle valeur à chaque fois. Ce que je ne souhaite pas.
D'où le case when... is null


"Patrice" wrote in message
news:%
Et le message d'erreur est ? Code SQL minimal montrant l'erreur ?

J'ai l'impression que l'on essaye de définir un champ calculé en fonction


de
lui-même ? Ou est-ce un autre champ que l'on définit ??

Je dirais un champ normal avec une valeur par défaut : il prendra alors la
valeur par défaut à la création d'une ligne et la gardera sauf si une
instruction la change...

--
Patrice

"John" a écrit dans le message de news:
%23Le$
>
> "Fred BROUARD" wrote in message
>
>> John a écrit :
>> > Bonjour,
>> >
>> > Dans un champs nommé CREATION correspondant à la date de création


d'un
>> > enregistrement j'essaie de mettre la formule suivante
>> >
>> > case when [CREATION] is NULL then getdate() end
>> >
>> > pour que le champs ne prenne la valeur getdate() que lors de la
> création.
>> > Mais cela ne fonctionne pas, cette formule n'est pas valide.
>> >
>> > Quelqu'un aurait-il une idée ?
>> >
>> > Merci
>> >
>> >
>> >
>>
>> Dans quelle genre de requête ? INSERT ?? UPDATE ???
>>
>> A +
>
>
> Dans la définition de la table
> Spécification de la colonne calculée
>
> Merci par avance
>
>




Avatar
Oliv'
*John que je salut a écrit *:
Le message d'erreur est simple "Erreur lors de la validation de la
formule pour la colonne "CREATION"

Le problème est que ce champ par défaut a comme valeur getdate().
Donc il me met une nouvelle valeur à chaque fois. Ce que je ne
souhaite pas.
D'où le case when... is null




a mon avis tu devrais plutot ne rien mettre par default
et créer un trigger for insert
avec ton case

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
OE6 : http://www.faqoe.com/
Sql : http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


"Patrice" wrote in message
news:%
Et le message d'erreur est ? Code SQL minimal montrant l'erreur ?

J'ai l'impression que l'on essaye de définir un champ calculé en
fonction de lui-même ? Ou est-ce un autre champ que l'on définit ??

Je dirais un champ normal avec une valeur par défaut : il prendra
alors la valeur par défaut à la création d'une ligne et la gardera
sauf si une instruction la change...

--
Patrice

"John" a écrit dans le message de news:
%23Le$

"Fred BROUARD" wrote in message

John a écrit :
Bonjour,

Dans un champs nommé CREATION correspondant à la date de création
d'un enregistrement j'essaie de mettre la formule suivante

case when [CREATION] is NULL then getdate() end

pour que le champs ne prenne la valeur getdate() que lors de la
création. Mais cela ne fonctionne pas, cette formule n'est pas
valide.

Quelqu'un aurait-il une idée ?

Merci






Dans quelle genre de requête ? INSERT ?? UPDATE ???

A +




Dans la définition de la table
Spécification de la colonne calculée

Merci par avance






Avatar
John
Et c'est où les triggers dans EXPRESS 2005 ?

Pourquoi ils changent tout à chaque nouvelle version ??!!



"Oliv'" <(supprimerceci) wrote in message
news:

*John que je salut a écrit *:
> Le message d'erreur est simple "Erreur lors de la validation de la
> formule pour la colonne "CREATION"
>
> Le problème est que ce champ par défaut a comme valeur getdate().
> Donc il me met une nouvelle valeur à chaque fois. Ce que je ne
> souhaite pas.
> D'où le case when... is null


a mon avis tu devrais plutot ne rien mettre par default
et créer un trigger for insert
avec ton case

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
OE6 : http://www.faqoe.com/
Sql : http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

>
> "Patrice" wrote in message
> news:%
>> Et le message d'erreur est ? Code SQL minimal montrant l'erreur ?
>>
>> J'ai l'impression que l'on essaye de définir un champ calculé en
>> fonction de lui-même ? Ou est-ce un autre champ que l'on définit ??
>>
>> Je dirais un champ normal avec une valeur par défaut : il prendra
>> alors la valeur par défaut à la création d'une ligne et la gardera
>> sauf si une instruction la change...
>>
>> --
>> Patrice
>>
>> "John" a écrit dans le message de news:
>> %23Le$
>>>
>>> "Fred BROUARD" wrote in message
>>>
>>>> John a écrit :
>>>>> Bonjour,
>>>>>
>>>>> Dans un champs nommé CREATION correspondant à la date de création
>>>>> d'un enregistrement j'essaie de mettre la formule suivante
>>>>>
>>>>> case when [CREATION] is NULL then getdate() end
>>>>>
>>>>> pour que le champs ne prenne la valeur getdate() que lors de la
>>>>> création. Mais cela ne fonctionne pas, cette formule n'est pas
>>>>> valide.
>>>>>
>>>>> Quelqu'un aurait-il une idée ?
>>>>>
>>>>> Merci
>>>>>
>>>>>
>>>>>
>>>>
>>>> Dans quelle genre de requête ? INSERT ?? UPDATE ???
>>>>
>>>> A +
>>>
>>>
>>> Dans la définition de la table
>>> Spécification de la colonne calculée
>>>
>>> Merci par avance




Avatar
Patrice
Je pense qu'il serait souhaitable que nous explique ton problème de base.

Tu ne ferais pas un champ calculé avec GETDATE comme expression par hasard ?
Ce qui effectivement te donnera une nouvelle valeur à chaque fois...

Dans ce cas là tu peux créer un champ "normal" non calculé avec une valeur
par défaut GETDATE. Le champ sera donc alimenté par la date de création à la
création d'une nouvelle ligne en renverra ensuite toujours cette même
date...

Si les remarques des uns et des autres ne mènent à rien indique donc la
définition actuelle de ton champ (extrait de code SQL SVP !) et ce qui te
gène dans le comportement actuel...

--
Patrice

"John" a écrit dans le message de news:

Le message d'erreur est simple "Erreur lors de la validation de la formule
pour la colonne "CREATION"

Le problème est que ce champ par défaut a comme valeur getdate(). Donc il
me
met une nouvelle valeur à chaque fois. Ce que je ne souhaite pas.
D'où le case when... is null


"Patrice" wrote in message
news:%
Et le message d'erreur est ? Code SQL minimal montrant l'erreur ?

J'ai l'impression que l'on essaye de définir un champ calculé en fonction


de
lui-même ? Ou est-ce un autre champ que l'on définit ??

Je dirais un champ normal avec une valeur par défaut : il prendra alors
la
valeur par défaut à la création d'une ligne et la gardera sauf si une
instruction la change...

--
Patrice

"John" a écrit dans le message de news:
%23Le$
>
> "Fred BROUARD" wrote in message
>
>> John a écrit :
>> > Bonjour,
>> >
>> > Dans un champs nommé CREATION correspondant à la date de création


d'un
>> > enregistrement j'essaie de mettre la formule suivante
>> >
>> > case when [CREATION] is NULL then getdate() end
>> >
>> > pour que le champs ne prenne la valeur getdate() que lors de la
> création.
>> > Mais cela ne fonctionne pas, cette formule n'est pas valide.
>> >
>> > Quelqu'un aurait-il une idée ?
>> >
>> > Merci
>> >
>> >
>> >
>>
>> Dans quelle genre de requête ? INSERT ?? UPDATE ???
>>
>> A +
>
>
> Dans la définition de la table
> Spécification de la colonne calculée
>
> Merci par avance
>
>