Trie "Sort"

Résolu
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013 - 24 mars 2008 à 16:03
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013 - 29 mars 2008 à 15:34
Bonjour

j'ai un champ declare en texte 6 caracteres je veux faire le trie sur ce champ
mais je trie que le 5eme et 6eme caractere du genre sort = texte[5,6]
MERCI

12 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
25 mars 2008 à 12:35
Une requete select ne peut etre executé c'est un update, insert ou delete
qui peuvent etre executé

il faut utiliser openrecordset en DAO
ou
rs.open sql, .... en ADO (plus recommandé)
pour des exemples de code il y en a plein sur le site vbfrance
3
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
29 mars 2008 à 15:31
Salut 

Voila la solution est ca marche bien 
 
dd.Execute "INSERT INTO rapp " & _
"SELECT releve.dos, " & _
"       releve.mois, " & _
"       releve.lop, " & _
"       releve.ch, " & _
"       releve.dop, " & _
"       releve.montant, " & _
"       releve.sens, " & _
"       releve.P " & _
"  FROM releve " & _
" WHERE releve" & _
"ORDER BY ((dop),2),mid((dop),3,4),left((dop),2)"
A+
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
24 mars 2008 à 18:52
Salut

Tu es  sur quelle base de données

Sql = select * from matable orderby substring(len(monchamps) -2), len(monchamps))

une formule de ce style devrait fonctionner
en utilsant des traitement de chaine de caracteres qui recupere les 2 derniers caracteres

nb, attention ne doit pas fonctionner si un seul caractere.
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
25 mars 2008 à 09:17
Salut je voudrais bien en savoir plus sur le VB6
0

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

Posez votre question
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
25 mars 2008 à 09:19
bonjour

je travaille avec base donnees access mais ca n'a pas marche

a+ merci
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
25 mars 2008 à 09:36
Remplace le substring par mid pour extraire ta chaine de caractère
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
25 mars 2008 à 10:29
salut

 je suis sur vb6 et table access
 voila la syntaxe mais ca n'a pas marche

bdd.Execute "select * from releve order by mid(len(dop) -2), len(dop)"

a + merci
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
25 mars 2008 à 10:58
Il faut LIRE & METTRE le message d'erreur sur le forum

Nombre d'argument incompatible c'est plus parlant que ca marche pas

select * from releve order by mid(dop,len(dop) -2), len(dop)

NB ca ne fonctionne pas si len < 2 a toi de voir et de trouver comment resoudre ce cas, si besoin est

en recherchant tu aurais vu que mid ne respecte pas sa signature (c'est la meme que vb6 il me semble)
et tu aurais corrigé ton problème tout seul.

bon coding
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
25 mars 2008 à 11:43
Salut
 le message d'erreur est le suivant
Erreur d'execution 3065
can't execute select a query
a+
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
29 mars 2008 à 09:05
Salut

je reviens car la raquete ne me donne pas le resultat ni d'erreur
qui peux me la courige :

 bdd.Execute "INSERT INTO tent " & _
"SELECT releve.dos, " & _
"       releve.mois, " & _
"       releve.lop, " & _
"       releve.ch, " & _
"       releve.dop, " & _
"       releve.montant, " & _
"       releve.sens, " & _
"       releve.P " & _
"  FROM releve " & _
" order by left(len(dop),2),mid(len(dop),3,4),right(len(dop),2)"

a+
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
29 mars 2008 à 13:46
Salut

Ta clause order by semble incorrect

debug la avec un  select

"SELECT left(len(dop),2),mid(len(dop),3,4),right(len(dop),2)" & _
"  FROM releve ";

Et tu veras
pour info
left(chaine,nbcar)
idem pour rigth
et mid cf post plus haut

ici tu fais
left(len(dop),2)
si dop = "toto" --> left (4,2) --> 0
Je ne pense pas que c'est ce que tu veux.
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
29 mars 2008 à 15:34
Salut

maitenant je voudrai savoir comment cette synataxe fonctionne

Adodc1.Recordset.Sort = (Right((dop), 2))
Adodc1.Recordset.Sort = (Mid((dop), 3, 4))
Adodc1.Recordset.Sort = (Left((dop), 2))

le programme s'execute mais le trie ne marche pas.

A+


 
0
Rejoignez-nous