Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2011, 19h26   #1
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Par défaut Tri d'un état par une requête impossible

Salut,

J'ai un état qui a une requête comme source, le code sql est modifier suivant un tri choisi par choix par l'utilisateur, nom ou date.

Mais lorsque j'édite l'état, le tri ne s'effectue pas alors que si j'exécute la requête, le tri est bien opéré.

Je ne vois pas d'où cela peu venir.

Merci pour votre aide
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 19h40   #2
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
bonjour
Tu le fais dans l'etat lui-meme avec le bouton de regroupement(Trier et Grouper). tu choisit le champ et l'ordre de tri.
@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 21h19   #3
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Salut,

Oui, je connais, mais les users n'ont pas accès à ça, tout est avec forms et questions.

Donc il y a un choix par l'utilisateur et suivant ça, la requête est réécrite puis l'état est ouvert.

Voila
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 13h39   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour electrosat03,


Citation:
Mais lorsque j'édite l'état, le tri ne s'effectue pas alors que si j'exécute la requête, le tri est bien opéré.
C'est que ton état n'utilise pas la source que tu crois.

Citation:
le code sql est modifié suivant un tri choisi par choix par l'utilisateur, nom ou date.
Peux-tu montrer ton code où tu modifies la source.

Il faut ouvrir l'état en mode design, modifier le source, et seulement ouvrir l'état en mode normal.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 09h28   #5
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Salut,

Voici le code sur le form qui ouvre l'état

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Private Sub Cmd_DétailPresta_Click()
    On Error GoTo Err_Cmd_DétailPresta_Click
 
    Dim Msg As String
    Dim stDocName As String
    Dim message, Title, Default, MyValue
    Dim GStrWhere As String
    Dim ChangeSQL As String
    Dim qdf As QueryDef
 
    stDocName = "E_stat_presta_cli"
 
    If CurrentProject.AllReports(stDocName).IsLoaded Then
        DoCmd.Close acReport, (stDocName), acSaveNo
    End If
 
    Beep
 
    GoSub message
 
    'DoCmd.Close acForm, "F_filtré"
 
 
    If CurrentProject.AllReports(stDocName).IsLoaded Then
        DoCmd.Close acReport, (stDocName), acSaveNo
    End If
 
    If MyValue = 1 Then 'Tri par Date
        ChangeSQL = "SELECT T_saisie_presta.employé, T_Générale.refcli, T_saisie_presta.NomRaisonSociale, T_saisie_presta.DatePresta, T_saisie_presta.TempsPresta, T_saisie_presta.LibelléPresta, T_saisie_presta.Remarques, T_Employés.taux, [tempspresta]*[taux] AS production, T_saisie_presta.Num" & _
                    " FROM T_Générale INNER JOIN (T_Employés INNER JOIN T_saisie_presta ON T_Employés.employé = T_saisie_presta.employé) ON T_Générale.NomRaisonSociale = T_saisie_presta.NomRaisonSociale" & _
                    " WHERE (((T_saisie_presta.NomRaisonSociale) Like [formulaires]![F_client_ld]![LD_NomRaisonSociale]) AND ((T_saisie_presta.Num)=0))" & _
                    " ORDER BY T_saisie_presta.DatePresta;"
 
        Set qdf = CurrentDb.QueryDefs("R_production")
        qdf.SQL = ChangeSQL
        Set qdf = Nothing
        DoCmd.OpenReport stDocName, acViewPreview, , GStrWhere ', , "Clients avant 3000"
    End If
 
    If MyValue = 2 Then 'Tri par Nom
        ChangeSQL = "SELECT T_saisie_presta.employé, T_Générale.refcli, T_saisie_presta.NomRaisonSociale, T_saisie_presta.DatePresta, T_saisie_presta.TempsPresta, T_saisie_presta.LibelléPresta, T_saisie_presta.Remarques, T_Employés.taux, [tempspresta]*[taux] AS production, T_saisie_presta.Num" & _
                    " FROM T_Générale INNER JOIN (T_Employés INNER JOIN T_saisie_presta ON T_Employés.employé = T_saisie_presta.employé) ON T_Générale.NomRaisonSociale = T_saisie_presta.NomRaisonSociale" & _
                    " WHERE (((T_saisie_presta.NomRaisonSociale) Like [formulaires]![F_client_ld]![LD_NomRaisonSociale]) AND ((T_saisie_presta.Num)=0))" & _
                    " ORDER BY T_saisie_presta.employé, T_saisie_presta.DatePresta;"
 
        Set qdf = CurrentDb.QueryDefs("R_production")
        qdf.SQL = ChangeSQL
        Set qdf = Nothing
        DoCmd.OpenReport stDocName, acViewPreview
    End If
 
    Exit Sub
 
message:
    'Définit le message.
    message = "Cette édition présente la liste 'Presta client' sur base du tri des " & vbCrLf & _
                vbCrLf & "1 - Dates" & _
                vbCrLf & "2 - Noms employés" & _
                vbCrLf & vbCrLf & vbTab & "Entrez une valeur comprise entre 1 et 2"
    Title = "Tri des prestations du client"    ' Définit le titre.
    Default = "1"    ' Définition la valeur par défaut.
    ' Affiche le message, le titre et la valeur par défaut.
    MyValue = InputBox(message, Title, Default)
 
    If MyValue = "" Then Exit Sub
 
    If MyValue < 1 Or MyValue > 2 Then
        message = MsgBox("Entrez 1 ou 2", vbCritical + vbOKCancel, "Erreur")
        If message = vbCancel Then Exit Sub
        GoSub message
    End If
 
    Return
La source de l'état est bien la requête modifiée par le code.

Merci
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 09h48   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Essaie comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
If MyValue = 1 Then 'Tri par Date
        ChangeSQL = "SELECT T_saisie_presta.employé, T_Générale.refcli, T_saisie_presta.NomRaisonSociale, T_saisie_presta.DatePresta, T_saisie_presta.TempsPresta, T_saisie_presta.LibelléPresta, T_saisie_presta.Remarques, T_Employés.taux, [tempspresta]*[taux] AS production, T_saisie_presta.Num" & _
                    " FROM T_Générale INNER JOIN (T_Employés INNER JOIN T_saisie_presta ON T_Employés.employé = T_saisie_presta.employé) ON T_Générale.NomRaisonSociale = T_saisie_presta.NomRaisonSociale" & _
                    " WHERE (((T_saisie_presta.NomRaisonSociale) Like [formulaires]![F_client_ld]![LD_NomRaisonSociale]) AND ((T_saisie_presta.Num)=0))" & _
                    " ORDER BY T_saisie_presta.DatePresta;"
 
        DoCmd.OpenReport stDocName, acViewDesign
        Reports!stDocName.RecordSource = ChangeSQL
        DoCmd.OpenReport stDocName, acViewPreview
    End If
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 13h43   #7
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
bonjour
Essaie le code de ClaudeLELOUP; mais à ce code j"ajouterais ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
If MyValue = 1 Then 'Tri par Date
        ChangeSQL = "SELECT T_saisie_presta.employé, T_Générale.refcli, T_saisie_presta.NomRaisonSociale, T_saisie_presta.DatePresta, T_saisie_presta.TempsPresta, T_saisie_presta.LibelléPresta, T_saisie_presta.Remarques, T_Employés.taux, [tempspresta]*[taux] AS production, T_saisie_presta.Num" & _
                    " FROM T_Générale INNER JOIN (T_Employés INNER JOIN T_saisie_presta ON T_Employés.employé = T_saisie_presta.employé) ON T_Générale.NomRaisonSociale = T_saisie_presta.NomRaisonSociale" & _
                    " WHERE (((T_saisie_presta.NomRaisonSociale) Like [formulaires]![F_client_ld]![LD_NomRaisonSociale]) AND ((T_saisie_presta.Num)=0))" & _
                    " ORDER BY T_saisie_presta.DatePresta;"
 
        DoCmd.OpenReport stDocName, acViewDesign
        Reports!stDocName.RecordSource = ChangeSQL
'=======================================================
        Reports!stDocName.OrderByOn = True
        Reports!stDocName.OrderBy "DatePresta"
        Reports!stDocName.FilterOn = True
'=======================================================
        DoCmd.OpenReport stDocName, acViewPreview
End If
si DatePresta n'est pas un champ de regroupement.

@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/01/2011, 13h40   #8
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Salut,

Cela ne marche pas.

Alors que la requête fonctionne correctement, le tri est bon.

A+
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 14h52   #9
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

C'est que tu as défini des tris et/ou des regroupements qui prennent le pas sur ceux de ta requête. Si non, j'ai testé avant de te répondre.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 19h15   #10
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Salut,

Non, l'état à la requête comme source que je réécris par le code en fonction du choix de l'utilisateur.

Il n'y a rien comme tri ou regroupement dans l'état.

A+
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 19h23   #11
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Peux-tu poster une BDD compatible Access2000 ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 19h40   #12
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Non, je ne peux pas.

De plus, la BDD est trop volumineuse et confidentielle, désolé.

J'ai déjà pourtant fait des états trié et réécrites par code sans problème.

Je ne vois pas ce qui cloche.

Merci pour ton aide
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 10h42   #13
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : novembre 2011
Messages : 1
Points : 1
Points : 1
Bonjour,
Je sais que ce post date un peu mais j'ai rencontré le même problème et trouvé la réponse.
Pour ma part, le tri ne se faisait pas dans l'état car j'avais un champ pour compter le nombre d'enregistrement de type "=Compte([<Champ>])".
En le supprimant, le tri s'effectue comme dans la requête.
En espérant que cela sera utile...
Just_Jon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h30.


 
 
 
 
Partenaires

Hébergement Web