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 :

Récupération des données de Excel vers une Base [WD15]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Récupération des données de Excel vers une Base
    Bonjour,

    Etant nouveau sur windev je bloque sur un problème qui apparemment ne semble pas compliqué. En effet j'ai une base de donnée que j'aimerai mettre à jour en récupérant les données à partir d'un fichier excel. Ces données sont dans un premier affichées sur une table mémoire formattée à l'identique de ma feuille excel. La récupération de se passe bien l'injection dans mon fichier aussi, mais à l'affichage de mon fichier dans une table reliée au fichier seule les colonnes (il y en a deux) de type date (JJ/MM/AAAA HH:MM:SS) récupère mal les données, j'ai l'impression que JJ récupère une partie de l'année (je ne sais pas si je suis clair). J'ai essayé de jouer avec les formats (format affiché et format renvoyé) mais rien n'y fait, je bloque vraiment. Voila à quoi ressemble à peu prêt 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
    SI OuiNon("Voulez-vous réellement supprimer les données actuelles et les remplacer par celles de l'importation ?") ALORS
    	HLitPremier(MONFICHIER,IDFICHIER)
    	TANTQUE PAS HEnDehors(MONFICHIER)
    		HSupprime(MONFICHIER)
    		HLitSuivant(MONFICHIER,IDFICHIER)
    	FIN
     
    	Info("Suppression effectuée.....")
    FIN
     
    // importataion des données...
     
     
    POUR i = 1 _A_ TableOccurrence(MATABLE)
     
    	TableSelectPlus(MATABLE, i)
    	MONFICHIER.RUBRIQUE1 = MATABLE.Colonne1
    	MONFICHIER.RUBRIQUE2=MATABLE.Colonne2 etc...
     
    HAjoute(MONFICHIER)
     
    FIN
    Comment faire pour récupérer la bonne donnée ? Merci d'avance pour votre réponse.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Bonjour,

    D'abord, est-ce que les dates sont affichées correctement dans ta table mémoire ?

    Ensuite, au niveau de ton code, tu peux un tantinet simplifier...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    POUR toute ligne de MATABLE
     
    MONFICHIER.RUBRIQUE1 = Colonne1[MATABLE]
    MONFICHIER.RUBRIQUE2 = Colonne2[MATABLE] etc...
     
    HAjoute(MONFICHIER)
     
    FIN

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse rapide. Oui au niveau de ma table mémoire les sont bien formattées. J'essaie cela et te tiens informé.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Citation Envoyé par Therion Voir le message
    Merci pour ta réponse rapide. Oui au niveau de ma table mémoire les sont bien formattées. J'essaie cela et te tiens informé.
    Si les dates sont correctes dans ta table mémoire, il faut que tu vérifies deux choses.

    1) le format d'enregistrement de ta colonne
    2) le format attendu par ton fichier

  5. #5
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Bonjour, t'en qu'on parle d'optimiser le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HLitPremier(MONFICHIER,IDFICHIER)
    	TANTQUE PAS HEnDehors(MONFICHIER)
    		HSupprime(MONFICHIER)
    		HLitSuivant(MONFICHIER,IDFICHIER)
    	FIN
    Peut très bien être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HSupprimeTout(MONFICHIER)
    «Un problème bien défini est un problème à moitié résolu.»

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Louis Griffont Voir le message
    Si les dates sont correctes dans ta table mémoire, il faut que tu vérifies deux choses.

    1) le format d'enregistrement de ta colonne
    2) le format attendu par ton fichier
    Merci pour ta réponse,

    La table mémoire qui reçoit les données importées avant enregistrement vers le fichier a ce masque :

    Masque de saisie : AAAA/JJ/MM HH:MM:SS
    Valeur retournée : AAAAMMJJHHMMSS

    Les mêmes format sont sur la rubrique fichier

    La table fichier qui sert a afficher les données a le même format. Le problème reste le même.

    Merci encore

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Je vais optimiser, merci

  8. #8
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    Tu dis que ta table est une table liée au fichier.
    Est-ce que tu as regardé avec wdmap la valeur de tes 2 colonnes afin de savoir si dans ta base de données ces colonnes sont vraiment correctes.
    Si elles sont correctes alors ce n'est que l'affichage table qui pose problème.
    Gancau

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    J'ai effectivement regardé avec Wdmap, dans la valeur du champ la partie JJ/MM/AAAA est correcte mais il n'y a que la Partie HH:MM:SS qui récupère et affiche apparement des zéro. ça donne donc par exemple 09/04/2010 00:00:00 et ceci sur tous les enregistrements. Je pige plus grand chose.

    Merci pour ta réponse

  10. #10
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Therion,
    J'aime bien travailler et concevoir avec des exemples concrets...
    par exemple dans WDmap tu as 09/04/2010 00:00:00 pour le 9 avril 2010.
    Est-ce que l'heure a une importance ou bien est-ce que seul le jour t'intéresse ?

    Que voudrais-tu afficher dans ta table comme format (par rapport à cet exemple) ?
    Gancau

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    Dans WDmap j'ai bien 09/04/2010 00:00:00 pour le 9 avril 2010. Justement l'heure à une importance, sinon je ne me serais pas pris autant la tête, je ne me serais arrêté à ce niveau. Je voudrai afficher dans ma table la date et l'heure exacte, par exemple 09/04/2010 14:22:33

    Merci encore

  12. #12
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Je prends le train en marche. Si je comprends bien, vous avez un champs qui prend en compte la date et l'heure en simultané. Je crois comprendre que dans la table qui reçoit les données, il y a deux colonnes, une pour les dates, et une pour les heures. Et en finalité, il faut concaténer les deux champs pour n'en faire qu'un dans la base de données selon le format JJ/MM/AAAA HH:MM:SS:CC (n'oubliez pas les centièmes sinon ca part en 'cacahuète').
    Se pourrait-il que ce soit à ce niveau que le bas blesse? Autre piste selon ce que j'ai compris, si deux colonnes existent dans la table qui réceptionne les données, pourquoi ne pas garder la scission des deux champs? Sauf à connaitre une importance non précisée....
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  13. #13
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Merci pour ta réponse. Malheureusement une seule colonne gère la date et l'heure, d'ou mon problème. Je joins une image afin que tu puisse voir.

    Fraternellement
    Images attachées Images attachées  

  14. #14
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Apparement, la colonne qui receptionne ne prend pas en compte toutes les données. Il m'importerait de savoir sur la source est bonne ouisque tableau excel il y a...
    C'est important pour la suite, si tu peux me faire voir la structure du tableau excel, je pourrais peut-etre avoir une idée qui te permettrait de réaliser ce que tu veux faire, mais là, un peu a court...

    Comme je n'aime pas rester sur un echec, aurais-tu penser à transformer ton champs excel en format numerique, afin de le recuperer dans le tableau windev et faire un numeriqueversdate et un numeriqueversheure pour voir si cela changerait la donne??? (en deux colonne afin d'isoler le probleme????
    C'est juste une idée comme cela, en passant....
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  15. #15
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    RE-bonjour,

    Voila ce que ça donne au niveau du fichier Excel d'origine à partir duquel je récupère les données (image jointe), dit moi si ça te permet de voir un peu plus clair.

    N.B Numeriqueversdate et Numeriqueversheure semblent ne pas etre reconnu par l'aide windev 15, à moin que j'aie mal cherché

    Cdt,
    Images attachées Images attachées  

  16. #16
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Je m'en suis finalement sortie avec une méthode pas très académique, avec ce code :

    <MONFICHIER>.Date_reception= ChaîneVersDate(xlsDonnée(nIdfic,i,4),"JJ/MM/AAAA") + Milieu(xlsDonnée(nIdfic,i,4),12,2) + Milieu(xlsDonnée(nIdfic,i,4),15,2) + Milieu(xlsDonnée(nIdfic,i,4),18,2)

    Merci encore pour toute votre aide

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

Discussions similaires

  1. importation des fichiers excel vers une base de donnés
    Par salmia22 dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 24/08/2013, 16h30
  2. exporter des données de excel vers une table paradox7
    Par dpsb_informatique dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/02/2013, 15h30
  3. Exporter des données de Excel vers une BDD access
    Par dounia.er dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 28/08/2012, 13h50
  4. [Toutes versions] Comment charger des données d'Excel vers une autre application
    Par orafin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2009, 21h20
  5. Réponses: 1
    Dernier message: 08/01/2008, 14h20

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