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

WinDev Discussion :

[WD12] comparaisons de données entre fichier et champ table


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut [WD12] comparaisons de données entre fichier et champ table
    bonjour à tous!

    j'aimerais comparer les données de ma table aux données de mon fichier et savoir si elles sont égales ou non, afin de les modifier si elles sont égales ou d'en ajouter si elles sont différentes.

    est ce que quelqu'un saurait comment comparer les données d'un champ table aux données déjà enregistrées dans un fichier?

    merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Tout ceci est un peu vague

    Je suppose qu'il s'agit d'une table mémoire ?
    Si elle contient les données d'un fichier, pourquoi n'utilises-tu pas une table fichier ?


    Merci de préciser la version Windev dans le titre du premier message.
    Règles pour poster un message.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut explications en plus
    j'utilise pas de table fichier car c'est une table que je remplie manuellement et que j'ajoute ensuite à mon fichier.
    Mes données sont dans un champ table(tabtps1) dans une 1ère fenêtre(fen_affich), je les récupère dans une 2è table(tabtps2) 2è fenêtre(fen_saisie) pour les modifier, car sur fen_saisie j'ai pleins d'autres infos à modifier qui se trouvent pas sur fen_affich.
    Je voulais au fait comparer les données déjà saisies à celles que je modifie ou que j'ajoute dans tabtps2.
    Mais j'ai vu que c'était pas possible parce que les données de tabtps2 je peux pas savoir à quel moment je modifie tel colonne et pas une autre, et/ou si j'ajoute une ligne en plus.
    donc je peux pas faire de comparaison entre mes données modifiées ou ajoutées.
    fen_saisie je l'affiche pour nouveau temps ou modification des temps.

    voilà, je sais pas si j'ai été assez claire.
    je cherche une autre façon de faire, si vous voyez merci de me le dire.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Si les données sont destinées à un fichier, la meilleure façon de procéder est de les gérer directement via une table fichier (ou une fiche de saisie liée)
    Tout ce qui est saisi ou modifié dans la table sera automatiquement répercuté dans le fichier.

    Si ce n'est pas possible, il faut comparer chaque ligne modifiée avec les informations enregistrées dans la fiche correspondante et les modifier si nécessaire.

    Je n'ai pas tous les éléments, mais ta façon de procéder me semble curieuse ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    j'ai regarder dans l'aide et j'ai trouvé ceci:
    récupération d'une ligne ou d'une cellule:
    pour cellule d'une ligne spécifique: <valuer>=<nomColonne>[<indice]>
    pour ligne spécifique:<Valeur>=<Nomtable>[<Indice>]

    j'ai donc écrit le code suivant pour récupérer la ligne que je sélectionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sLigneEnCours est une chaîne=TABLE_temps[TableSelect(TABLE_temps)]
    Info(sLigneEnCours)
    ça m'affiche bien les données de la ligne sélectionnée:
    19 52 1 1 1 1 1

    J'aimerais maintenant pouvoir récupérer le 1er élément qui se trouve être "19", j'ai donc écrit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Info("idtps ligne en cours",sLigneEnCours[[1]])
    ça m'affiche "1" je sais pas pourquoi?ni d'où il sort ce "1".

    Je veux pouvoir comparer les données de mon fichier aux données de la ligne en sélectionnée.
    est ce qu'il serait possible de récupérer les éléments de sLigneEncours pour les comparer à mon fichier?
    je ne sais pas si en procédant comme ça je vais arriver à quelque chose?

    code de comparaison:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI LigneTempsMission.IDLigneTempsMission<>sLigneEnCours[[1]] ALORS
    Info("id différents")
    FIN

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Ta syntaxe de [[ ]] est mauvaise
    ([[1]] = premier caractère de la chaîne or tu dois en récupérer deux)

    Tu devrais utiliser le séparateur " " (espace) pour extraire tes sous-chaînes.
    avec PositionOccurrence() par exemple

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    merci pour la réponse, maintenant je comprends mieux pourquoi j'avais 1 à chaque fois. J'ai aussi regardé les autres questions notamment celle la "[WD10]récupérer une partie d'une chaine de caractères sous windev", c'est pas la même version mais ce sont les mêmes fonctions..
    voilà 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
    SI PAS OuiNon(Non, "modifier la ligne ?") ALORS RETOUR
     
    SI PAS HLitRecherchePremier(Temps, Temps.IDTemps, TABLE_temps.COL_idtps) ALORS
    	Erreur(HErreurInfo())
    	RETOUR	
    FIN
     
    SI HTrouve() ALORS 
    	// modifier l'élément dans le fichier
    	sLigneEnCours est une chaîne=TABLE_temps[TableSelect(TABLE_temps)]	
    	SI Temps.IDTemps=sLigneEnCours[[1 A 2]] ALORS
    	HModifie(Temps)
    	Info("données modifiées")
    	FIN
    FIN
    TableAffiche(FEN_affich.TABLE_tpscol,taRéExecuteRequete)
    il récupère bien les deux 1er caractères qu'il compare à l'idTps de mon fichier,puis modifie les données.
    voilà merci.

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

Discussions similaires

  1. [XL-2003] Comparaison des données entre plusieurs colonnes
    Par floctc dans le forum Excel
    Réponses: 6
    Dernier message: 08/12/2009, 20h56
  2. Récupération de données entre fichiers Excel
    Par SlySylvain dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/01/2009, 13h35
  3. Réponses: 4
    Dernier message: 04/06/2008, 13h12
  4. [MySQL] Récupération de données entre fichiers et base de données
    Par PascR dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/12/2007, 10h44
  5. Comparaison de données entre deux arrays
    Par sironimo dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 20/04/2006, 17h44

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