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

Pb champ date vide avec INSERT INTO

10 réponses
Avatar
Puppet Master
Bonjour,
j'ai un pb avec une connexion ADO et une base ACCESS2000.
Je balance ma requête SQL INSERT INTO pour créer mon enregistrement avec mes
divers champs, jusque la pas de souci. Mais le hic est lorsque je ne
renseigne pas
le champs date_naissance, la vb me fait la tête et me sort un message
d'erreur en me disant que le type est incompatible.
Avez vous une idée ?
A priori est que ACCESS n'accepte pas une date non valide, mais comment lui
faire comprendre que je n'ai rien à lui donner et qu'il laisse ce champ vide
?

PS : Sachant bien sûr, que dans les propriétés de ma base, ce champs peut
être NULL

Merci d'avance...
Za++

10 réponses

Avatar
RaphK34
Salut,

Je pense qu'en utilisant la fonction Nz (Null to Zero) tout ira mieux.
Sachant que tu peux choisir autre chose que Zero, regarde l'aide sur cette fonction bien pratique ;)


--
--------------------------------------------
Merci de répondre sur le NG
Toutes remarques bienvenues !

Pour un contact direct, utiliser:
en enlevant nospam.
--------------------------------------------

"Puppet Master" a écrit dans le message de news: 4192ca8f$0$9829$
| Bonjour,
| j'ai un pb avec une connexion ADO et une base ACCESS2000.
| Je balance ma requête SQL INSERT INTO pour créer mon enregistrement avec mes
| divers champs, jusque la pas de souci. Mais le hic est lorsque je ne
| renseigne pas
| le champs date_naissance, la vb me fait la tête et me sort un message
| d'erreur en me disant que le type est incompatible.
| Avez vous une idée ?
| A priori est que ACCESS n'accepte pas une date non valide, mais comment lui
| faire comprendre que je n'ai rien à lui donner et qu'il laisse ce champ vide
| ?
|
| PS : Sachant bien sûr, que dans les propriétés de ma base, ce champs peut
| être NULL
|
| Merci d'avance...
| Za++
|
|
Avatar
JMH
Salut
Tu as un problème ailleurs.
Je viens de faire les essais comme toi.
Soit Table:
Date Null possible = Pas de problème, pas obligé de mettre une date

Essaie pour voir d'où vient le problème d'aller directement dans ta table et
de saisir une ligne en ne mettant rien dans la date.

N'as tu pas une déclaré une Validation sur le champ date?

Bye

"Puppet Master" a écrit dans le message de news:
4192ca8f$0$9829$
Bonjour,
j'ai un pb avec une connexion ADO et une base ACCESS2000.
Je balance ma requête SQL INSERT INTO pour créer mon enregistrement avec
mes divers champs, jusque la pas de souci. Mais le hic est lorsque je ne
renseigne pas
le champs date_naissance, la vb me fait la tête et me sort un message
d'erreur en me disant que le type est incompatible.
Avez vous une idée ?
A priori est que ACCESS n'accepte pas une date non valide, mais comment
lui faire comprendre que je n'ai rien à lui donner et qu'il laisse ce
champ vide ?

PS : Sachant bien sûr, que dans les propriétés de ma base, ce champs peut
être NULL

Merci d'avance...
Za++



Avatar
Pierre CFI [mvp]
bonjour
tu peux donner le code sql, pour voir

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"JMH" a écrit dans le message de news:%
Salut
Tu as un problème ailleurs.
Je viens de faire les essais comme toi.
Soit Table:
Date Null possible = Pas de problème, pas obligé de mettre une date

Essaie pour voir d'où vient le problème d'aller directement dans ta table et
de saisir une ligne en ne mettant rien dans la date.

N'as tu pas une déclaré une Validation sur le champ date?

Bye

"Puppet Master" a écrit dans le message de news:
4192ca8f$0$9829$
Bonjour,
j'ai un pb avec une connexion ADO et une base ACCESS2000.
Je balance ma requête SQL INSERT INTO pour créer mon enregistrement avec
mes divers champs, jusque la pas de souci. Mais le hic est lorsque je ne
renseigne pas
le champs date_naissance, la vb me fait la tête et me sort un message
d'erreur en me disant que le type est incompatible.
Avez vous une idée ?
A priori est que ACCESS n'accepte pas une date non valide, mais comment
lui faire comprendre que je n'ai rien à lui donner et qu'il laisse ce
champ vide ?

PS : Sachant bien sûr, que dans les propriétés de ma base, ce champs peut
être NULL

Merci d'avance...
Za++







Avatar
Eric
Bonjour,

Voir réponse sur le newsgroup VB.

A+
Eric



"Puppet Master" écrivait
news:4192ca8f$0$9829$:

Bonjour,
j'ai un pb avec une connexion ADO et une base ACCESS2000.
Je balance ma requête SQL INSERT INTO pour créer mon enregistrement
avec mes divers champs, jusque la pas de souci. Mais le hic est
lorsque je ne renseigne pas
le champs date_naissance, la vb me fait la tête et me sort un message
d'erreur en me disant que le type est incompatible.
Avez vous une idée ?
A priori est que ACCESS n'accepte pas une date non valide, mais
comment lui faire comprendre que je n'ai rien à lui donner et qu'il
laisse ce champ vide ?

PS : Sachant bien sûr, que dans les propriétés de ma base, ce champs
peut être NULL

Merci d'avance...
Za++





Avatar
Puppet Master
Bonjour,
Voici le code :
SQL = "INSERT INTO adherent (TITRE, NOM, PRENOM, ADRESSE1, ADRESSE2,
CODE_POSTAL, VILLE, TEL_DOMICILE, TEL_BUREAU, TEL_PORTABLE, COURRIEL,
DATE_NAISSANCE, MEMBRE_CA, REF_SERVICE) VALUES ('" & FrmAdhAdd.Combo1.Text &
"', '" & FrmAdhAdd.Text1.Text & "', '" & FrmAdhAdd.Text2.Text & "', '" &
FrmAdhAdd.Text3.Text & "', '" & FrmAdhAdd.Text4.Text & "', '" &
FrmAdhAdd.Text5.Text & "', '" & FrmAdhAdd.Text6.Text & "', '" &
FrmAdhAdd.Text7.Text & "', '" & FrmAdhAdd.Text8.Text & "', '" &
FrmAdhAdd.Text9.Text & "', '" & FrmAdhAdd.Text10.Text & "', #" &
FrmAdhAdd.Text11.Text & "#, '" & FrmAdhAdd.Check3.Value & "', " &
RsSERVICE("id_service") & ")"

Sachant que j'ai essayé sans les #, l'insertion fonctionne toujours aussi
bien, mais j'ai toujours le pb lorsque ce champs est vide.

Pour répondre à JMH, si je saisi l'enregistrement manuellement dans ma base,
il n'y a pas de problème avec le champs date_naissance vide !
Par contre j'ai mis comme Format : date abrégé (est-ce un problème ?)

Merci d'avance...
Avatar
Pierre CFI [mvp]
.../...
dans ton form, le champ qui reçoit la date est bien au format Date ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Puppet Master" a écrit dans le message de news:4193428a$0$2520$
Bonjour,
Voici le code :
SQL = "INSERT INTO adherent (TITRE, NOM, PRENOM, ADRESSE1, ADRESSE2,
CODE_POSTAL, VILLE, TEL_DOMICILE, TEL_BUREAU, TEL_PORTABLE, COURRIEL,
DATE_NAISSANCE, MEMBRE_CA, REF_SERVICE) VALUES ('" & FrmAdhAdd.Combo1.Text &
"', '" & FrmAdhAdd.Text1.Text & "', '" & FrmAdhAdd.Text2.Text & "', '" &
FrmAdhAdd.Text3.Text & "', '" & FrmAdhAdd.Text4.Text & "', '" &
FrmAdhAdd.Text5.Text & "', '" & FrmAdhAdd.Text6.Text & "', '" &
FrmAdhAdd.Text7.Text & "', '" & FrmAdhAdd.Text8.Text & "', '" &
FrmAdhAdd.Text9.Text & "', '" & FrmAdhAdd.Text10.Text & "', #" &
FrmAdhAdd.Text11.Text & "#, '" & FrmAdhAdd.Check3.Value & "', " &
RsSERVICE("id_service") & ")"

Sachant que j'ai essayé sans les #, l'insertion fonctionne toujours aussi
bien, mais j'ai toujours le pb lorsque ce champs est vide.

Pour répondre à JMH, si je saisi l'enregistrement manuellement dans ma base,
il n'y a pas de problème avec le champs date_naissance vide !
Par contre j'ai mis comme Format : date abrégé (est-ce un problème ?)

Merci d'avance...




Avatar
JMH
Re Salut

J'ai simulé ton code pour la date.
Malheureusement, j'arrive au mêmes conclusions que toi et je ne sais pas
pourquoi.
Moi j'ai contourné le problème comme ça:
J'ai crée 2 sqlorder, Un qui contient la date et un sans la date. (code
abrégé)

SqlOrderAvecDate = "INSERT INTO tblAd2 (NOM, Date_Naissance) Values('" &
Me.wkNom & "',cvdate('" & Me.wkDate & "'))"
sqlorderSansDate = "INSERT INTO tblAd2 (NOM) Values('" & Me.wkNom & "')"

If IsNull(TaDate) Then
sqlChoisi = SqlOrderAvecDate
Else
sqlChoisi = SqlOrderSansDate
End If

DoCmd.RunSQL (sqlChoisi)

Voilà, le pourquoi, je ne sais pas.
Bye
A+



"Puppet Master" a écrit dans le message de news:
4193428a$0$2520$
Bonjour,
Voici le code :
SQL = "INSERT INTO adherent (TITRE, NOM, PRENOM, ADRESSE1, ADRESSE2,
CODE_POSTAL, VILLE, TEL_DOMICILE, TEL_BUREAU, TEL_PORTABLE, COURRIEL,
DATE_NAISSANCE, MEMBRE_CA, REF_SERVICE) VALUES ('" & FrmAdhAdd.Combo1.Text
& "', '" & FrmAdhAdd.Text1.Text & "', '" & FrmAdhAdd.Text2.Text & "', '" &
FrmAdhAdd.Text3.Text & "', '" & FrmAdhAdd.Text4.Text & "', '" &
FrmAdhAdd.Text5.Text & "', '" & FrmAdhAdd.Text6.Text & "', '" &
FrmAdhAdd.Text7.Text & "', '" & FrmAdhAdd.Text8.Text & "', '" &
FrmAdhAdd.Text9.Text & "', '" & FrmAdhAdd.Text10.Text & "', #" &
FrmAdhAdd.Text11.Text & "#, '" & FrmAdhAdd.Check3.Value & "', " &
RsSERVICE("id_service") & ")"

Sachant que j'ai essayé sans les #, l'insertion fonctionne toujours aussi
bien, mais j'ai toujours le pb lorsque ce champs est vide.

Pour répondre à JMH, si je saisi l'enregistrement manuellement dans ma
base, il n'y a pas de problème avec le champs date_naissance vide !
Par contre j'ai mis comme Format : date abrégé (est-ce un problème ?)

Merci d'avance...



Avatar
Puppet Master
Merci pour vos réponses...
j'ai opté pour la solution qui consiste à tester si le champs date est vide
ou pas, et en fonction je modifie mon code SQL.
Mais par curiosité, j'aurais aimé comprendre le pourquoi de ce message
d'erreur !
Za++
PM
Avatar
Pierre CFI [mvp]
.../....
dans le cas ou tu entoures de # une variable, si elle est null, çà fait #null# et çà plante
du maniére générale l'informatique à horreur des null, et c'est pas toujours évident à gérér

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Puppet Master" a écrit dans le message de news:41937c6d$0$30406$
Merci pour vos réponses...
j'ai opté pour la solution qui consiste à tester si le champs date est vide
ou pas, et en fonction je modifie mon code SQL.
Mais par curiosité, j'aurais aimé comprendre le pourquoi de ce message
d'erreur !
Za++
PM




Avatar
JMH
Salut
Je n'aime pas ne pas avoir d'explications. J'ai cherché un peu.
Ci-dessous, des syntaxes qui fonctionnent. Apparement il faut le Mot NULL
mais pas entre Quote et pour une date il faut la Quote.
Donc comment combiner les deux?? Mystère.

CREATE TABLE t_x (x VARCHAR(5), y DATE);
INSERT INTO t_x VALUES ('abcdef', NULL);
INSERT INTO t_x VALUES ('ambig', '10-11-12');
INSERT INTO t_x VALUES ('unamb', '10 Nov 2012');
Des exemples ici:
http://www.eh10.pwp.blueyonder.co.uk/gisq/howto/xinsertpostgres.htm#9

CE QUE JE TE PROPOSE DE FAIRE.
Le champ Date_Naissance de ta table est de Type Date. .
Pas besoin de 2 chaines différentes pour le sql.
Ton champ Date sur ton formulaire sera testé(si tu as mis un masque). Donc
de toute façon tu récupères une date ou Null.
----------------------------------------
(code de test),
---------------------------------------
Dim SqlOrder As String
Dim workDate As String

If IsNull(Me.wkDate) Then
workDate = 0
Else
workDate = Me.wkDate
End If

SqlOrder = "INSERT INTO tblAd2 (NOM, Date_Naissance) Values('" & Me.wkNom &
"','" & workDate & "')"
DoCmd.SetWarnings False
DoCmd.RunSQL (SqlOrder)
DoCmd.SetWarnings True
-----------------------------------------

En espérant que cel fonctionne aussi chez toi. ;-))

Bye


"Puppet Master" a écrit dans le message de news:
41937c6d$0$30406$
Merci pour vos réponses...
j'ai opté pour la solution qui consiste à tester si le champs date est
vide
ou pas, et en fonction je modifie mon code SQL.
Mais par curiosité, j'aurais aimé comprendre le pourquoi de ce message
d'erreur !
Za++
PM