antidotesfr
Messages postés12Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention28 septembre 2005 28 sept. 2005 à 16:10
Ca y est j'ai trouvé !!!!!!
Si la solution vous interresse :
Faire une requête comme ci dessous :)
SELECT MonChamp
FROM MaTable
ORDER BY
IIf(InStr([MonChamp],Chr(39))>0,Mid([MonChamp],1,InStr([MonChamp],Chr(39))-1) & ' ' & Mid([MonChamp],InStr([MonChamp],Chr(39))+1),[MonChamp])
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 27 sept. 2005 à 17:50
salut,
MonChampModifie = Replace(MonChamp,"'","' ")
vSQL= "Select ... From ... Order by " & MonChampModifie
set vRs=db.OpenRecordset(vSQL,dbOpenDynaset) >>>l'erreur n'est plus là
PCPT
antidotesfr
Messages postés12Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention28 septembre 2005 27 sept. 2005 à 19:05
On dirait que tu n'as pas bien compris ma question en fait :)
Un tri classique par order by MaColonne ne trie pas comme je le souhaite les données le replace permet de changer l'ordre de de tri en stipulant de trier l'apostrophe comme apostrophe + espace
La requête marche tres bien dans un editeur SQL que ce soit avec SQL server ou avec Access 2000 SP3 mais impossible de faire executer cette requete par VB en DAO.
Je cherche donc une soluution pour qu'un tri correct (cad comme je le désire et non standat :p ) soit possible.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 27 sept. 2005 à 19:18
re,
je crois comprendre (enfin)
seulement, je doute que l'on puisse "paramétrer" la manière de trier (à part ASC DESC).
dans le doute, essaie " .....ORDER BY ASC(" & Replace(MonChamp,"'","' ") & ")"
mais j'en doute fort!
une solution alternative?
peut-être faire ta requête sous access, l'enregistrer, et accéder à cette requête (fonctionnelle) à partir de VB
non?
antidotesfr
Messages postés12Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention28 septembre 2005 27 sept. 2005 à 19:26
En fait j'ai déjà essayé de créer la requete directement dans access et de l'appeller dans VB.
Or la requête marche tres bien dans Access mais ne veut pas s'executer dans VB :(
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 27 sept. 2005 à 21:50
Salut, à partir de VB6, je vois une solution qui ne va sans doute pas te plaire car ce sera trié comme ça :
- DAC
- DAD
- DEC
- D'AB
- D'AD
- D'EB
Enfin, la voilà quand même (le nombre de @, tu en mets autant que la taille du champ nom pour que ça marche, là j'en ai mis 4 car c'est dans tes exemples) :
"select * from table1 order by format(nom,'@@@@')"
En dehors de ça, j'ai essayé d'autres trucs, ADO comme DAO, avec ou sans requête stockée, même résultat : ignorance de l'apostrophe.
, j'ai essayé ta proposition (avec une base access97), ça ne trie pas comme demandé.
Même coller le résultat de la requête dans une listbox dont la propriété sorted = true, ça ne marche pas.
Quoique je n'ai jamais eu à me poser cette question, s'il y a une solution qui marche, comme demandé au début, avec tous types de bases access, je suis preneur aussi.
PS : replace n'est pas reconnu par le moteur Access (même sous Access).
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 27 sept. 2005 à 22:33
CanisLupus -> ok, merci d'avoir testé. j'ai bien dit que j'en doutais et n'ai pas essayé.
par contre, si la requête de AntidotestFr fonctionne sous access, alors ma dernière proposition est elle testée sous Access2000 (base) // DAO 3.6 VB6 et fonctionne ;)
antidotesfr
Messages postés12Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention28 septembre 2005 28 sept. 2005 à 09:29
@PCPT
J'ai donc testé de créer ma requete Req1 comme telle : "Select ... From ... Order by Replace(MonChamp, '''', ''' ');"
J'ai ensuite executer la requete "SELECT * FROM Req1" dans VB
Malheureusement j'ai toujours le message d'erreur
@Zlub
Lis ma question jusqu'au bout
Je fais déjà le replace dans mon Order by mais cela ne marche pas en DAO il ne reconnait pas le replace quelquesoit ce que je mets dans le replace.
@CanisLupus
Le replace marche bien dans Access mais à partir de Access 2000 SP3 (pas testé dans SP2 mais dans Access 2000 de base il marche pas)
J'ai testé ta solution, car ça ne me derangeait pas que les ' soit à la fin.
Mais le résultat ne va pas du tout en fait
J'ai maintenant un tri par nombre de caractère dans le mot en fait c'est à dire j'ai tous les Nom en deux lettre de A à Z puis tous les noms en trois lettre de A à Z ect ...
antidotesfr
Messages postés12Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention28 septembre 2005 28 sept. 2005 à 10:23
Malheureusement il m'est impossible de refaire le tri dans le code.
Comme je l'ai dit au début il s'agit d'un vieille application et la table en question (20000 lignes) est entièrement chargé au démarrage de l'application. Cela met + de 2 Minutes pour ouvrir l'application, je ne peux donc pas me permettre de ralonger encore ce temps d'ouverture
C'est un casse-tête chinois ce truc j'ai mal au crâne lol, j'ai épuré tout un tas de forum pour essayer de trouver une solution
Si tu as le message d'erreur dans Acces directement c'est que tu n'as pas de SP :p J'ai eu le même problème que toi au début j'ai passé le SP3 et Access execute parfaitement la requête now.