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 Mobile Discussion :

Demande algo pour fichier .csv vers HFSQL


Sujet :

Windev Mobile

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Demande algo pour fichier .csv vers HFSQL
    Bonjour, je doit faire une programme permettant d'importer le contenu d'un fichier .csv vers la table locale HFSQL de l'application que je suis entrain de créer mais les fonctiones permettant de traiter des fichiers exel ne sont pas compatibles sur les mobiles... Il faut croire que windev n'est pas si multiplateforme que ca ;D

    Voici ce que j'ai déjà fait:
    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
     
    filePath est une chaîne = SAI_Fichier
     
    sContenuFichier est une chaîne
    sLigne est une chaîne
     
    // Chargement en mémoire du contenu du fichier
    sContenuFichier = fChargeTexte(filePath)
     
    POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR RC
     
    	i est une chaîne
    	maListe est un tableau de chaînes
     
    	POUR TOUT CHAÎNE i DE sLigne SEPAREE PAR ";"
    		// Traitement de la ligne
    			Ajoute(maListe, i)
    	FIN	
     
    	requete est une chaîne =  "INSERT INTO EXPRESS_invent (codebarre, libelle,  stockcompte) VALUES ('"+maListe[1]+"', '"+maListe[2]+"',  '"+maListe[3]+"')"
    	HExécuteRequêteSQL(hRequêteDéfaut, requete)
     
    FIN
    Voici le contenu du fichier:

    libelle;codebarre;stockcompte;;;;;;;;;;;;;;;;;;;;;
    libelle1;1234567891234;98;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;
    ** et encore beaucoup de lignes avec des points virgule


    Ce qui donne graphiquement:
    Nom : Capture.PNG
Affichages : 747
Taille : 2,1 Ko

    Le problème étant que je n'arrive pas à entrer correctement et dans le bon ordre les valeurs dans la base de donnée !

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    je dirais déjà qu'il faut intégrer les valeurs dans le bon ordre dans ta requête
    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
    filePath est une chaîne = SAI_Fichier
     
    sContenuFichier est une chaîne
    sLigne est une chaîne
     
    // Chargement en mémoire du contenu du fichier
    sContenuFichier = fChargeTexte(filePath)
     
    POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR RC
     
    	i est une chaîne
    	maListe est un tableau de chaînes
     
    	POUR TOUT CHAÎNE i DE sLigne SEPAREE PAR ";"
    		// Traitement de la ligne
    			Ajoute(maListe, i)
    	FIN	
     
    	requete est une chaîne =  "INSERT INTO EXPRESS_invent (libelle, codebarre, stockcompte) VALUES ('"+maListe[1]+"', '"+maListe[2]+"',  '"+maListe[3]+"')"
    	HExécuteRequêteSQL(hRequêteDéfaut, requete)
     
    FIN
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour, merci de l'info je n'avais pas remarqué mais le problème est que je ne maîtrise pas trop ce langage et que je doit créer un algorithme pour extraire le contenu d'un fichier .csv dans la table EXPRESS_invent de ma BDD HFSQL

    Pour le moment je n'arrive même pas à correctement incrémenter la liste.
    J'aurais pensé faire trois listes (une pour le codebarre, libelle et une pour le stockcompte) puis en suite faire une boucle qui parcours les trois listes et ajoute les valeurs dans la BDD

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Je suppose que la fonction ExtraitChaine fonctionne dans WM, et donc je ferais ça :
    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
     
    filePath est une chaîne = SAI_Fichier
     
    sContenuFichier est une chaîne
    sLigne est une chaîne
    requete est une chaîne
    i est une chaîne
    sch1, sch2, sch3 est une chaine 
     
    // Chargement en mémoire du contenu du fichier
    sContenuFichier = fChargeTexte(filePath)
     
    POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR RC
             sch1 = "'"+extraitchaine(sligne, 1, ";") + "'"
    	 sch2 = extraitchaine(sligne, 2, ";")
             sch3 = extraitchaine(sligne, 3, ";")
     
    	requete =  "INSERT INTO EXPRESS_invent (libelle, codebarre, stockcompte) VALUES ("+sch1+", "+ sch2+",  "+ sch3+")"
    	SI PAS  HExécuteRequêteSQL(hRequêteDéfaut, requete) ALORS
                erreur ( " Plantage", herreurinfo() )
            FIN
    FIN
    Bien entendu, après le HexecuteRequeteSQL(), je test si l'INSERT s'est bien passé, c'est obligatoire dans tout programme.

    Si on veut rester très proche du code précédent , je ferais :
    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
    filePath est une chaîne = SAI_Fichier
     
    sContenuFichier est une chaîne
    sLigne est une chaîne
    requete est une chaîne 
     
    i est une chaîne
    maListe est un tableau de chaînes   
     
    // Chargement en mémoire du contenu du fichier
    sContenuFichier = fChargeTexte(filePath)
     
    POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR RC
     
           tableausupprimetout(maListe)
     
    	POUR TOUT CHAÎNE i DE sLigne SEPAREE PAR ";"
    		// Traitement de la ligne
    			Ajoute(maListe, i)
    	FIN	
     
    	requete   =  "INSERT INTO EXPRESS_invent (codebarre, libelle,  stockcompte) VALUES ('"+maListe[1]+"', '"+maListe[2]+"',  '"+maListe[3]+"')"
    	HExécuteRequêteSQL(hRequêteDéfaut, requete)
     
    FIN
    Je me méfie toujours des variables qui sont déclarées dans une boucle. Je préfère 100 fois les déclarer au début de la procédure. Dans le code proposé, je n'ai jamais expérimenté, et donc je pense que le tableau maListe n'est pas réinitialisé à chaque passage.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Le programme fonctionne déjà mieux, les libelle, codebarre et quantité sont ajoutés dans le bon ordre mais le problème est que le programme ajoute également le libellé, codebarre et quantité en titre,
    Ceci n'étant pas le plus gros problème, le vrai problème c'est que tous les autres ;;;;; vides s'ajoutent quand même à la BDD ce qui ajoute pleins de 0 après:

    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
     
    filePath est une chaîne = SAI_Fichier
     
    sContenuFichier est une chaîne
    sLigne est une chaîne
    requete est une chaîne
    sch1, sch2, sch3 est une chaîne 
     
    // Chargement en mémoire du contenu du fichier
    sContenuFichier = fChargeTexte(filePath)
     
    POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR RC
    	sch1 = "'"+ExtraitChaîne(sLigne, 1, ";") + "'"
    	sch2 = ExtraitChaîne(sLigne, 2, ";")
    	sch3 = ExtraitChaîne(sLigne, 3, ";")
     
    	requete =  "INSERT INTO EXPRESS_invent (libelle, codebarre, stockcompte) VALUES ("+sch1+", '"+ sch2+"',  '"+ sch3+"')"
    	SI PAS  HExécuteRequêteSQL(hRequêteDéfaut, requete) ALORS
    		Erreur ("Plantage", HErreurInfo() )
    	FIN
    FIN
    Nom : Capture.PNG
Affichages : 808
Taille : 11,7 Ko

    Je vais essayer d'ajouter une condition dans la boucle pour faire le tri,

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Inverse
    Bonjour, j'ai réussi à ajouter correctement les conditions:
    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
     
    filePath est une chaîne = "/mnt/sdcard2/gestcom/"+SAI_Fichier
     
    sContenuFichier est une chaîne
    sLigne est une chaîne
    requete est une chaîne
    sch1, sch2, sch3 est une chaîne 
     
    // Chargement en mémoire du contenu du fichier
    sContenuFichier = fChargeTexte(filePath)
    IF Taille(sContenuFichier) <= 1 ALORS
    	Info("Le fichier n'existe pas !")
    SINON
    	SAI_Fichier..Valeur = ""
    FIN
     
    POUR TOUT CHAÎNE sLigne DE sContenuFichier SEPAREE PAR RC
    	sch1 = "'"+ExtraitChaîne(sLigne, 1, ";") + "'"
    	sch2 = ExtraitChaîne(sLigne, 2, ";")
    	sch3 = ExtraitChaîne(sLigne, 3, ";")
     
    	SI PAS sch3 = 0 ALORS
    		SI Taille(sch2) = 13 ALORS
    			SI PAS Taille(sch1) < 1 OU PAS sch1 = "libelle" ALORS
     
    				requete =  "INSERT INTO EXPRESS_invent (libelle, codebarre, stockcompte) VALUES ("+sch1+", '"+ sch2+"',  '"+ sch3+"')"
    				SI PAS  HExécuteRequêteSQL(hRequêteDéfaut, requete) ALORS
    					Erreur ("Plantage", HErreurInfo() )
    				FIN
     
    			FIN
    		FIN
    	FIN
     
    FIN

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

Discussions similaires

  1. [CSV] Fichier CSV vers phpMyAdmin
    Par DrOOMMgba dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2007, 14h09
  2. [regex] Epuration StackTrace pour fichier CSV
    Par BizuR dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2006, 11h57
  3. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  4. [Conseil] Import de fichier CSV vers MySQL
    Par ShinJava dans le forum JDBC
    Réponses: 6
    Dernier message: 15/03/2005, 19h14
  5. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 15h18

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