Insertion de champs vide dans une base access

cloe - 17 août 2001 à 10:27
matli82 Messages postés 1 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 30 août 2005 - 30 août 2005 à 17:45
Bonjour

J'utilise un formulaire afin de saisir des données et des les enregistrer dans ma base de données. Pour les champs de type texte et qui sont vide je n'ai pas de pbs.
Mais pour les champs de type numérique, s'ils sont vides, j'ai une erreur au niveau du insert into :

"Type de données incompatible dans l'expression du critère."

Si je teste si le champs est vide et que je le met à 0, l'insertion se fait. Mais je ne pense pas que mettre des champs à zéros alors qu'ils doivent etre vide est une bonne solution.

J'ai essayé aussi, si le champs est vide, je récris le insert into mais sans le champs. Mais c'est pas une solution aussi puisque s'il y a plein de champs numériques, va y avoir bcp trop de requètes à écrire. Et si l'utilisateur veut modifier sa valeur et mettre rien à la place, la modif ne vas pas être prise en compte.

Peut être cela vient d'une option à cocher dans acces??
Bref si vous avez une idée, je vous remercie d'avance de me tenir au courant.

Cloe

11 réponses

en fait ça vient de la base access. tu dois autoriser la valeur 'null' pour ce champ numérique.

dans access tu coche oui pour la propriété null autorisé
0
Il y a en effait une option
"Null interdit" et elle est à "non".

D'aiileurs si je met directement dans la base mes valeurs et que je laisse les numériques vides, je n'ai pas d'erreur.

C'est en les insérant avec mon formulaire sous asp, que j'ai des pbs.
0
justement mais la à oui
0
tu peux faire des tests qui permettent de marquer <NULL> dans la table quand le champs à insérer est vide

ex

strSQL="INSERT INTO NomTable(Champobligatoire"
If Champ1<>"" Then strSQL = strSQL & ", champ1"
If Champ2<>"" Then strSQL = strSQL & ", Champ2"
......
strSQL = strSQL &")"

NomConnection.Execute(strSQL)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
si je met à oui ça veut dire que j'interdit les champs null donc les champs vide, et donc que j'interdit les champs vide!!!
J'ai essayé qd même, et meme dans en mettant directement les valeurs dans acces, maintenant il veut que je saisisse une valeur obligatoirement, donc ça ne vient pas de là.
Merci quand même
0
Merci, ta solution fonctionne pour l'insertion.

Le truc qui me gène maintenant c'est pour la modification, car vu que je ne peut pas insérer de champs vides, si l'utilisateur veut modifier une valeur en un champs vide, je suis obligée de tester le champs vide et de de le mettre à zéro pour ne pas garder l'ancienne valeur.
0
pour update c'est le même principe avec un peu + de controle

soit tu fais tes test dans la requete :

strSQL="UPDATE NomTable SET Champobligatoire ="&Champobligatoire&""

If Champ1<>"" Then strSQL = strSQL & ", champ1="&champ1&"" END IF
If Champ1="" then strSQL = strSQL & ", champ1=null END IF"
If Champ2<>"" Then strSQL = strSQL & ", champ2="&champ2&"" END IF
If Champ2="" then strSQL = strSQL & ", champ2=null END IF"
......
strSQL = strSQL &")"

soit avant :
if Champ1 ="" then cham1=null
if Champ2 ="" then champ2 =null

etc.....

NomConnection.Execute(strSQL)
0
Merci, merci!!!!
J'ai fait avec la première solution et ça marche. (La deuxième veut pas marcher, je sais pas pkoi, mais c'est pas grave...)
Cloe
0
-------------------------------
Réponse au message :
-------------------------------

Merci, merci!!!!
J'ai fait avec la première solution et ça marche. (La deuxième veut pas marcher, je sais pas pkoi, mais c'est pas grave...)
Cloe

-------------------------------
Réponse au message :
-------------------------------

pour update c'est le même principe avec un peu + de controle

soit tu fais tes test dans la requete :

strSQL="UPDATE NomTable SET Champobligatoire ="&Champobligatoire&""

If Champ1<>"" Then strSQL = strSQL & ", champ1="&champ1&"" END IF
If Champ1="" then strSQL = strSQL & ", champ1=null END IF"
If Champ2<>"" Then strSQL = strSQL & ", champ2="&champ2&"" END IF
If Champ2="" then strSQL = strSQL & ", champ2=null END IF"
......
strSQL = strSQL &")"

soit avant :
if Champ1 ="" then cham1=null
if Champ2 ="" then champ2 =null

etc.....

NomConnection.Execute(strSQL)

-------------------------------
Réponse au message :
-------------------------------

Merci, ta solution fonctionne pour l'insertion.

Le truc qui me gène maintenant c'est pour la modification, car vu que je ne peut pas insérer de champs vides, si l'utilisateur veut modifier une valeur en un champs vide, je suis obligée de tester le champs vide et de de le mettre à zéro pour ne pas garder l'ancienne valeur.

-------------------------------
Réponse au message :
-------------------------------

tu peux faire des tests qui permettent de marquer <NULL> dans la table quand le champs à insérer est vide

ex

strSQL="INSERT INTO NomTable(Champobligatoire"
If Champ1<>"" Then strSQL = strSQL & ", champ1"
If Champ2<>"" Then strSQL = strSQL & ", Champ2"
......
strSQL = strSQL &")"

NomConnection.Execute(strSQL)

-------------------------------
Réponse au message :
-------------------------------

Bonjour

J'utilise un formulaire afin de saisir des données et des les enregistrer dans ma base de données. Pour les champs de type texte et qui sont vide je n'ai pas de pbs.
Mais pour les champs de type numérique, s'ils sont vides, j'ai une erreur au niveau du insert into :

"Type de données incompatible dans l'expression du critère."

Si je teste si le champs est vide et que je le met à 0, l'insertion se fait. Mais je ne pense pas que mettre des champs à zéros alors qu'ils doivent etre vide est une bonne solution.

J'ai essayé aussi, si le champs est vide, je récris le insert into mais sans le champs. Mais c'est pas une solution aussi puisque s'il y a plein de champs numériques, va y avoir bcp trop de requètes à écrire. Et si l'utilisateur veut modifier sa valeur et mettre rien à la place, la modif ne vas pas être prise en compte.

Peut être cela vient d'une option à cocher dans acces??
Bref si vous avez une idée, je vous remercie d'avance de me tenir au courant.

Cloe
0
de rien
0
matli82 Messages postés 1 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 30 août 2005
30 août 2005 à 17:45
Bonjour,



excuses moi mais si ca marche... tu n'as pas dis ce que tu as fais pour que ca marche!!

j'ai du manquer quelques choses... Veux tu me dire qu'est ce que tu as fais pour que ca marche???





Merci
0
Rejoignez-nous