Visites

   visiteurs

   visiteurs en ligne

Sujet n°286 PB Table et Formulaire
    par Marc le 04/11/2009 : 09:39

Bonjour,

Je vais essayer de faire simple

 

J'ai une table T_Code qui contient 4 champs Code,Catal,Longueur,Emul

J'ai un formulaire F_Code ,que j'ai créé avec l'assistant,qui reprend ces 4 champs

Dans ce formulaire j'ai modifié la source des champs Catal,Longueur,Emul,car leur valeur résulte de la fonction extracChaîne par rapport au champ Code

Mon PB c'est quand je saisis dans le champ Code une valeur,le autres champs se remplissent bien,mais dans la table seul le champ code est renseigné

mais pas les 3 autres,

que dois-je faire?

Merci de m'éclairer sur ce point

Marc

 


Réponse n° 1 par 3Stone le 04/11/2009 : 11:35
Bonjour,


Dixit...
Dans ce formulaire j'ai modifié la source des champs Catal,Longueur,Emul,car leur valeur résulte de la fonction extracChaîne par rapport au champ Code


Là, cela ne va pas !...

Pour un formulaire de saisie, tu ne peux pas modifer la source. La source d'une zone de texte doit reprendre tel quel le champ de la table. Cette règle n'est pas applicable pour un formulaire ou un état qui ne sert qu'à l'affichage.

Si tu en est venu à faire cela, je pense que cela vient probablement du fait que ta (tes) table(s) est mal construite et qu'elle ne respecte pas les règles de la normalisation...

Je pense qu'il faudrait d'abord remédier à cela.

Cordialement,
Pierre(3stone)

Réponse n° 2 par Marc le 04/11/2009 : 13:59

Merci de m'avoir répondu aussi vite

Ma table est toute simple,lorsque je rentre une valeur dans le champ code,je souhaite que les champs Catal,Longueur,Emul soient remplis automatiquement par la fonction extracChaîne,alors ou dois-je mettre cette fonction

Merci  marc

Réponse n° 3 par 3Stone le 04/11/2009 : 14:25
Bonjour,


Dixit...
lorsque je rentre une valeur dans le champ code,je souhaite que les champs Catal,Longueur,Emul soient remplis automatiquement par la fonction extracChaîne


Ce serait plutôt une chose à faire avec Excel biggrin

Si tu souhaites vraiment faire cela, il faut placer une zone de texte indépendante sur le formulaire.
Dans l'événement "Après mise à jour" tu peux alors utiliser le VBA pour scinder la saisie et pouser cela dans les différents champs.

La question que je me pose, est : pourquoi ne fais tu pas la saisie directement dans les champs qui vont bien frown ce serait plus "normal..."

Cordialement,
Pierre(3stone)


Réponse n° 4 par Marc le 04/11/2009 : 14:51

En fait ,la saisie que je vais faire dans le champ code c'est un code barre que je vais scanner,et je veux le décomposer car il contient tous les éléments évoqués au dans le 1er poste,et tout ceci avec access ,car je veux archiver et faire des stats,lier des pieces jointes ect...

Marc

Réponse n° 5 par 3Stone le 04/11/2009 : 15:09
re,


Dixit...
la saisie que je vais faire dans le champ code c'est un code barre que je vais scanner


C'est quelque chose que j'utilise beaucoup wink

Mais cela ne justifie absolument le fait que c'est un "champ composé".
Le code barre de doit rien repésenter d'autre que l'identifiant d'un enregistrement (clé primaire) et non un amalgame de données... qui n'a rien à y faire.
Nous revoilà donc bien à la conception de la base cool

Cordialement,
Pierre(3stone)

Réponse n° 6 par Marc le 05/11/2009 : 09:18

Bonjour,

Je pense que je me suis mal exprimé,le code barre que je dois scanner est sur une boite , et il contient toutes les données citées plus haut , pour moi cette solution me semble plus facile ,que de noter dans chaque champ chaque valeur de plus c'est ecrit tres petit et je scanne environ 500 boites par jour,en fait ma question elle est simple,ou dois-je ecrire la fonction MID et qu'elle est la syntaxe car lorsque j'écris ceci Mid([nom du champ];1;4) dans une procedure evenmentielle ça marche pas,je signale que je ne connais en rien le VBA,je fais que de copier ce que j'avais trouvé sur le site de Microsoft

Marc

 

Réponse n° 7 par 3Stone le 05/11/2009 : 14:07
Bonjour,

Je comprends mieux le besoin...

Comme tu le dis, le mieux serait de créer une petite fonction qui ferait cela proprement.
Sans VBA, essaie ceci, sur après mise à jour de ton champ "txtSaisie":


Champ1 = Mid(txtSaisie;1;4)
Champ2 = Mid(txtSaisie;5;3)
Champ3 = ....

Me.Dirty = False


En adaptant le nom des champs et le valeur des "Mid()"

Cordialement,
Pierre(3stone)

Réponse n° 8 par Marc le 05/11/2009 : 14:55

Merci beaucoup,

ça fonctionne tres bien , je vais pouvoir continuer mon petit projet,je vais aussi continuer de parcourir votre site,car je pense avoir beaucoup a apprendre ,merci encore

Marc

[ Retour à la liste des sujets ]

Recherche



Préférences

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


 Nombre de membres 1 membre


Connectés :

( personne )

Haut