Séparateur
Le
PatCatNat's
Bonsoir,
Dans un formulaire, j'ai un champ mémo dans ma base de données (Access2003)
de films qui contient les noms des acteurs (nombre variable) séparés par des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson, Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une table par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de réimporter et
trouver une requête qui me fasse l'affaire mais nothing
Quelqu'un aurait une idée ????
Patrice
Dans un formulaire, j'ai un champ mémo dans ma base de données (Access2003)
de films qui contient les noms des acteurs (nombre variable) séparés par des
virgules + espace :
[Acteurs] : Cellian Murphy, Naomie Harris, Brendan Gleeson, Christopher
Eccleston, Megan Burns, Noah Huntley
Pour effectuer un traitement ultérieur, j'aurais voulu créer une table par
procédure VBA avec [NumFilm] et [Acteurs] :
[NumFilm] [Acteurs]
01 Cellian Murphy
01 Naomie Harris
01 Brendan Gleeson
01 Christopher Eccleston
01 Megan Burns
01 Noah Huntley
J'ai bien essayé en exportant en texte et en essayant de réimporter et
trouver une requête qui me fasse l'affaire mais nothing
Quelqu'un aurait une idée ????
Patrice

Poser une question


Il te faut faire une procédure spéciale qui va te lire chaque Enregistrement
de Film et y extraire les Acteurs(Extraction du fichier mémo en se déplacant
à l'intérieur selon la logique que tu as mise en place)
Ces 2 données sont injectées dans une table, soit pour chaque
entregistrement = autant d'ajout qu'il y a d'acteurs.
Mais ton traitement ne s'arrête pas là. En effet tu as des mêmes acteurs qui
sont dans des films différents, donnc il te faut une table Acteurs.
En fait dans ton formulaire, plutot que de mettre les acteurs en champ Mémo,
tu devras créer un sous-formulaire(ActeurFilm) dans lequel tu y mettra les
acteurs pour le film.
Il faut savoir à quoi tu désires utiliser ça. Selon les cas ta base est à
redéfinir.
Bonne journée.
Bye
"PatCatNat's" news:cjfaeo$pq7$
L'utilité est de pouvoir créer un état (ou autre objet) par la suite pour
pouvoir choisir un acteur existant dans ma base et savoir dans quels films
par exemple il a joué (ou si film musical dans quels morceaux il est présent
aussi, etc...).
Mais le champs mémo m'intéresse aussi, car j'obtiens les données par
copier/coller dans le net et de plus celà me permet de pouvoir faire des
états avec un seul champ et toutes les données dedans.
Donc comme tu dis, je tiens à faire spécifiquement une table acteur, mais je
ne sais pas par quel voie passer pour trouver une formule du type :
"Après chaque virgule + espace je passe à un enregistrement suivant"
Bref, tout un film...
Patrice
"JMH" news:%
Mais, ton champ mémo t'arrange certes, mais tu ne pourrais jamais rien en
faire(sans le traiter au préalable), si ce n'est le consulter et imprimer.
Et un champ mémo n'est pas fais pour ça.
Mais le problème est de savoir ce que tu connais d'Access (code VBA,
programmation, etc..), car il faut faire un peu de programmation.
Dans ton cas tu devrais avoir au moins 3 tables:
tblFilm
tblFilmActeur (lien sur tblFilm par le No du Film)
tblActeur (lien sur tblFilActeur par le No d'Acteur)
Un formulaire frmFilm(basé sur la table tblFilm ou une requête) qui contient
un sous-formulaire sfrFilmActeur(basé sur la table tblFilmActeurs ou une
requête).
Tu le remplirais de la façon:
Saisie du Titre du film, année, etc.
Tu vas sur Internet et tu prends tes données Copier (attention: elles
doivent toujours avoir le même format)
Tu les colles dans un champ de travail de ton formulaire(workActeur) Tu les
arranges si nécessaire (séparateur, espace)
A côté de ce champ, tu mets un bouton btnDecoder
Et là tu écris une fonction qui va analyser ton champ(workActeur), créer les
acteurs qui ne sont pas encore dans la table (tblActeur) et remplir la table
tblFilmActeur
En faisant un requery sur ton sous-formulaire, tu auras tout ça affiché.
Voilà en gros ce que moi je ferais.
A partir de ça, tu pourras savoir:
Par film, qui sont les acteurs
Par Acteurs, dans quels films ils ont joués
Etc.
Et pour l'état. tu peux, si désiré, recomposer un bloc qui contienne tous
les acteurs du film.
Bon courage à toi.
A+
Jean-Michel H.
"PatCatNat's" news:cjgcfd$jed$
Je pense que le mieux à faire c'est en vba de :
- Stocker ton champ mémo dans un string
- Avec un InStr tu repéres les emplacements de virgules
- A chaque emplacement de virgule tu prends la partie gauche, et tu
fais un insert avec dans ta table
- Tu coupes ton string par la droite, en enlevant la partie gauche
et la virgule
Et tu boucles la dessus jusqu'à la fin de ton string. Ton string va se
réduite au fil des boucles, acteurs par acteurs.
Après il faudra peut être que tu géres les doublons, comment tu fais si un
nom revient ?
Arnaud
"PatCatNat's" cjgcfd$jed$
Le VBA et moi çà va un peu (au regard de tout ce que je vois - et pompe-
dans le groupe de news...pour les aménager à ma sauce).
Ton explication est tout à fait dans la démarche que j'imaginais :
tblFilm ==> Existe
tblFilmActeur (lien sur tblFilm par le No du Film) ==> Existe (mais
forcément vide pour l'instant...)
tblActeur (lien sur tblFilActeur par le No d'Acteur) ==> Pas de blème avec
une requête Créa ou Ajout et regroupement basée sur tblFilmActeur
Un formulaire frmFilm(basé sur la table tblFilm ou une requête) ==> Existe
qui contient un sous-formulaire sfrFilmActeur(basé sur la table
tblFilmActeurs ou une requête).==> Pas de blème
Tu les colles dans un champ de travail de ton formulaire(workActeur) Tu les
arranges si nécessaire (séparateur, espace) ===> C envisagé manuellement (fo
p't'être pas pousser l'automation ;o)))
A côté de ce champ, tu mets un bouton btnDecoder
Et là tu écris une fonction qui va analyser ton champ(workActeur), créer les
acteurs qui ne sont pas encore dans la table (tblActeur) ==> C'est là que je
sèche pour écrire la fonction qui reconnaîtra les virgules + espaces pour
renvoyer à un enregistrement suivant :-(((
et remplir la table tblFilmActeur ==> Pas de blème technique
Voilà où j'en suis avec ma base et access 2003...
Merci de ton aide,
Patrice
"JMH" news: