Bonjour, Lorsque je crée un enregistrement par insert into et si mon champ date est vide l'enregistrement ne se crée pas. Comment mettre éventuellement une valeur par défaut à un champ date, et comment forcer une valeur null. lstr_DateRe = IIf(IsNull(DateUS(txtDateRe.Value)), 0, DateUS (txtDateR.Value))
lstr_DateRe = DateUS(Nz(txtDateRe , Date)) pour y mettre par défaut la date actuelle... -- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/(infosgénérales)
Bonjour Pierre (3stone) Mais si je veux un champ vide comment le faire accepter à Insert Into..
Puisque tu construis ta requête par VBA... si tu ne souhaites pas une date par défaut... tu n'inclus tout simplement pas cette zone de texte dans la chaîne! Faudrait savoir: valeur par défaut ou NULL ;-) -- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/(infosgénérales)- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Re, Je me suis mal expliqué, ok pour valeur par défaut ta réponse m'est très utile. Maintenant j'ai un cas ou un autre champ date contient ou ne contient pas de date, et je voudrais que insert into accepte ce champ lorsqu'il est vide. Est-ce possible ? Salutations
Il y a presque toujours une solution, ici il faut soit réaliser 2 traitements (un avec le champ qui contient une date et l'autre sans le champ qui prendra alors la valeur par défaut) ou soit en vba, créer dynamiquement la requête.- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Bonjour Michel, Merci pour ta réponse. La réalisation par deux traitements Ok, mais j'aimerais savoir le faire par la création dynamique de la requête. A-tu un bout de code à me donner avec quelques explications ? Salutations
Avec DoCmd.RunSQL ... tu peux exécuter une requête action, il suffit juste de construire la requête comme tu le souhaite sous la forme d'une variable string. sSql = "INSERT INTO [LaTable] ( LeChamp1, LeChamp2 )" & _ " VALUES ( LaValeurChamp1, LaValeurChamp2);" DoCmd.SetWarnings False DoCmd.RunSQL sSql, False DoCmd.SetWarnings True- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Bonsoir Michel Je ne savais pas que cela s'appelait une requête Dynamique, est c'est bien le code que j'utilise, par contre lorsque les champs dates sont vide ma requete ne marche pas. J'initialise mes champs dates de cette façon: lstr_DateRe = IIf(IsNull(DateUS(txtDateRe.Value)), "", DateUS (txtDateR.Value)) Sans aucun résultat. Salutations.
Il mz semble que l'on t'a déja dit d'omettre le champ lorsque celui-ci à une valeur nulle.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour Michel,
Donc je dois faire une condition pour tous les champs dates qui sont null et créer autant de requête dynamique qu'il y a de champs Null car insert into ne tolére pas le null. Est-ce bien ça qu'i faut faire ?
Sautations.
Il faut différencier le traitement en fonction du contenu du champ (vide ou pas vide), ce qui fait qu'il faut enlever la condition située au niveau du champ [Iif(...)] pour soit traiter cette condition au niveau du code ou soit tu peux aussi traiter cette condition au niveau de la requête via une clause WHERE : "WHERE LeChampDate IS NULL" puis avec "WHERE LeChampDate IS NOT NULL" pour le cas bien entendu ou les données à ajouter sont issus d'une table/requête.
Donc pour résumer si les données à ajouter ne proviennent pas d'une table/requête la requête à construire dynamiquement sera du style :
INSERT INTO [LaTable] (LesChampsNonNull, ...) VALUES (LesValeurs, ...);
sinon tu peux utiliser 2 requêtes comme ci-dessous :
INSERT INTO [LaTable] (LesChampsNonNull, ...) SELECT [LesChampsNonNullTableSource, ... FROM TableSource WHERE LeChampDateTableSource IS NOT NULL;
suivi de :
INSERT INTO [LaTable] (LesChampsNonNull, ...) SELECT [LesChampsNonNullTableSource, ... FROM TableSource WHERE LeChampDateTableSource IS NULL;
PS:Bien evidemment il faut s'assurer que la structure des tables est compatible (valeur nulle autorisée sur les champs concernés).
Bonjour,
jacques a écrit :
On 11 avr, 23:24, Michel__D <Michel.NOS...@orange-ft.com.invalid>
wrote:
Re,
jacques a écrit :
On 11 avr, 18:00, Michel__D <Michel.NOS...@orange-ft.com.invalid>
wrote:
Re,
jacques a écrit :
On 11 avr, 14:19, Michel__D <Michel.NOS...@orange-ft.com.invalid>
wrote:
Bonjour,
jacques a écrit :
On 10 avr, 20:27, "3stone" <home@sweet_home.be> wrote:
Salut,
jacques wrote:
On 9 avr, 14:24, "3stone" <home@sweet_home.be> wrote:
Salut,
Jacques wrote:
Bonjour,
Lorsque je crée un enregistrement par insert into et si mon champ
date est vide
l'enregistrement ne se crée pas.
Comment mettre éventuellement une valeur par défaut à un champ date,
et comment forcer une valeur
null.
lstr_DateRe = IIf(IsNull(DateUS(txtDateRe.Value)), 0, DateUS
(txtDateR.Value))
lstr_DateRe = DateUS(Nz(txtDateRe , Date))
pour y mettre par défaut la date actuelle...
--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/(infosgénérales)
Bonjour Pierre (3stone)
Mais si je veux un champ vide comment le faire accepter à Insert Into..
Puisque tu construis ta requête par VBA...
si tu ne souhaites pas une date par défaut... tu n'inclus tout simplement
pas cette zone de texte dans la chaîne!
Faudrait savoir: valeur par défaut ou NULL ;-)
--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/(infosgénérales)- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Re,
Je me suis mal expliqué, ok pour valeur par défaut ta réponse m'est
très utile.
Maintenant j'ai un cas ou un autre champ date contient ou ne contient
pas de date,
et je voudrais que insert into accepte ce champ lorsqu'il est vide.
Est-ce possible ?
Salutations
Il y a presque toujours une solution, ici il faut soit réaliser 2
traitements (un avec le champ qui contient une date et l'autre sans
le champ qui prendra alors la valeur par défaut) ou soit en vba,
créer dynamiquement la requête.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour Michel,
Merci pour ta réponse.
La réalisation par deux traitements Ok, mais j'aimerais savoir le
faire par la création dynamique
de la requête.
A-tu un bout de code à me donner avec quelques explications ?
Salutations
Avec DoCmd.RunSQL ... tu peux exécuter une requête action, il suffit
juste de construire la requête comme tu le souhaite sous la forme d'une
variable string.
sSql = "INSERT INTO [LaTable] ( LeChamp1, LeChamp2 )" & _
" VALUES ( LaValeurChamp1, LaValeurChamp2);"
DoCmd.SetWarnings False
DoCmd.RunSQL sSql, False
DoCmd.SetWarnings True- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonsoir Michel
Je ne savais pas que cela s'appelait une requête Dynamique, est c'est
bien le
code que j'utilise, par contre lorsque les champs dates sont vide ma
requete ne
marche pas.
J'initialise mes champs dates de cette façon:
lstr_DateRe = IIf(IsNull(DateUS(txtDateRe.Value)), "", DateUS
(txtDateR.Value))
Sans aucun résultat.
Salutations.
Il mz semble que l'on t'a déja dit d'omettre le champ lorsque celui-ci
à une valeur nulle.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour Michel,
Donc je dois faire une condition pour tous les champs dates qui sont
null
et créer autant de requête dynamique qu'il y a de champs Null car
insert into
ne tolére pas le null.
Est-ce bien ça qu'i faut faire ?
Sautations.
Il faut différencier le traitement en fonction du contenu du champ
(vide ou pas vide), ce qui fait qu'il faut enlever la condition
située au niveau du champ [Iif(...)] pour soit traiter cette
condition au niveau du code ou soit tu peux aussi traiter cette
condition au niveau de la requête via une clause WHERE :
"WHERE LeChampDate IS NULL" puis avec "WHERE LeChampDate IS NOT NULL"
pour le cas bien entendu ou les données à ajouter sont issus d'une
table/requête.
Donc pour résumer si les données à ajouter ne proviennent pas d'une
table/requête la requête à construire dynamiquement sera du style :
INSERT INTO [LaTable] (LesChampsNonNull, ...)
VALUES (LesValeurs, ...);
sinon tu peux utiliser 2 requêtes comme ci-dessous :
INSERT INTO [LaTable] (LesChampsNonNull, ...)
SELECT [LesChampsNonNullTableSource, ... FROM TableSource
WHERE LeChampDateTableSource IS NOT NULL;
suivi de :
INSERT INTO [LaTable] (LesChampsNonNull, ...)
SELECT [LesChampsNonNullTableSource, ... FROM TableSource
WHERE LeChampDateTableSource IS NULL;
PS:Bien evidemment il faut s'assurer que la structure des tables
est compatible (valeur nulle autorisée sur les champs concernés).
Bonjour, Lorsque je crée un enregistrement par insert into et si mon champ date est vide l'enregistrement ne se crée pas. Comment mettre éventuellement une valeur par défaut à un champ date, et comment forcer une valeur null. lstr_DateRe = IIf(IsNull(DateUS(txtDateRe.Value)), 0, DateUS (txtDateR.Value))
lstr_DateRe = DateUS(Nz(txtDateRe , Date)) pour y mettre par défaut la date actuelle... -- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/(infosgénérales)
Bonjour Pierre (3stone) Mais si je veux un champ vide comment le faire accepter à Insert Into..
Puisque tu construis ta requête par VBA... si tu ne souhaites pas une date par défaut... tu n'inclus tout simplement pas cette zone de texte dans la chaîne! Faudrait savoir: valeur par défaut ou NULL ;-) -- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/(infosgénérales)- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Re, Je me suis mal expliqué, ok pour valeur par défaut ta réponse m'est très utile. Maintenant j'ai un cas ou un autre champ date contient ou ne contient pas de date, et je voudrais que insert into accepte ce champ lorsqu'il est vide. Est-ce possible ? Salutations
Il y a presque toujours une solution, ici il faut soit réaliser 2 traitements (un avec le champ qui contient une date et l'autre sans le champ qui prendra alors la valeur par défaut) ou soit en vba, créer dynamiquement la requête.- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Bonjour Michel, Merci pour ta réponse. La réalisation par deux traitements Ok, mais j'aimerais savoir le faire par la création dynamique de la requête. A-tu un bout de code à me donner avec quelques explications ? Salutations
Avec DoCmd.RunSQL ... tu peux exécuter une requête action, il suffit juste de construire la requête comme tu le souhaite sous la forme d'une variable string. sSql = "INSERT INTO [LaTable] ( LeChamp1, LeChamp2 )" & _ " VALUES ( LaValeurChamp1, LaValeurChamp2);" DoCmd.SetWarnings False DoCmd.RunSQL sSql, False DoCmd.SetWarnings True- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Bonsoir Michel Je ne savais pas que cela s'appelait une requête Dynamique, est c'est bien le code que j'utilise, par contre lorsque les champs dates sont vide ma requete ne marche pas. J'initialise mes champs dates de cette façon: lstr_DateRe = IIf(IsNull(DateUS(txtDateRe.Value)), "", DateUS (txtDateR.Value)) Sans aucun résultat. Salutations.
Il mz semble que l'on t'a déja dit d'omettre le champ lorsque celui-ci à une valeur nulle.- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour Michel,
Donc je dois faire une condition pour tous les champs dates qui sont null et créer autant de requête dynamique qu'il y a de champs Null car insert into ne tolére pas le null. Est-ce bien ça qu'i faut faire ?
Sautations.
Il faut différencier le traitement en fonction du contenu du champ (vide ou pas vide), ce qui fait qu'il faut enlever la condition située au niveau du champ [Iif(...)] pour soit traiter cette condition au niveau du code ou soit tu peux aussi traiter cette condition au niveau de la requête via une clause WHERE : "WHERE LeChampDate IS NULL" puis avec "WHERE LeChampDate IS NOT NULL" pour le cas bien entendu ou les données à ajouter sont issus d'une table/requête.
Donc pour résumer si les données à ajouter ne proviennent pas d'une table/requête la requête à construire dynamiquement sera du style :
INSERT INTO [LaTable] (LesChampsNonNull, ...) VALUES (LesValeurs, ...);
sinon tu peux utiliser 2 requêtes comme ci-dessous :
INSERT INTO [LaTable] (LesChampsNonNull, ...) SELECT [LesChampsNonNullTableSource, ... FROM TableSource WHERE LeChampDateTableSource IS NOT NULL;
suivi de :
INSERT INTO [LaTable] (LesChampsNonNull, ...) SELECT [LesChampsNonNullTableSource, ... FROM TableSource WHERE LeChampDateTableSource IS NULL;
PS:Bien evidemment il faut s'assurer que la structure des tables est compatible (valeur nulle autorisée sur les champs concernés).