Bonjour, voila donc je développe un projet en vue de mon BTS et j'aurai besoin d'aide concernant la gestion des doublons.

J'ai déjà regardé un peu de partout sur internet et oui il y'a énormément de choses mais je ne sais pas si cela correspond à ma problématique.

Mon projet fonctionne avec un WebService, il reçoit en paramètre d'une procédure un tableau d'objets (des enregistrements converti en tableau par des classes) et puis il se tâche d'ajouter ces enregistrements sur une base HFSQL C/S.

Seulement, ce-dernier ajoute les enregistrements sur la base même s'ils sont déjà présents sur la base. J'aimerai donc qu'il ajoute à la base seulement les enregistrements qui ne sont pas déjà dessus.

J'ai essayé pas mal de choses avec hlitrecherche, htrouve,... mais sans succès et c'est pourquoi je m'en remet à vous.



Voici le code de mon WebService:

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
Procedure P_ResultatCourseSoloOpen(OT_Resultats_Course_SoloOpen est un CT_Resultats_Courses_SoloOpen):entier
 
nRetour est un entier
nRetour=1
 
//ouverture du fichier de recopie
HOuvre(Resultats_Courses_SoloOpen)
 
HExécuteRequête(REQ_DetailTourCourseOpen,hRequêteDéfaut)
 
// permet de gérer par programmation l'erreur de doublon
HSurErreur(Resultats_Courses_SoloOpen ,hErrDoublon,"")
 
 
POUR TOUT clElementTAbResultat DE OT_Resultats_Course_SoloOpen.tab_Resultats_Courses_SoloOpen 
 
MémoireVersFichier(clElementTAbResultat,Resultats_Courses_SoloOpen)
 
 
   SI HAjoute(Resultats_Courses_SoloOpen)=Faux ALORS 
           nRetour=111// Si doublon alors faire une mise à jour
 
       SIHErreurDoublon() =Vrai ALORS// pas utile si uniquement ce traitement d'erreur
                  HLitRecherche(Resultats_Courses_SoloOpen,IDCourse_SoloOpen,REQ_DetailTourCourseOpen.IDCourse_SoloOpen)// recherche du numéro d'enregistrement 
                  MémoireVersFichier(clElementTAbResultat,Resultats_Courses_SoloOpen)// remettre en mémoire l'enregistrement à copier
                  HModifie(Resultats_Courses_SoloOpen)
                  nRetour=222// modifier l'enregistrement
        FIN
   FIN
FIN
 
//Libèrer les ressources utilisées par la requête
HFerme(REQ_DetailTourCourseOpen)
 
RENVOYER nRetour


Auriez-vous une solution ?

Merci d'avance pour votre aide.