Prendre un debut d'enregistrement sous access

sandy -  
 Bastien -
Bonjour,
Y aurait-il quelqu'un qui sache comment récupérer une fonction permettant de prendre en compte le debut d'un enregistrement dans les criteres sous access ?
Par exemple, j'ai le nom de l'association et entre parenthese, son theme, je veux virer son theme, le mettre sous une autre table, et garder juste le nom de l'association, ya-t-il une fonction dans les critères d'access qui permette d'ajouter un enregistrement dans les requêtes juste du debut des mots ?
car j'ai 1230 associations et entre parenthèse, j'ai 1230 themes, et je voudrais les virer sur une autre table sans les faire un par un...
Et autre question : dans l'effet inverse, comment prendre la fin de la phrase qui est entre parenthese pour le mettre sur une autre table... Ici : le theme ... ?
Merci de votre aide.
Cordialement.
Sandy.

24 réponses

teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut, il te faut passer a priori par une macro en VBA et utiliser les fonction Right et Left et de maniere generale les fonctions de manipulations de strings (regarde dans MSDN)

.  .  Bon!Si on m'empeche de travailler
\_/  Je ne me debattrai pas!
0
Bastien
 
il faut que tu untilise la fontcion left.
ex: left(ANNEE, 2)
cela veut dire que je prend les 2 premier nombre de l'année.

bye
0
sandy
 
Oui, mais tous n'ont pas la même longueur...
donc, si je fais left(nomassoc, 10)
ils me prendront que les 10 caracteres de l'association...
Les associations qui auront plus de 10 caracteres seront coupées...
Et sinon, ça, dans les requêtes, on le met bien dans les criteres, c ça ?
Car ils me disent "l'expression entrée comporte une fonction dont le nombre d'arguments n'est pas correct"...
pourtant, j'ai 1230 associations lol... je capte rien...
Merci de m'aider.
Cordialement.
Sandy.
0
sandy
 
Svp, c'est important, j'arrive toujours pas, alors que c'est tout simple... (j'en suis sûr...) :)
0

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

Posez votre question
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut, regarde aussi la fonction first...
En gros (a ajuster je ne sais plus bien les limites) ca te donnerai ca

left(MonChamp,first(MonChamp,"("))


.  .  Bon!Si on m'empeche de travailler
\_/  Je ne me debattrai pas!
0
jeff
 
ben sandy la solution se trouve dans les requetes... il faut pour ca realiser une requete SQL qui fait l'operation pour toi
il me faudrait le nom des champs et des tables pour te décrire l operation
0
sandy
 
Alors, dans la table SUB, j'y ai mis tous mes enregistrements...
Il y a la table nomassoc qui contient le nom des associations avec le theme juste à côté entre parenthèse.
Dans cette table (SUB), j'ai rajouté un champs nomassoc2 pour y mettre que le nom de l'association (sans le theme), donc dans une requete, j'essaie avec la fonction left, mais ça ne marche pas...
Il faut utiliser (je pense) une requête de mise à jour mais je ne sais pas trop comment la mettre en oeuvre...
Voilà !! Une fois le nom de l'association dans assoc2, je voudrais mettre le thème qui est à chaque fois entre parenthèse pour les 1230 associations dans la table thème qui contient le codetheme avec le libellé. Nous, ce qui nous intéresse, c'est le libellé...
Voilà !! Je sais pas si je me serai fait comprendre.
En tous cas, merci beaucoup pour tout...
Merci encore pour votre aide.
Cordialement.
Sandy
0
jeff
 
je regarde les fonctions sql dans la journée et je te reponds
0
sandy
 
Ok, merci beaucoup...
Cordialement.
Sandy.
0
jeff
 
sandy, je crois que j'ai trouvé.... mais si tu pouvais m'envoyer ta base par mail je pourrai verifier...
y a deux requetes sql a faire, une pour extraire l'autre pour copier dans une autre table
pluschaud@free.fr
0
blux Messages postés 4939 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

C'est super-drôle à faire !

Soit une table SUB avec trois champs :

assoc1 : contient le nom sous la forme assoc(theme)
nomassoc : champ qui contiendra le nom
theme : champ qui contiendra le theme

Pur mettre à jour les données dans la table, exécuter la requête suivante :
UPDATE SUB SET nomassoc = Left(assoc1,InStr(assoc1,"(")-1), theme = mid(assoc1,len((Left(assoc1,InStr(assoc1,"(")-1)))+2, (len(assoc1)-len(Left(assoc1,InStr(assoc1,"(")-1))-2));

Vaut mieux faire un copier/coller, car on peut se perdre dans les parenthèses...

Explication :

On cherche où est la parenthèse '(' avec la fonction InStr, ensuite il suffit de faire savants calculs pour prendre ce qu'il y a à sa gauche et un peu de ce qu'il y a à sa droite :-)))

J'ai quand même mis 20 minutes pour la faire, celle-là !

Pour Teebo, le 'first' ne sert qu'a sortir le premier record d'une table et n'est pas une fonction de string.

Bon amusement ! ;-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
jeff
 
oui c ca mais bon pour sandy vaux mieux faire ca en deux requete et copier les reponses de l'extract dans une autre table....

backup avant sandy....
0
blux Messages postés 4939 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
oui c ca
Heureux que ça te plaise ! ;-)

Oui, mais elle est pas très claire entre les bases, les tables et les champs, alors je l'ai fait en une requête dans la même table, comme ça après, elle joue avec :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
sandy
 
Super, ça marche :o)
Alors là, merci beaucoup, je pensais pas qu'on pouvait y arriver...
ça m'évite de tout rentrer les 1230 enregistrements, merci beaucoupà tous :o)
Je suis content, youpiiiiiiii...
Cordialement.
Sandy.
0
blux Messages postés 4939 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Super, ça marche :o)
J'allais quand même pas filer du SQL dans la nature et risquer la honte abyssale si ça foirait ! :-)))

je pensais pas qu'on pouvait y arriver...
En informatique, on peut tout faire... même des conneries... et sourtout des conneries ;-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
sandy
 
J'ai une autre question si vous pouvez y répondre, elle est à peu près pareil, mais j'ose pas modifier au cas où car j'ai peur de tout supprimer lol, ça serait pour remplir les associations dans nomassoc2... car toutes ne sont pas rentrées avec cette requête, il y en a qui n'avaient pas de parenthèses donc, elles sont pas rentrées dans nomassoc2...
Pour les actions(c les themes), c parfait, tout a marché... plus la peine d'y toucher...
Ceux que j'avais fait précedemment et qui a marché est :
UPDATE SUB SET nomassoc2 = Left(nomassoc,InStr(nomassoc,"(")-1), action = mid(nomassoc,len((Left(nomassoc,InStr(nomassoc,"(")-1)))+2, (len(nomassoc)-len(Left(nomassoc,InStr(nomassoc,"(")-1))-2));

Maintenant, comment faire pour remplir nomassoc2 vide ?
Merci beaucoup...
Cordialement.
Sandy.
0
blux Messages postés 4939 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Il suffit de tester si le champ ne contient rien et n'est pas initialisé, et le remplir dans ce cas :
UPDATE SUB SET nomassoc = assoc1
WHERE nomassoc IS NULL;

J'ai repris mes noms de champ, pour tester...

Mais attention, si des thèmes sont présents avec autre chose que le séparateur "(" alors, il faut lancer la requête initiale en changeant le séparateur...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
sandy
 
Génial, merci encore...
ça marche :o)
Bonne soirée et encore merciiii.
Cordialement.
Sandy.
0
sandy
 
Bonjour,
J'ai toujours d'autres questions, hummm...
Maintenant que j'ai tous les noms d'associations, je voudrais rajouter dans la table SUB un numéro d'action qui mettrait un numéro à une association dès qu'elle s'appelle différemment...
Car j'ai souvent plusieurs lignes où des associations sont les mêmes, je voudrais leur mettre un numéro...

Comment faut-il faire ?
UPDATE SUB SET numeroassoc = ...
je veux qu'il prenne le nom d'association dans nomassoc2 présent dans la table SUB et qu'il y mette un numéro différent lorsque nomassoc2 est différent de la ligne suivante...
hummmm, je suis pas très doué...
Merci de votre aide.
Cordialement.
Sandy.
0
jeff
 
salut
dis sandy tu recommence ce matin
si tu veux je vais bosser a ta place...
0