Problème de zone de text vide

cs_dauphin70 Messages postés 55 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 13 août 2004 - 21 juil. 2004 à 16:49
cs_dauphin70 Messages postés 55 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 13 août 2004 - 22 juil. 2004 à 08:29
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

egallant Messages postés 31 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 17 septembre 2004 1
21 juil. 2004 à 17:05
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
0
egallant Messages postés 31 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 17 septembre 2004 1
21 juil. 2004 à 17:10
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
0
cs_dauphin70 Messages postés 55 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 13 août 2004
21 juil. 2004 à 17:16
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
0
egallant Messages postés 31 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 17 septembre 2004 1
21 juil. 2004 à 17:24
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
0

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

Posez votre question
egallant Messages postés 31 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 17 septembre 2004 1
21 juil. 2004 à 17:25
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
0
cs_dauphin70 Messages postés 55 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 13 août 2004
21 juil. 2004 à 17:29
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
0
egallant Messages postés 31 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 17 septembre 2004 1
21 juil. 2004 à 17:30
peux tu mettre la commande que tu passe ?
0
cs_dauphin70 Messages postés 55 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 13 août 2004
21 juil. 2004 à 17:35
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
0
egallant Messages postés 31 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 17 septembre 2004 1
21 juil. 2004 à 17:47
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)& "');")
0
cs_dauphin70 Messages postés 55 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 13 août 2004
22 juil. 2004 à 08:29
ok je te remercie
je vais essayer

dauphin70
0
Rejoignez-nous