PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Doublon dans les données
Doublon dans les données
Débuté par Carlos_graph, 27 juil. 2017 18:34 - 10 réponses
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 27 juillet 2017 - 18:34
Salut à tous!
j'ai un soucis et j'ai besoin d'aide;
j'ai importé des données d'un fichier Excel pour remplir un tableau (TableImport) de 3 colonnes et plusieurs lignes sur ma fenêtre (Fen_TableImport)
Ensuite je veux stocker ces données dans la base de donnée hfsql c/s dans un fichier nomé <SECTION>
j'ai un bouton <Stockage> qui me permet de faire le traitement
quand je clique sur <Stockage> les enrégitrements passent mais il m'affiche ceci
__________________________________________________
Que s'est-il passé ?
Erreur renvoyée par le serveur <TGOCL3139RFV:4900> :
Des doublons ont été détectés pour la clé <Code_Section> sur le fichier <SECTION>.

Code erreur : 70010
Niveau : erreur non fatale
Code erreur WD55 : 10

Dump de l'erreur du module 'WDHFSRV64.DLL' (21.0.88.5).
Identifiant des informations détaillées (.err) : 70907
Informations supplémentaires :
EIT_TYPE_WDFILE : <0>
EIT_IDCODE : <-1>
EIT_LOGICALTABLENAME : <SECTION>
EIT_ITEMNAME : <Code_Section>
EIT_PATHFIC : <C:\ProgramData\PC SOFT\ServeurHFSQL TGOCL3139RFV\BDD\Nouvelle_Base\SECTION.fic>
EIT_PATHNDX : <C:\ProgramData\PC SOFT\ServeurHFSQL TGOCL3139RFV\BDD\Nouvelle_Base\SECTION.ndx>
EIT_SERVEURCS : <TGOCL3139RFV:4900>[code:wl]

voici mon code


[ i est un entier
SI TableImport..Vide = Vrai ALORS
Erreur("la table est vide")
SINON

// Choix de Stockage
SI OuiNon("Voulez-vous stockez les données?") = Oui ALORS

HLitRecherche(SECTION,Code_Section,Colonne1,hIdentique)

SI HTrouve(SECTION) =Vrai ALORS
Erreur(" Impossible d'éffectuer cette opération ,"," Ces données existent déjà dans la base. ")
RETOUR
SINON
Info("ça commence")
POUR i = 1 A TableOccurrence(TableImport)
//parcours total du tableau
//affectation
SECTION.Code_Section = TableImport.Colonne1[i]
SECTION.Nom_Section = TableImport.Colonne2[i]
SECTION.Descrip_Section = TableImport.Colonne3[i]
SITE_SECTION.Code_Section= TableImport.Colonne1[i]
HAjoute(SECTION)

FIN

FIN
Info("Stockage terminé!!!")
SINON

RETOUR

FIN

FIN
]
Aidez-moi Svp!!!!
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 27 juillet 2017 - 20:00
Bonjour
Es que SECTION.Code_Section est défini comme clef unique ? si oui (ce qui semble être le cas) alors vous devez avoir dans : TableImport.Colonne1 des valeurs identiques d’où l'erreur de doublon. avant d'ajouter vérifier si vous avez déjà la valeur dans votre fichier.
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 27 juillet 2017 - 20:33
Oui SECTION.Code_Section est défini comme clef unique
Merci bcp Philippe; je suis un peu éclairé j
je vais éssayer la vérification pour voir
:merci:
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 02 août 2017 - 17:22
Bonsoir les amis, et merci pour le sujet de doublon
j'ai des soucis avec ma base de donnée depuis que j'ai fait la restoration d'une version précédente et quand je fais des enrégistrement c'est l'erreur qui sort

Svp Quelqu'un en a une idée??


Erreur à la ligne 57 du traitement Clic sur BTN_Valider.
Erreur renvoyée par le serveur <TGOCL3139RFV:4900> :
La description du fichier logique <AGENT> stockée dans l'analyse est incompatible avec celle stockée dans le fichier physique <C:\ProgramData\PC SOFT\ServeurHFSQL TGOCL3139RFV\BDD\Nouvelle_Base\AGENT>. Impossible d'accéder au fichier.
La rubrique <Code_TYPE_AGENT> du fichier <AGENT> décrite dans l'analyse n'existe pas dans le fichier.

----- Informations techniques -----

Projet : pointage

Appel WL :
Traitement de 'Clic sur BTN_Valider' (FEN_Energ_Agent.BTN_Valider), ligne 57, thread 0

Que s'est-il passé ?
Erreur renvoyée par le serveur <TGOCL3139RFV:4900> :
La description du fichier logique <AGENT> stockée dans l'analyse est incompatible avec celle stockée dans le fichier physique <C:\ProgramData\PC SOFT\ServeurHFSQL TGOCL3139RFV\BDD\Nouvelle_Base\AGENT>. Impossible d'accéder au fichier.
La rubrique <Code_TYPE_AGENT> du fichier <AGENT> décrite dans l'analyse n'existe pas dans le fichier.

Code erreur : 70016
Niveau : erreur fatale
Code erreur WD55 : 16

Dump de l'erreur du module 'WDHFSRV64.DLL' (21.0.88.5).
Identifiant des informations détaillées (.err) : 72136
Informations de débogage :
IEWDHFSRV=32.10
Module=<WDHFSRV>
Version=<21.0.88.5>
Informations supplémentaires :
EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <18>
EIT_LOGICALTABLENAME : <AGENT>
EIT_PATHFIC : <C:\ProgramData\PC SOFT\ServeurHFSQL TGOCL3139RFV\BDD\Nouvelle_Base\AGENT>
EIT_SERVEURCS : <TGOCL3139RFV:4900>
EIT_PILEWL :
Clic sur BTN_Valider (FEN_Energ_Agent.BTN_Valider), ligne 57
EIT_DATEHEURE : 02/08/2017 15:13:15
Membre enregistré
190 messages
Popularité : +21 (23 votes)
Posté le 02 août 2017 - 19:59
Bonjour

Votre BDD n'est pas en phase avec votre analyse de votre application (dû à la restauration de votre ancienne BDD).
Une synchronisation de votre analyse mettra votre structure de votre BDD en ordre.

N'oubliez pas la sauvegarde avant.
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 02 août 2017 - 20:15
ok je vais faire la synchronisation
merci bcp Mr Nicolas
Posté le 03 août 2017 - 00:59
Tu as 2 options, et c'est uniquement toi qui peut savoir laquelle est la bonne.
Option 1 : tu modifies ton analyse, parce que c'est normal d'avoir des doublons. Et dans ce cas là, rien à changer dans le code... sauf truc que je n'aurais pas vu en survolant le code.
Option 2 : Tu gardes ton analyse telle quelle, parce que tu veux réellement empêcher l'import de doublon.
Et dans ce cas, tu vas devoir modifier ton code. Ce que tu vas pouvoir faire très facilement, c'est, pour une clé donnée, importer le 1er enregistrement, et rejeter les suivants :

Pour cela, après chaque instruction hajoute(), il faut ajouter une portion de code qui va ressembler à cela :

SI HErreurDoublon() ALORS
// ne rien faire n ou bien simplement afficher un Warning ... ou comptabiliser les doublons, comme tu veux.
ndoublons ++
FIN

Je te dis cela de mémoire, regarde l'aide de la fonction herreurDoublon() pour vérifier.
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 04 août 2017 - 13:47
bjr Merci pour tous vos sugestions ça m'a beaucoup aider!!!

j'ai besoin de votre aide encore!
j'ai deux champs combo sur un formulaire ;
le premier combo reçoit les paramètres de la requête tandis que le deuxieme affiche le resultat

le problème c'est que quand je sélectionne la société de l'agent qui est paramètre rien ne s'affiche
dans le site de l'agent.





Où et quand doit-je exécuter la requête et comment je procède?
j'ai tout fait mais ça n'affiche rien!!!
Posté le 05 août 2017 - 13:46
Avance par étape.
Dans ta fenêtre, tu ajoutes un bouton. Dans ce bouton, tu appelles juste une fonction.
Version 1 : Cette fonction va afficher le contenu de la combo société.
Version 2 : Cette fonction va rechercher le site de l'agent , et l'afficher via une fonction info()
Version 3 : Cette fonction va rechercher le site de l'agent, et va modifier le contenu de la 2ème combo.
Version 4 : La fonction en question, tu fais en sorte qu'elle s'exécute quand le contenu de la combo 1 est modifié. Et tu peux donc supprimer le bouton.
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 07 août 2017 - 10:35
Merci joel !
ça marche maintenant !
Membre enregistré
11 messages
Popularité : +1 (1 vote)
Posté le 17 août 2017 - 12:28
bonjour ! mes frères j'ai besoin de votre aide.
Voici la structure de la table STOCK



Je veux à l'aide des informations stockées dans STOCK je vais remplir la table PRESENCE qui se présente comme suit




La colonne <ETAT> prend "1" quand l'agent vient au boulot et "0" quand il quitte le boulot
mon problème c'est que je veux enrégistrer pour un agent Son heure d'arrivée,date d'arrivée, heure de départ, date de départ en me basant sur chaque deux lignes de la table STOCK

je n'arrive pas à prendre les informations "deux lignes de <STOCK> pour construire une seule ligne de <PRESENCE> "
Aidez- moi svp