|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Michel AUBINEAU Inscription : mai 2010 Messages : 43 ![]() |
Ci-joint l'impression de mon code qui pose problème (Je suis débutant) :
Code :
Ce code doit ajouter des enregistrements dans la table PERM_TACHES_SV, selon les lignes sélectionnées d'une zone de liste LISTE_SV, et affecter des valeurs (texte et nombre) selon les calculs faits dans la boucle FOR EACH. Mon problème est qu'à chaque lancement de la requête celà déclenche 2 enregistrements incorrects : - les valeurs des variables Date_Travail, Code_SV_concernee, Temps_reparti_mn et nb_rec ne s'enregistre pas dans l'enregistrement Ma syntaxe est-elle correcte ? Différence d'écriture entre les variables TXT et les variables CHIFFRES ??? Help, je suis perdu. Merci à l'avance. |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Tout ce qui est entre " n'est simplement pas interprété par VBA, c'est utilisé tel que donc pour que tes variables soient prises en compte, il faut les sortir de la chaîne de caractère.
Code :
Pour les champs textes, il convient de mettre les délimiteurs " autours donc d'écrire quelque chose comme """" & TaVariableTexte & """". Pour les champs dates, il convient de mettre les délimiteurs # autours et je recommande auusi de formater les dates au format AAAA-MM-JJ donc d'écrire quelque chose comme "#" & Format(TaVariableDate,"aaaa-mm-jj") & "#". Le formatage évite les ambiguités comme le 01/02/2012 qui peuvent être lu comme 1er fév 2012 ou 2 Jan 2012. 2012-02-01 ne laisse aucune place à l'erreur. Pour les champs numériques décimaux, il faut prendre garde à la virgule qui sépare les décimales. La virgule si elle est là doit être remplacée par un point. On peut utiliser Replace(str(TaVariableNum),",",".") pour résoudre ce problème. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
10
|
|
|
#3 |
|
Futur Membre du Club
![]() Michel AUBINEAU Inscription : mai 2010 Messages : 43 ![]() |
Merci déjà pour ces éléments qui me permettent d'avancer.
Je constate quelques autres anomalies, mais je vais me creuser la tête avant de te solliciter à nouveau. Merci encore. |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Michel AUBINEAU Inscription : mai 2010 Messages : 43 ![]() |
OK, maintenant les variables entrent bien dans les enregistrements de ma table;
Le hic qui reste (apparemment) est le suivant : - Je vide bien ma table PERM_TACHES_VAR; L'examen de la table me montre le futur enregistrement à venir, qui s' appelle 'nouveau' et je vois le N° auto qu'il aura, et les champs sont tous vides. OK jusque là. - Lorsque je ne sélectionne qu'un élément de la liste, la requête d'ajout doit donc s’exécuter q'UNE fois, et là je découvre que'j'ai deux enregistrements dans la table : a- le 1° est incomplet, c'est celui qui était en attente suite au vidage de la table, appelé 'nouveau' , il a n'enregistré que certaines variables. b- le 2° est complet et correct mais il y a bien 2 enregistrements ! Je ne comprends pas. Merci à l'avance. Michel |
|
|
00
|
|
|
#5 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Je ne pense pas que l'enr "nouveau" soit un vrai enregistrement. Ce doit être seulement une invite à la saisie complétée avec les valeurs par défaut.
Pour le vérifier tape dans la fenêtre d'exécution immédiate : DCount("*","NomTaTable") qui va te donner le nombre réel d'enregistrement dans ta table. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Michel AUBINEAU Inscription : mai 2010 Messages : 43 ![]() |
Bonjour et merci de ta réponse.
J'ai donc compter les enregistrements selon ton conseil et il y en a toujours 1 de plus que mon nombre de lignes sélectionnées dans ma liste. Je te joins les # copies d'écran. Mes infos/questions/remarques sont donc : - J'ai mis le champ 'heure_saisie' avec l'heure en valeur par défaut afin de contrôler quand les enregistrements se créent - je vide la table et je vois donc le futur enregistrement, bien vide, sauf le champ 'heure_saisie' avec sa valeur par défaut, l'heure ou j'ai vidé la table. (cf png1). - je sélectionne 3 lignes dans ma zone de liste, je m'attends donc à avoir 3 exécutions de ma requete ajout et (seulement) 3 enregistrements dans la table. (cf png2) - je valide ma sélection des 3 lignes et je vais voir dans la table (après avoir raffraichi l'affichage /F5. - voici ce que je découvre dans la table : 1+3=4 enregistrements dont le plus ancien est incomplet. D'où vient-il ? (cf png4) - je compte avec dcount et je trouve (hélas) 4 enregistrements ! (cf png4). Qu'en penses-tu ? où cherchez l'anomalie ? Merci de ton investigation. Michel |
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 479 ![]() |
Là je ne vois pas.
Peux-tu recommencer en vidant ta table et en traçant ton code pas à pas ? Je n'ai pas l'impression que cela vienne du code mais cela donnera peut-être une piste. Ce phénomène se produit parfois quand ont active un sous-formulaire, ce qui crée automatiquement un enr dans la table principale associée mais tu ne semble pas avoir cela dans ton écran de saisie. Au fait, maintenant que le Nouveau a bien été identifié comme n'étant pas un enregistrement tu peux déduire que s'il y a un nunéro auto alors tu as un enregistrement. Le DCount() n'est plus indispensable. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com