Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2232 connectés 

  FORUM HardWare.fr
  Programmation

  Pb Requete ACCESS 97 sur une chaine de caractères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb Requete ACCESS 97 sur une chaine de caractères

n°47461
xaero
Posté le 18-07-2001 à 10:37:16  profilanswer
 

Bonjour à tous !
    Voila le pb : à partir d'un champ contenant le nom et prénom d'une personne séparés par une virgule (ex : paul, trougnard), je veux arriver à un champ comme ça : trougnard paul, ou à la rigueur, un champ nom et un champ prénom.  
    Avez vous une quelconque idée de la formule, ou même seulement de la fonction qui intervient. L'aide dans Access ne me parle pas trop.  
    Merci d'avance de vos infos !

mood
Publicité
Posté le 18-07-2001 à 10:37:16  profilanswer
 

n°47464
Mara's dad
Yes I can !
Posté le 18-07-2001 à 10:50:59  profilanswer
 

Mettre dans un champ tout ce qui est à gauche de la position de la virgule -1. Avec InStr() et Left().
 
Mettre dans un autre champ les caractères a partir de la position de la virgule + 2. Avec instr() et mid().


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°47756
xaero
Posté le 19-07-2001 à 10:08:19  profilanswer
 

Merci de tes infos. Mais par rapport au code, comment appliquer la modif à chaque enregistrement du champ et non pas à une variable comme dans l'exemple. T'aurais un exemple ?
 Merci d'avance !

n°47761
Mara's dad
Yes I can !
Posté le 19-07-2001 à 10:17:25  profilanswer
 

Y'a pas de variable dans mon exemple.
 
Dison que le champ à éclater est N_P (Nom, Prénom)
Ajoute 2 champs à ta table, mettons Prénom et Nom (au hazard !)
 
Dans un requête de mise à jour, tu as:
Pour le Prénom :
left( NP; inStr( N_P; "," )-1 )
 
Pour le Nom :
mid( NP; inStr( N_P; "," )+2 )
 
C'est tout !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°47804
xaero
Posté le 19-07-2001 à 11:21:35  profilanswer
 

Je parlais de l'exemple d'Access. Mais si je peux encore me permettre qq interrogations :  
   - Je créé la requete en mode création. J'ajoute la table concernée, je sélectionne les deux nouveaux champs : Nom et Prénom, et pour chacun d'eux, j'insère la formule à la ligne "critères". Et j'ai une erreur d'appel à une procédure.  
 
Mon champ d'origine est : Nom_Prenom. Les deux nouveaux champs sont Nom et Prénom.
 - J'ai inséré : - Gauche("Nom";DansChaîne("Nom_Prenom";"," )-1)
              pour la colonne Nom.
                 -ExtracChaîne("Prenom";DansChaîne
                                        ("Nom_Prenom";"," )+2)
              pour la colonne prénom.
 
  Où est l'erreur ?
  Please, ne me laisse pas tomber Mara's Dad !!!

n°47816
xaero
Posté le 19-07-2001 à 11:57:45  profilanswer
 

Oups, autre question : c'est quoi NP pour toi ? Une nouvelle variable, un champ ?

n°47820
Mara's dad
Yes I can !
Posté le 19-07-2001 à 12:03:35  profilanswer
 

N_P, c'était Nom_Prenom, je connaisais pas le nom de ton champ!
 
Sinon, pour la syntaxe :
Gauche([Nom_Prenom];DansChaîne([Nom_Prenom];"," )-1)  
ExtracChaîne([Nom_Prenom];DansChaîne([Nom_Prenom];"," )+2)  
 
Il faut mettre le nom des champs entre crochets, sinon, il considère çà comme une simple chaîne !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°47828
xaero
Posté le 19-07-2001 à 12:22:21  profilanswer
 

C'est vraiment sympa de m'aider, et en plus aussi rapidement.  
Cependant j'ai encore une erreur d'appel de procédure. Grr ! On va y arriver !!
 
Je pourrais t'envoyer la copie d'écran de ma requête mais je ne sais plus l'adresse où on doit poster l'image.

n°47857
xaero
Posté le 19-07-2001 à 14:30:00  profilanswer
 

Je crois qu'en fait, le pb vient de ma requete qui n'est pas créée comme il faut. J'ai fait une requete classique, donc les formules se retrouvent en WHERE dans la requete de type SELECT.
 
On peut créer une requete de MAJ sans passer par le code SQL (je me souvient plus trop du code SQL pour l'UPDATE).

n°47858
Mara's dad
Yes I can !
Posté le 19-07-2001 à 14:36:07  profilanswer
 

Oui, utilise l'assistant de création de requête.
Met ta table.
Choisi requête de maj.
Prend les champs Prenom et Nom.
Met les formules dans 'Mise à jour'.
 
C'est tout !
 
A, propos de "erreur d'appel de procédure", fait gaffe, si tu écris du code VB qui doit être éxécuté dans un autre module ou dans une requête, il faut que ce soit une fonction, pas une procédure ! ! !
A moins que ce soit juste un problème de vocabulaire et que t'ais dis procédure au lieu de fonction ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
mood
Publicité
Posté le 19-07-2001 à 14:36:07  profilanswer
 

n°47864
xaero
Posté le 19-07-2001 à 14:44:06  profilanswer
 

Ah YES ! ça a marché !! en fait j'avais pas sélectionner "Requete de mise à jour". Quel balot celui là. Bon, il y a qq pb de maj qui persistent mais je suis sur la bonne voie.
 
Il s'agit d'erreur de violation de clé, de conversion de type, de violation de verrou, de violation de la règle de conversion. J'aurai au moins jusqu'à perpette avec ça !
 
Si t'as une idée pour éviter ça (ça fera crier les secrétaires) je t'en remercie d'avance !!

n°47865
Mara's dad
Yes I can !
Posté le 19-07-2001 à 15:04:47  profilanswer
 

Là, je peux pas t'aider.
 
Regarde précisément les erreurs, identifie les causes, et débrouille toi pour que çà n'arrive plus !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°47912
xaero
Posté le 19-07-2001 à 17:32:10  profilanswer
 

Dernières questions et après j'arrete de t'embeter :
  - Est-ce que je peux concaténer deux colonnes pour en faire qu'une ? c'est à dire mettre les deux champs dans un seul en les séparant d'un espace par exemple.  
 
  - Quelle fonction tu utiliserais pour supprimer un caractère dans une chaine ?

n°47978
Mara's dad
Yes I can !
Posté le 19-07-2001 à 23:43:07  profilanswer
 

Concaténer : [Nom_Du_Champ1] + " " + [Nom_Du_Champ2]
 
Supprimer un caractère :
 
En réfléchissant un peu, et en combinant ce qu'on sait déjà faire :
Chercher la position d'un caractère dans une chaîne.
Prendre une partie d'une chaîne par rapport à une position.
Concaténer 2 chaînes.
On devrait pouvoir s'en sortir non !
 
Dans d'autres languages, y'a une fonction replace bien pratique, mais en VBA, y'en a une mais elle est pas pratique du tout !
Ce serait un bon exercice que de l'écrire, non ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°48020
xaero
Posté le 20-07-2001 à 10:43:13  profilanswer
 

Merci encore pour ces infos !
J'ai quasiment plus d'erreurs maintenant. Ce qui me fait le plus chier ce sont les enregistrements vides (le fichier texte d'où j'importe est comme ça, il y a des espaces).
 
J'hésite toujours à créer un prog en C qui me ferait toutes ces requetes en qq lignes. Il n'y aurait plus qu'à importer le fichier ensuite.
 
Je garde ton pseudo sous le coude au cas où Access me créerait encore des misères. Tu fais quoi dans la vie ? T'es administrateur de ddb ou qq chose comme ça ?

n°48034
Mara's dad
Yes I can !
Posté le 20-07-2001 à 12:31:06  profilanswer
 

Non, pas DBA, juste AP !
 
Mais je connais la micro depuis quasiment le début, donc j'ai engrangé pas mal de choses...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Pb Requete ACCESS 97 sur une chaine de caractères

 

Sujets relatifs
comment recuperer le resultat d'une requete SQL en visual basic???decoupe un chaine avec un delimiteur en javascript =>tableau??
Access et code barre !![access] BESOIN DE PROS
site pour access ?quelqu'un peut il me dire comment on fait des requête sql avec VC++
qui sait comment je peux faire ça avec access:ADO sous WinCE et requete SQL
liste sous accesstransformer un chaine de caractere : 06 en chiffre 6 en php??
Plus de sujets relatifs à : Pb Requete ACCESS 97 sur une chaine de caractères


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR