IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Pb de syntaxe sql : Sélection SELECT FROM WHERE vide


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut Pb de syntaxe sql : Sélection SELECT FROM WHERE vide
    Bonjour, j'ai un problème de sql.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Function Quartil(strTable As String, strField As String, param As String, anne As String, rang As Integer) As Double
    
    Dim oDBS As DAO.Database
    Dim oRST As DAO.Recordset
    Dim blnEven As Boolean
    Dim vntMedian As Variant
    
    If rang = 1 Then rang = 25
    If rang = 3 Then rang = 75
    
      Set oDBS = CurrentDb()
      Set oRST = oDBS.OpenRecordset("SELECT * FROM " & strTable & " WHERE " & param & " = '" & CStr(anne) & "' ORDER BY " & strField)
      
      If oRST.EOF = False Then
         oRST.MoveLast
         blnEven = (oRST.RecordCount Mod 2 = 0)
         oRST.PercentPosition = rang
         vntMedian = oRST.Fields(strField)
         If blnEven Then
             oRST.MoveNext
             vntMedian = (vntMedian + oRST.Fields(strField)) / 2
         End If
      End If
      
      oRST.Close
      Set oRST = Nothing
      Set oDBS = Nothing
    
    End Function
    J'utilise ce code pour déterminer les quartiles en statistiques pour chaque année de 2002 à aujourd'hui.

    Problème : certaines années peuvent ne contenir aucune données pour certains produit. Donc la sélection peut être vide et donc j'ai une erreur. Comment compter le nombre de lignes de la sélection pour chaque année ?

    Merci pour votre aide.

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    bjr,

    - quelle erreur?
    - sur quelle ligne?

    sinon tu fais un MoveLast, puis un peu plus loin MoveNext
    tu ne peux pas aller plus loin que le dernier...

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Pourtant tu testes dèja si le recordset est vide ou plein

    If oRST.EOF = False Then
    L'erreur se produit sur quelle ligne ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    J'utilise cette fonction de la façon suivante :

    Année quartile
    N 23,25
    N-1 19,24
    N-2 22,75
    etc...

    dans une requête sélection avec regroupement des années.

    Mais pour certaines années : il peut n'y avoir aucune ligne ! voila le problème, donc j'ai une erreur : aucun enregistrement en cours.

    Erreur sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vntMedian = (vntMedian + oRST.Fields(strField)) / 2

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Citation Envoyé par Arkham46
    sinon tu fais un MoveLast, puis un peu plus loin MoveNext
    tu ne peux pas aller plus loin que le dernier...
    .......

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Je viens de remarquer un autre problème : pour une année je n'ai que 2 enregistrements. Donc pour le 3ème quartile j'ai également cette erreur.

  7. #7
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par Arkham46
    sinon tu fais un MoveLast, puis un peu plus loin MoveNext
    tu ne peux pas aller plus loin que le dernier...
    .......

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    salut,

    soit dans ta table en question, tu fais une requete de mise à jour, là ou ta table est vide tu mets zéro.
    soit dans ta clause where tu rajoute AND anne IS NOT NULL

    comme ça ta requete ne recupere pas les ligne vide!

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Merci pour votre aide, le problème est réglé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème syntaxe select from where sur base access
    Par IL-MAFIOSO dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/06/2012, 17h27
  2. Réponses: 1
    Dernier message: 04/07/2011, 21h35
  3. [COUNT] select ... from ... where count !
    Par tmcgrady dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2007, 17h29
  4. probleme avec SELECT..FROM..WHERE
    Par VBBBA dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 08/09/2006, 15h58
  5. [hibernate][spring]requete select from where IN
    Par whilecoyote dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/04/2006, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo