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

C++Builder Discussion :

SQLite Requetes sur les dates [Base de donnée]


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut SQLite Requetes sur les dates
    Bonjour à tous

    Je vous explique mon problème

    Je possède une table

    Article (idArticle int (Clé primaire), DateArticle varchar, TitreArticle varchar, LienArticle varchar, MediaArticle int (clé étrangère sur l'id d'une table Media)).

    J'aimerais sur cette table extraire les couples dinstincts de Mois et d'année

    J'ai donc dans SQLiteManager exécuter cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT strftime('%m', DateArticle) AS Mois, strftime('%Y', DateArticle) AS Annee FROM Article
    La requête me renvoit bien ce que je veux.

    Or, dès que je l'insère dans mon programme C++ Builder j'ai une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Le projet à déclenché la classe d'exception EDatabaseError avec le message [0x0005] Opération non supportée.
    Je ne comprend pas d'où peut venir le problème :
    L'erreur est marquée sur la ligne qui teste le Nombre d'enregistrement

    Voici mon 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    	// on crée la liste des Mois et Annees
    	TList *ListeMoisAnnees = new TList();
     
    	// On va sélectionner les Mois et Années des Articles
    	String Requete = "SELECT DISTINCT strftime('%m', DateArticle) AS Mois, strftime('%Y', DateArticle) AS Annee";
    	Requete += " FROM Article";
     
    	ShowMessage(Requete);
     
    	// on va récupérer la liste des Media
    	SQLQuery->SQL->Text = Requete;
     
    	// On ouvre la requete
    	SQLQuery->Open();
     
    	// S'il y a au moins un enregistrement
    	if(SQLQuery->RecordCount > 0)
    	{
    		// On se positionne sur le premier enregistrement
    		SQLQuery->First();
     
    		do
    		{
    			// on crée le MoisAnnee
    			TMoisEtAnnee *MoisAnnee = new TMoisEtAnnee();
     
    			// On récupère le Champ Mois
    			TStringField *FieldMois = (TStringField *)(SQLQuery->FieldByName("Mois"));
     
    			// On mémorise le champ
    			MoisAnnee->Mois = FieldMois->Value.ToInt();
     
    			// on récupère le Champ Annee
    			TStringField *FieldAnnee = (TStringField *)(SQLQuery->FieldByName("Annee"));
     
    			// On mémorise l'année
    			MoisAnnee->Annee = FieldAnnee->Value.ToInt();
     
    			// On ajoute le MoisAnnee dans la liste des MoisAnnée
    			ListeMoisAnnees->Add(MoisAnnee);
     
    			// On passe au suivant
    			SQLQuery->Next();
    		}
    		// Tant que l'on a pas traité tous les enregistrements
    		while(!SQLQuery->Eof);
     
    		// on ferme la requete
    		SQLQuery->Close();
    	}
    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    J'ai trouvé le problème et franchement c'est pas cool, c'est le DISTINCT qui n'est pas reconnu.

    Du coup j'ai du gérer le Distinct moi même dans mon programme en balayant les lignes que je récupère de la base de données.

    C'est pas top mais cela fonctionne maintenant

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

Discussions similaires

  1. Requete HQL sur les dates
    Par flomomo dans le forum Hibernate
    Réponses: 1
    Dernier message: 03/08/2014, 18h21
  2. [AC-2003] Requete sur les dates
    Par jmde dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/02/2013, 00h41
  3. [AC-2003] Requete qui renvoi 0 sur les dates ou il n'y a pas d'enregistrement
    Par jubourbon dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/10/2011, 17h39
  4. Requete sur les dates
    Par innova dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/02/2007, 14h18

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