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 :

Impossible d'importer des données issues d'un fichier excel ou sql [WD25]


Sujet :

WinDev

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut Impossible d'importer des données issues d'un fichier excel ou sql
    Bonjour,
    j'ai créé un logiciel avec des opérations basiques :ajout suppression, modification et consultation .

    Mon projet est lié à une base mysql.
    Dans l'une de mes parties (de consultatation ), j'ai créé une table afin d'afficher la liste des interventions, ma base mysql comporte quelques enregistrements (5/6).


    Pièce jointe 632823


    L'un de mes champs est un champ date, au format date time :
    Pièce jointe 632826

    et voici comment il se présente quand je consulte la liste des enregistrements :
    Pièce jointe 632827

    Sur l'ancien interface, j'ai fais un export des demandes exstantes, au format excel, dans lequel j'ai les données suivantes :
    Pièce jointe 632828.

    Afin de "migrer" mes données du fichier excel, vers la base myssql, j'ai procédé de plusieurs façon:
    1- j'ai créé un fichier csv, j'ai tenter de l'importer dans mysql, via phpmyadmin, mais j'avais plein d'erreur , il me disait parfois : nombre de colonne invalide dans les données CSV à la ligne 1.
    pourtant j'ai contrôler le nombre de colonne , tout es ok ;

    J'ai essayé le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Insert into intervention 
    (date_debut,heure_debut,demandeur,service,lieu,support,domaine,description,commentaire,statut_support,num_demande,num_demande2,intervsite,stt_site,qualite_inter,Date_fin,heure_fin,duree_inter,commentaire_echange,idrefpersonn)
     
    values (to_date(17/10/2022,'yyyy-mm-dd hh:mm:ss 00:00:00'),'08:41:00',"dupondbernard","compta","lille","gestionnaire","Informatique","description ","commentaire","Résolu à distance","","","-","",5,to_date(17/10/2022,'yyyy-mm-dd hh:mm:ss'),09:08:00,"NR",43)
    car j'ai l'intention de créer un fichier par publipostage, via un word (enfin bref ) mais mon script ne marche pas.

    COmment puis-je faire pour importer mes données du csv via mysql pour les retrouver dans windev ?
    merci beaucoup

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pourquoi ne pas utiliser HImporteXLS ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut
    Bonjour,
    désolé du retour tardif, j'etais un peu débordé et fatigué ces temps ci.
    Je ne connais pas cette méthode, grâce à vos conseils, je me suis créé une petite bibliotheque sur windev avec le liens des sites.

    Finalement j'ai opté pour une approche manuel, j'ai créé une petite usine à gaz pour remplir ma table mysql :
    j'ai pris mon fichier excel d'origine , j'ai pris un fichier word et j'ai créé une requete "insert into ..... values (...):

    Nom : exemple insert.JPG
Affichages : 169
Taille : 110,0 Ko

    ensuite j'ai créé un fichier sql, sachant que j'avais environ de base 200 enregistrements ( ce quui me faisait environ 200 bloc insert) , j'ai tenté importer le fichier sql, pour faire d'une pierre deux coup, mais il me mettait une erreur, alors j'ai fait une selection de 4 ou 5 bloc insert et à chaque fois dans phpmyadmin j'allais dans sql et je collais les requetes et là tout s'est bien passé.
    Pour le reste des enregistrements, j'ai testé mon programme en les saisissant manuellement , tout s'est bien passé, pour le moment.

    MErci beaucoup.

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par android59 Voir le message
    1- j'ai créé un fichier csv, j'ai tenter de l'importer dans mysql, via phpmyadmin, mais j'avais plein d'erreur , il me disait parfois : nombre de colonne invalide dans les données CSV à la ligne 1.
    pourtant j'ai contrôler le nombre de colonne , tout es ok ;
    Je rebondis juste la dessus:
    tu as des champs appelés description et commentaire.
    Si ce sont des champs de type texte libre, Il suffit qu'il y ai des retour chariot ou des ; pour que lorsque tu exportes cela en csv, cela ne fonctionne pas.

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Tu es l'exemple type de la personne qui refuse de lire la doc.
    Citation Envoyé par android59 Voir le message
    Je ne connais pas cette méthode
    Cette méthode (HImporteXLS je suppose) est décrite dans la doc. Mea culpa, il s'avère qu'elle n'est valable que pour des tables HF (CLASSIC et CS) mais il est facile de contourner le problème cf. infra
    Citation Envoyé par android59 Voir le message
    Finalement j'ai opté pour une approche manuel, j'ai créé une petite usine à gaz pour remplir ma table mysql :
    Il aurait été plus simple de parcourir le CSV non ? 200 copier/coller sans erreurs (connues), ça doit prendre un temps fou, j'imagine 20.000 interventions ...
    Tu aurais passé moins de temps à la lire la doc.

    Partons du CSV suivant :
    Lieu;Responsable;Colonne sup,;Date début inter;Heure début inter
    Lieu 1;Toto;Sup1;01/01/2023;08:00:00
    Lieu 2;Titi;Sup2;02/01/2023;09:00:00
    Lieu 3;Tata;Sup3;03/01/2023;10:00:00
    Ce CSV a été obtenu soit via EXCEL (Enregistrer sous) soit via la fonction suivante:
    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
    60
    61
    62
    63
    64
    65
    66
    67
     
    // Résumé : Converti la feuille en cours d'un classeur XL en Fichier CSV
    // Description des paramètres d'entrée/sortie de 'XLSVersCSV' :
    //
    // Syntaxe :
    //[ <Résultat> = ] XLSVersCSV (<saCheminClasseur> est chaîne, <saCheminCSV> est chaîne, <nNoErreur> est entier, <saDescErreur> est chaîne)
    //
    // Paramètres :
    //	saCheminClasseur (chaîne ANSI) : 
    //		saCheminClasseur (chaîne ANSI) : Chemin et nom du classeur XL
    //	saCheminCSV (chaîne ANSI) : 
    //		saCheminCSV (chaîne ANSI - valeur par défaut="") : 	Chemin et nom du CSV. Si ce paramètre est omis, c'est le chemin et le
    //															nom du classeur qui seront utilisés
    //		nNoErreur (entier - valeur par défaut=0) : N° de l'erreur
    //		saDescErreur (chaîne ANSI - valeur par défaut=0) : Description de l'erreur
    //	nNoErreur (entier) : <indiquez ici le rôle de nNoErreur>
    //	saDescErreur (chaîne ANSI) : <indiquez ici le rôle de saDescErreur>
    // Valeur de retour :
    // 	booléen : 	Vrai : RAS
    //				Faux : Une erreur est survenue
    //
    // Exemple :
    // SI PAS XLSVersCSV("C:\TEMP\Client.XLSX",saCSV,nErrNo,saErrMsg) ALORS
    //		ErreurConstruit("Une erreur est survenue dans la création de %1%2N° Erreur : %3%2Description%4",...
    // 						saCSV,CRLF,nErrNo,saErrMsg)
    //
    // Traitement automatique des erreurs :   exécuter le bloc de code CAS ERREUR
    //
    // Traitement automatique des exceptions :   exécuter le bloc de code CAS EXCEPTION:
    //
     
    FONCTION XLSVersCSV(LOCAL saCheminClasseur est chaîne,saCheminCSV est chaîne,nNoErreur est un entier,saDescErreur est chaîne) :booléen
    xlsMonClasseur est un objet Automation dynamique
     
    ToastAffiche("Conversion en cours")
    SI saCheminCSV="" ALORS
    	saCheminCSV=fConstruitChemin(fExtraitChemin(saCheminClasseur, fDisque + fRépertoire),...
    								fExtraitChemin(saCheminClasseur, fFichier),"CSV")
    FIN
     
    // Tentative de récupération de l'objet Excel en mémoire
    xlsMonClasseur = ObjetActif("Excel.Application")
    // Allocation d'un objet Excel si non-trouvé
    SI xlsMonClasseur=Null ALORS xlsMonClasseur=allouer un objet Automation "Excel.Application"
     
    xlsMonClasseur>>Visible=Faux // Excel n'apparait pas à l'écran
    xlsMonClasseur>>displayAlerts(Faux)
    // Ouverture du document
    xlsMonClasseur>>WorkBooks>>Open(saCheminClasseur)
     
    xlsMonClasseur>>ActiveWorkBook>>saveAs(saCheminCSV,6)
    xlsMonClasseur>>ActiveWorkBook>>Close(Faux) // Fermeture du document
    xlsMonClasseur>>Quit() // Fermeture d'Excel
     
    libérer xlsMonClasseur // Libération de l'objet Excel
     
    ToastAffiche("Conversion terminée")
    RENVOYER Vrai
     
    CAS ERREUR:
    	nNoErreur=ErreurInfo(errCode)
    	saDescErreur=ErreurInfo(errMessage)
    	RENVOYER Faux
    CAS EXCEPTION:
    	nNoErreur	= ExceptionInfo(errCode)
    	saDescErreur	= ExceptionInfo(errMessage)
    	RENVOYER Faux
    Il suffit alors de créer la fonction suivante :
    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
     
    // Résumé : Importe le contenu d'un fichier CSV dans la table intervention
    // Description des paramètres d'entrée/sortie de 'ImporteCSV' :
    //
    // Syntaxe :
    //ImporteCSV (<saCheminCSV> est chaîne [, <bAvecEntête> est booléen])
    //
    // Paramètres :
    //	saCheminCSV (chaîne ANSI) : Chemin du CSV à importer
    //	bAvecEntête (booléen - valeur par défaut=1) : Vrai si la première ligne est l'entête des colonnes
    // Valeur de retour :
    // 	Aucune
    //
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //// Traitement automatique des erreurs :   exécuter le bloc de code CAS ERREUR
    //
    // Traitement automatique des exceptions :   exécuter le bloc de code CAS EXCEPTION:
    //
     
    FONCTION ImporteCSV(saCheminCSV est chaîne,bAvecEntête est un booléen=Vrai) : booléen
    nHandle est un entier
    saLigne est une chaîne
     
    nHandle=fOuvre(saCheminCSV,foLecture)
     
    SI bAvecEntête ALORS
    	//On lit la ligne d'entête pour se placer sur la première ligne "utile"
    	fLitLigne(nHandle,CRLF)
    FIN
     
    saLigne=fLitLigne(nHandle,CRLF)
    TANTQUE saLigne<>EOT
    	Enregistrer(saLigne)
    	saLigne=fLitLigne(nHandle,CRLF)
    FIN
     
    RENVOYER Vrai
    CAS ERREUR:
    	dbgErreur("Doit être implémenté")
            RENVOYER Faux
    CAS EXCEPTION:
    	dbgErreur("Doit être implémenté")
            RENVOYER Faux
    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
    // Résumé : Enregistre une ligne du CSV dans la table Intervention
    // Description des paramètres d'entrée/sortie de 'Enregistrer' :
    //
    // Syntaxe :
    //[ <Résultat> = ] Enregistrer (<saLigne> est chaîne)
    //
    // Paramètres :
    //	saLigne (chaîne ANSI) : Données à enregistrer
    // Valeur de retour :
    // 	booléen : // 	Aucune
    // Traitement automatique des erreurs :   exécuter le bloc de code CAS ERREUR
    //
    // Traitement automatique des exceptions :   exécuter le bloc de code CAS EXCEPTION:
    //
     
    FONCTION Enregistrer(saLigne est chaîne):booléen
    Intervention.DateInter=ChaîneVersDate(ExtraitChaîne(saLigne,4,";"),maskDateSystème)
    Intervention.HeureInter=ChaîneVersHeure(ExtraitChaîne(saLigne,5,";"),maskHeureSystème)
    Intervention.RespInter=ExtraitChaîne(saLigne,2,";")
    Intervention.LieuInter=ExtraitChaîne(saLigne,1,";")
    HAjoute(Intervention)
    RENVOYER Vrai
     
    CAS ERREUR:
    	dbgErreur("Doit être implémenté")
    	RENVOYER Faux
    CAS EXCEPTION:
    	dbgErreur("Doit être implémenté")
    	RENVOYER Faux
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    saCheminXLS est une chaîne
    saCSV est une chaîne
    nErrno est un entier
    saErrmsg est chaîne
     
    saCheminXLS	= fSélecteur("", "", "Sélectionnez un classeur à convertir.....",...
    						 "Classeur excel" + TAB + "*.XLS;*.XLSX", "*.XLS;*.XLSX")
    SI XLSVersCSV(saCheminXLS,saCSV,nErrno,saErrmsg) ALORS
    	ImporteCSV(saCSV)
    SINON
    	ErreurConstruit("Une erreur est survenue dans la création de %1%2N° Erreur : %3%2Description%4",saCSV,CRLF,nErrno,saErrmsg)
    FIN
    D'un autre côté, on peut très bien d'abstraire de la conversion en CSV grâce à xlsDonnées.
    1-Le problème des ";" et CRLF est réglé
    2-Pas besoin d'avoir XL sur le poste
    3-Gestion plus simple du multi feuilles
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut
    bonjour,
    merci beaucoup à vous, après avoir peaufiner mon petit programme, il semble fonctionnel, d'après le tests que j'ai effectués.

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

Discussions similaires

  1. Importer des données à partir d'un fichier excel fermé
    Par yassinefeki dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/06/2019, 10h54
  2. Importer des données à partir d'un fichier excel fermé
    Par maniveaudelaye dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/05/2014, 10h36
  3. [XL-2007] Importer des données à partir d'un fichier excel
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/06/2011, 19h05
  4. importer des données d'un autre fichier excel
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/05/2008, 16h51
  5. Réponses: 3
    Dernier message: 15/05/2007, 09h28

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