Problème de zone de text vide

Signaler
Messages postés
55
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
13 août 2004
-
Messages postés
55
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
13 août 2004
-
bonjour
voici mon probleme sous vb6:
dans mon programme il existe certaines zones de texte ou des DTPicker qu'on est pas forcé de remplir, mais le problème est que si on ne les remplit pas ca pose soucis dans l'INSERT INTO

alors quel est le code que je pourrais écrire pour qu'il me les enregistre vide ou pas?
et où dois-je mettre ce code???

merci
dauphin70

10 réponses

Messages postés
31
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
17 septembre 2004
1
lorsque tu construit ta chaine, tu conditionne la valeur par une fonction myfunc qui retourne null ou le text :

myQuery =" Insert into....myfunc(text1.text)." & myfunc(DTPicker1.text) & ",myfunc(text2.text)," & myfunc(DTPicker1.text)
& ")"

function myfunc(pobj as object) as variantif pobj.text "" then myfunc null
if pobj.text <> "" then myfunc = pobj.text
end function
Messages postés
31
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
17 septembre 2004
1
petite correction:
j'ai mis 'null' car c'est cette ctring que tu dois mettre dans ta requête, mais tu peux y mettre autre chose (0 , ...)

function myfunc(pobj as object) as variantif pobj.text "" then myfunc 'null'
if pobj.text <> "" then myfunc = pobj.text
end function
Messages postés
55
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
13 août 2004

merci pour ta réponse
mais comme je suis nouvelle en vb6, je ne comprends pas tout ce que tu m'as répondu surtout:
function myfunc(pobj as object) as variant

désolé je comprends vite mais il fo m'expliquer longtemps

dauphin70
Messages postés
31
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
17 septembre 2004
1
si j'ai bien compris ce que tu veux faire , tu veux construire une chaine de caractères de style "insert into ......" avec les textes contenus dans tes textbox ou tes dtpicker.

Donc, si tu fais:
machaine = "insert into ......" & dtpicker.text & "," & .....
et que ton dtpicker1.text (ou dtpicker) est vide, tu n'as rien
Messages postés
31
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
17 septembre 2004
1
désolé, j'ai répondu un peu vite.
Peux tu expliquer plus précisement ce que tu as comme controle et se que tu veux en faire?

Merci
Messages postés
55
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
13 août 2004

oui tu as bien compris ce que je veux faire
et quand je veux exécuter ma commande, elle ne fonctionne pas et elle me marque : type de données invalide quand mes zones sont vides
si elles sont remplis ca fonctionne tres bien
dauphin70
Messages postés
31
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
17 septembre 2004
1
peux tu mettre la commande que tu passe ?
Messages postés
55
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
13 août 2004

Set adoAjoutMaint = Db.Execute("INSERT INTO maintenance(idmaint, observations, lieux, dateinter, datearret, datemarche, heurearret, heuremarche, arretmachine) VALUES('" & adomax("maxid") + 1 & "','" & ZObserv.Text & "','" & adoLieu("idlieu") & "','" & ZDate.Value & "','" & ZDateArret.Value & "','" & ZDateMarche.Value & "','" & ZHeureArret.Text & "','" & ZHeureMarche.Text & "','" & chkArret.Value & "');")

dauphin70
Messages postés
31
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
17 septembre 2004
1
en fait, ce que je voulais te faire faire c'est de créer dans ton programme une fonction qui te renvoie la valeur que tu souhaite dans le cas d'un texte vide ou non vide.
je pense que ton probleme est lié au faite que le .value est en erreur si ta zone est vide.
Essaie alors :

Private function myfunc (pobj as dtpicker) as variant
'pobj est un objet de type dtpicker que tu passe en paramètre
' as variant signifie que ta fonction retourne un type indefini
on error goto fin_erreur
myfunc= pobj.value
exit function
fin_erreur:
myfunc = "Null"
end function

Set adoAjoutMaint = Db.Execute("INSERT INTO maintenance(idmaint, observations, lieux, dateinter, datearret, datemarche, heurearret, heuremarche, arretmachine) VALUES('" & adomax("maxid") + 1 & "','" & ZObserv.Text & "','" & adoLieu("idlieu") & "','" & myfunc(ZDate)& "','" & myfunc(ZDateArret)& "','" & myfunc(ZDateMarche) & "','" & ZHeureArret.Text & "','" & ZHeureMarche.Text & "','" & myfunc (chkArret)& "');")
Messages postés
55
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
13 août 2004

ok je te remercie
je vais essayer

dauphin70