Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.

Réponse
 
Outils de la discussion
Vieux 02/09/2008, 09h16   #1 (permalink)
Membre Confirmé
 
Date d'inscription: novembre 2003
Messages: 275
Par défaut Problème avec Order by

Bonjour,

Voilà je cherche simplement a ce que ma requete soit classé par ordre croissant dans mon tableau "lstResults" mais je bloque dans l'ajout de ORDER BY à la fin de ma requete car il me mets une erreur 3075, de quoi ça peut venir.

Merci d'avance

Jim

Code :
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
 
SQL = "SELECT AffaireEtendu.ID_Affaire_Auto, AffaireEtendu.NumDevis, AffaireEtendu.Nom, AffaireEtendu.Initiale, AffaireEtendu.Statut, AffaireEtendu.SourceAf,  AffaireEtendu.Désignation, AffaireEtendu.Etape FROM AffaireEtendu WHERE (((AffaireEtendu.Statut)='Qualification' Or (AffaireEtendu.Statut)='En cours')) "
If Not Me.chkClient Then
    SQL = SQL & "And (((AffaireEtendu!Nom) = '" & Me.cmbRechClient & "') ORDER BY AffaireEtendu.Nom"
End If
If Not Me.chkCommercial Then
    SQL = SQL & "And ((AffaireEtendu!Initiale) = '" & Me.cmbRechCommercial & "') ORDER BY AffaireEtendu.Nom"
End If
If Not Me.chkEtape Then
    SQL = SQL & "And ((AffaireEtendu!Etape) like '*" & Me.cmbRechEtape & "*') ORDER BY AffaireEtendu.Nom"
End If
If Not Me.chkSource Then
    SQL = SQL & "And ((AffaireEtendu!SourceAf) = '" & Me.cmbRechSource & "') ORDER BY AffaireEtendu.Nom"
End If
If Not Me.chkDesignation Then
    SQL = SQL & "And ((AffaireEtendu!Désignation) like '*" & Me.txtRechDesignation & "*') ORDER BY AffaireEtendu.Nom"
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & ";"
Me.lblStats.Caption = DCount("*", "AffaireEtendu", SQLWhere) & " / " & DCount("*", "AffaireEtendu")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub
Myogtha est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 09h22   #2 (permalink)
Membre Expert
 
Date d'inscription: mai 2005
Localisation: IDF - 94
Messages: 1 084
Par défaut

Insère la ligne
Code :
debug.print Sql
avant d'exécuter ta requete (et meme dans des points intermédiaires.
Tu verras exactement ce qui cloche dans ta requête, dans la fenêtre Execution

__________________
Merci de ne pas m'envoyer de message privé pour des pb techniques
micniv est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 09h36   #3 (permalink)
Invité régulier
 
Date d'inscription: août 2008
Messages: 16
Par défaut

moi, dans mon formulaire,

je fais un clic droit sur la liste
puis propriété
et dans source j'ajoute order by, à la fin de ma reqête
turbo_cro est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 10h07   #4 (permalink)
Membre chevronné
 
Date d'inscription: janvier 2006
Messages: 600
Par défaut

Comme Micniv.
A mon avis, il y a plusieurs "Order by" dans ta requête.
Kloun est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 10h08   #5 (permalink)
Invité de passage
 
Date d'inscription: septembre 2008
Messages: 9
Par défaut

Salut,
Le problème, c'est que tu construis ta requête petit à petit, donc tu luio ajoute des morçeaux de String à chaque fois.
Mais en faisant cela, tu ajoutes à chaque fois le ORDER BY AffaireEtendu.Nom, alors qu'il ne faut l'ajouter qu'à la toute fin de l'instruction SQl, juste avant le ";".

Tu n'as donc qu'à enlever les 4 premiers ORDER BY AffaireEtendu.Nom.

@+
basshero816 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 10h35   #6 (permalink)
Membre actif
 
Date d'inscription: avril 2006
Localisation: Toulouse
Âge: 23
Messages: 182
Par défaut

basshero816 a raison.

Le order by ne se fait qu'à la fin d'une requête SQL. Même si tu peux garantir qu'il ne passe toujours que dans un seul de tes 4 checks, le Order by doit se mettre après la clause Where.
Taoueret est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 16h21   #7 (permalink)
Membre éprouvé
 
Avatar de stigma
 
Date d'inscription: octobre 2003
Localisation: Picardie
Âge: 58
Messages: 433
Envoyer un message via MSN à stigma
Par défaut

Tu peux avoir plusieurs champs dans un ORDER
Code :
ORDER BY Nom, Prenom,.....
Et bien sûr à la fin de la requête.
__________________
Access 2003 DAO OU ADO + VBA + VBA + VBA
stigma est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/09/2008, 17h45   #8 (permalink)
Membre Confirmé
 
Date d'inscription: novembre 2003
Messages: 275
Par défaut

Merci à tous,

Vous m'avez mis sur la voie, j'ai modifié :

Code :
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & ";"
 
par

Code :
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & "ORDER BY AffaireEtendu.Nom;"
 
Merci encore
Myogtha est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ACCESSF.A.Q AccessF.A.Q VBATutorielsSourcesOutilsLivresAccess TVAccess 2007

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide