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 :

Débutant en windev , problème mettre à jour une table en modifiant un fichier excel [WD16]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 37
    Points
    37
    Par défaut Débutant en windev , problème mettre à jour une table en modifiant un fichier excel
    bonjour à tous , merci d'avance votre aide,

    voici mes codes pour mettre un table depuis un fichier excel

    par exemple un client, ses anciennes cordonnées sont

    C451 JEANNOT Paule 0186492110 paul49@orange.fr 01/07/2013

    je modifie les cordonnées dans le fichier excel, et je le reimporte(le même fichier), à la fin, mon but est dans ma base on peut voir
    ses nouvelles cordonnées sont (on a modifié le numéro téléphone)

    C451 JEANNOT Paule 0186492111 paul49@orange.fr 01/07/2013

    voici mes codes , mais quand je l'exécute , l'erreur apparaît suivant :

    Projet : Suivi_achat_XLS_1_0

    Appel WL :
    Traitement de 'Clic sur B_valider_importation' (FEN_tousclients.B_valider_importation), ligne 33, thread 0
    Fonction 'HModifie', syntaxe 1

    Que s'est-il passé ?
    Fichier <0186492110> inconnu dans l'analyse <D:\Projet Stage XLS\Suivi_achat_XLS_1.0\BDD_Suivi_achat_XLS_1_0.wdd>, ou requête ou vue non initialisée.
    Si il s'agit d'une requête, l'exécution de cette requête a peut-être échoué.

    Code erreur : 70018
    Niveau : erreur fatale (EL_FATAL)
    Code erreur WD55 : 18

    ça m'a bloqué depuis 2 jours , j'ai vraiment besoin de votre aide, merci d'avance

    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
    52
    53
    54
    55
    56
    57
    58
    59
     
        sSel est une chaîne
        cheminexcel est une chaîne
        sSel = fSélecteur("", "", "Sélectionnez un fichier.....", "Tous fichiers (*.*)"+TAB+"*.*", "*.*", fselOuvre+fselExiste)
        SI sSel<>"" ALORS
           cheminexcel = sSel
        FIN
     
     
        //SAI_Saisie1 EST UN CHAMP de selection pour le chemin du fichier xls
        idfic est un entier
        i est un entier
        resnblignes est un entier
        idfic = xlsOuvre(sSel)
        resnblignes = xlsNbLigne(idfic)
     
        SI idfic<>-1 ALORS
     
           SI OuiNon("Voulez-vous importer les données ?") ALORS
              Sablier(Vrai)
     
              POUR i=1 A resnblignes
                 Clients.ref_client=xlsDonnée(idfic,i,1)
                 Clients.nom = xlsDonnée(idfic,i,2)
                  Clients.prenom=xlsDonnée(idfic,i,3)
                 Clients.tele_fix_cl=xlsDonnée(idfic,i,4)
                  Clients.tele_portable_cl= xlsDonnée(idfic,i,5)
                 Clients.email_cl=xlsDonnée(idfic,i,6)
                 Clients.date_maj= ChaîneVersDate(xlsDonnée(idfic,i,7))
                 HLitRecherche(Clients, ref_client, xlsDonnée(idfic,i,1))
                 SI HTrouve(Clients)=Vrai ALORS
                    HLitRecherche(Clients,tele_fix_cl,xlsDonnée(idfic,i,4))
                    SI HTrouve(Clients)=Faux ALORS
                       HModifie(Clients.tele_fix_cl)
                    SINON HLitRecherche(Clients,tele_portable_cl,xlsDonnée(idfic,i,5))
                       SI HTrouve(Clients) = Faux ALORS
                          HModifie(Clients.tele_portable_cl)
                       SINON HLitRecherche(Clients,email_cl,xlsDonnée(idfic,i,6))
                          SI HTrouve(Clients)=Faux ALORS
                             HModifie(Clients.email_cl)
                          FIN
                 FIN
                 FIN
                   SINON
                 HAjoute(Clients)
              Info("importation terminer.")
     
        FIN         
        SINON
           Erreur("Le fichier excel est ouvert!"+RC+"Ou lien non valide.")
           RETOUR
        FIN
     
     
     
        Sablier(Faux)
        xlsFerme(idfic)
        EcranVersFichier()
        TableAffiche(Table_tous_Clients,taCourantPremier)

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut!

    Ton problème se situe ici :

    Quel est le fichier 0186492110 ?

    Ou est le code de ce bouton qui donne l'erreur?

    De plus je trouve un peu incohérent le code ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SI HTrouve(Clients)=Faux ALORS
                       HModifie(Clients.tele_fix_cl)
    Tu fais une recherche et ne trouve rien!
    Tu demandes de modifier l'enregistrement "RIEN" du fichier ...

    Bon DEV

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 553
    Points : 1 194
    Points
    1 194
    Par défaut
    Bonjour,

    L'aide est pourtant clair sur l'utilisation de HModifie() :
    http://doc.pcsoft.fr/fr-FR/?3044042&...ion&q=hmodifie

    La fonction Hmodifie() attend quoi comme paramètre ? --> Un fichier HF
    Vous lui passez quoi comme paramètre ? --> Une Rubrique HF...

    Bonne journée.

    PS : en survolant rapipedement votre code, il ne sera semblerait-il non fonctionnel, vous passez votre temps à bouger le curseur du fichier avec des recherches, donc les valeurs des rubriques sont modifiés en conséquence à chaque appel.... Prenez le temps de faire le guide d'auto-formation ou de regarder les exemples windev.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Je n'ai rien à répondre, juste pour rappeler à Ry_Yo qu'il est débutant WinDev et que (je le sais car ça ne remonte pas à très loin pour moi aussi) les termes rubrique et fichier sont plutôt spécifique à WinDev et pas forcement évident au départ pour quelqu'un non initié.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 553
    Points : 1 194
    Points
    1 194
    Par défaut
    Bonjour,

    Je m'excuse pour ma formulation un peu brute, mais le ton n'y était pas je vous rassure.

    C'est pour cela que j'ai donné en plus du lien de l'aide (qui ne l'aurait pas aidé plus que ça en tant que débutant), une piste de réflexion avec ma précision sur fichier et rubrique.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 37
    Points
    37
    Par défaut merci à tous
    j'écoute vos conseils,
    je vais essayer de modifier mes codes
    merci beaucoup
    merci à tous

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 37
    Points
    37
    Par défaut encore un problème après le corrige
    rebonjour à tous, à l'aide des vôtres

    j'ai changer mes codes, mais maintenant le problème est , à chaque importation, il y a toujours une ligne vide de trop , est-ce que vous pouvez me vérifier les codes, et me dire où sont les erreurs merci beaucoup!
    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
    52
    53
     
    sSel est une chaîne
    cheminexcel est une chaîne
    sSel = fSélecteur("", "", "Sélectionnez un fichier.....", "Tous fichiers (*.*)"+TAB+"*.*", "*.*", fselOuvre+fselExiste)
    SI sSel<>"" ALORS
    	cheminexcel = sSel
    FIN
     
     
    //SAI_Saisie1 EST UN CHAMP de selection pour le chemin du fichier xls
    idfic est un entier
    i est un entier
    resnblignes est un entier
    idfic = xlsOuvre(sSel)
    resnblignes = xlsNbLigne(idfic)
    RefClient    est une chaîne
    bNew est un booléen  
     
    SI idfic<>-1 ALORS
     
    	SI OuiNon("Voulez-vous importer les données ?") ALORS
    		Sablier(Vrai)
     
    		POUR i = 1 A resnblignes
    			bNew = Faux
    			RefClient = xlsDonnée(idfic,i,1)
    			HLitRecherchePremier(Clients, ref_client,RefClient)
    			SI PAS HTrouve(Clients) ALORS //C'est un nouveau client
    				HRAZ(Clients)
    				Clients.ref_client=RefClient
    				bNew = Vrai
    			FIN
    			Clients.nom       = xlsDonnée(idfic,i,2)
    			Clients.prenom      = xlsDonnée(idfic,i,3)
    			Clients.tele_fix_cl      = xlsDonnée(idfic,i,4)
    			Clients.tele_portable_cl   = xlsDonnée(idfic,i,5)
    			Clients.email_cl      = xlsDonnée(idfic,i,6)
    			Clients.date_maj      = ChaîneVersDate(xlsDonnée(idfic,i,7))
    			SI bNew ALORS //Si nouveau, on ajoute
    				HAjoute(Clients)
    			SINON // Sinon on modifie l'existant
    				HModifie(Clients)
    			FIN 
    		FIN
    	FIN     
    SINON
    	Erreur("Le fichier excel est ouvert!"+RC+"Ou lien non valide.")
    	RETOUR
    FIN
    Sablier(Faux)
    xlsFerme(idfic)
    EcranVersFichier()
    TableAffiche(Table_tous_Clients,taDébut)

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 553
    Points : 1 194
    Points
    1 194
    Par défaut
    Plusieurs piste possible... dans un premier temps :
    Votre fichier excel possède t'il des lignes vides ?

    Car la fonction xlsNbLigne() vous renvoie le nombre de ligne entête incluse (mais non vide).

    Donc si des lignes sont vides, votre parcours va les considérer comme "valide".

    Ex. la ligne 4 est vide:
    votre boucle va faire le test
    Est-ce que la ref_client pour i = 4 existe --> Non --> création d'un nouveau client (vide).

    --> vous pouvez donc rajouter un contrôle de validité de la ref_client :
    SI sansespace(ref_client) <> "" ALORS...

    ensuite comme effet de bord possible de votre code :
    Votre fichier excel possède t'il une entête ? (Nom / Prénom / etc...)

    Car votre boucle commence à partir de la 1ère ligne d'excel. Donc ajout d'un client reprenant les infos de l'entête.

    Enfin je ne comprends pas l'utilisation de : EcranVersFichier()
    Cette fonction permet de mettre à jour les rubriques par rapport à ce qu'il y a l'écran. Or là le fichier est mis à jour par programmation et non via l'IHM.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 37
    Points
    37
    Par défaut merci pour votre réponse
    je vais vérifier mon fichier excel , si c'est pas le cas , je vais essayer d'ajouter les code , merci beaucoup ! Ry_Yo

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Bonsoir,

    Pour information, et de mémoire, une ligne est considérée vide si aucune valeur n'a été saisie dedans, JAMAIS. Si une valeur à été saisie, puis effacée, la ligne sera tout de même prise en compte pour le calcul du nombre de ligne, même si à l'écran elle est vide.
    Il faut faire clic droit sur le numéro de ligne et supprimer la ligne dans Excel pour qu'elle ne soit plus comptée ...

    Le plus durable est de toujours tester au moins le contenu d'une colonne comme suggéré par Ry_Yo

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 37
    Points
    37
    Par défaut merci à tous
    le problème de la ligne vide est résolu, merci beaucoup

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/06/2011, 10h48
  2. Problème pour mettre à jour une table SQL
    Par Bes74 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/03/2009, 20h21
  3. [MySQL] Mettre à jour une table mysql avec un fichier xml ou csv
    Par pasbonte dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/02/2009, 08h56
  4. Prb mettre à jour une table via un fichier excel
    Par antier dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 10h31
  5. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08

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