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
La requête me renvoit bien ce que je veux.
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
Or, dès que je l'insère dans mon programme C++ Builder j'ai une erreur
Je ne comprend pas d'où peut venir le problème :
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.
L'erreur est marquée sur la ligne qui teste le Nombre d'enregistrement
Voici mon code
Merci d'avance pour votre aide
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(); }
Partager