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

 


Dernière réponse
Sujet : Pb Requete ACCESS 97 sur une chaine de caractères
Mara's dad Non, pas DBA, juste AP !
 
Mais je connais la micro depuis quasiment le début, donc j'ai engrangé pas mal de choses...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Mara's dad Non, pas DBA, juste AP !
 
Mais je connais la micro depuis quasiment le début, donc j'ai engrangé pas mal de choses...
xaero 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 ?
Mara's dad 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 ?
xaero 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 ?
Mara's dad Là, je peux pas t'aider.
 
Regarde précisément les erreurs, identifie les causes, et débrouille toi pour que çà n'arrive plus !
xaero 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 !!
Mara's dad 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 ?
xaero 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).
xaero 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.
Mara's dad 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 !
xaero Oups, autre question : c'est quoi NP pour toi ? Une nouvelle variable, un champ ?
xaero 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 !!!
Mara's dad 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 !
xaero 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 !
Mara's dad 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().
xaero 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 !

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)