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 :

Recherche d'un CSV + affichage [WM20]


Sujet :

Windev Mobile

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien hardware
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien hardware
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Recherche d'un CSV + affichage
    Bonjour, étant parfaitement débutant en WinDev, je suis venu demander conseil. N'ayant pas trouvé mon problème ailleurs (peut-être mal cherché?) j'ai décidé d'ouvrir un topic.

    Je suis en train de développer un petit soft pour des terminaux d'inventaire (ici Datalogic Memor X3) qui permet de faire de la simple interrogation produit. Voici l'interface avant d'expliquer :
    Nom : ean.PNG
Affichages : 549
Taille : 23,7 Ko

    On scanne le produit dans le champ de saisie "code barre", on valide et les cases en dessous se remplissent avec les informations affichées. Au début j'ai fait ça avec une base de données intégrée en FIC, et cela fonctionnait plutôt correctement. Cela dit, les utilisateurs finaux ne seront pas des informaticiens et n'auront pas WinDev à disposition donc s'ils veulent changer de bdd ou mettre à jour, cela peut être compliqué... J'ai donc vu qu'on pouvait lire un fichier CSV en WinDev donc je me suis dit pourquoi pas, ça serait simple à mettre à jour du coup, il suffirait que la personne remplace le csv dans le dossier pour mettre à jour et c'est mon objectif.
    J'ai donc commencé à écrire un peu de code mais un problème s'est posé apparemment puisque voilà le résultat :

    Nom : bug.PNG
Affichages : 458
Taille : 28,6 Ko

    Et cela que le code barre dans le champ de saisie soit bon ou non. Voici le 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    SI SAI_EAN = "" ALORS RepriseSaisie(SAI_EAN)
    NomCheminFichier est une chaîne
    IDFichier est un entier
    LigneLue est une chaîne
    //
    //// Sélection du nom et du chemin du fichier
    NomCheminFichier ="Interro_bdd.csv"
    //// Ouverture du fichier
    IDFichier = fOuvre(NomCheminFichier)
    //// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
    SI IDFichier = -1 ALORS
    	Erreur(ErreurInfo(errMessage))
    SINON
    	BOUCLE
    		// Lecture de la première ligne du fichier
    		LigneLue = fLitLigne(IDFichier)
    		SI ErreurDétectée ALORS
    			Erreur(ErreurInfo())
    			SORTIR
    		FIN
    		// Fin de fichier ?
    		SI LigneLue = EOT ALORS 			SORTIR
    		FIN
    		// Traitement de la ligne lue
    		// Ici ajout à la fin d'un champ de saisie
    	FIN
    	LIB_Nom =ExtraitChaîne(LigneLue, 2, ";")
    	LIB_AchatHT = ExtraitChaîne(LigneLue, 3, ";")+" €"//px achat
    	LIB_PublicHT = ExtraitChaîne(LigneLue, 4, ";")+" €"//px vente
    	LIB_PublicTTC = ExtraitChaîne(LigneLue, 5, ";")+" €"//px vente ttc
     
    	// Fermeture du fichier
    	fFerme(IDFichier)
     
    RepriseSaisie(SAI_EAN)
    Voilà la tête de mon CSV : (généré avec EXCEL)
    Nom : bdd.PNG
Affichages : 519
Taille : 35,4 Ko

    Je me suis inspiré du code proposé sur la doc, cela dit je ne sais pas vraiment encore comment marche la fonction fLitLigne du coup j'avais essayé de faire une recherche de SAI_EAN (qui est le champ de saisie de code barre) dans le csv avec une boucle TANTQUE mais sans succès, du moins ce qui est affiché dans les champs ne change pas... Je suis un peu coincé parce que c'est tout ce qui manque pour que l'appli fonctionne, les autres fonctions marchent parfaitement.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2014
    Messages : 93
    Points : 166
    Points
    166
    Par défaut
    bonjour
    essayez ces modifications :
    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
    SI SAI_EAN = "" ALORS RepriseSaisie(SAI_EAN)
    NomCheminFichier est une chaîne
    IDFichier est un entier
    LigneLue est une chaîne
    //
    //// Sélection du nom et du chemin du fichier
    NomCheminFichier ="Interro_bdd.csv"
    //// Ouverture du fichier
    IDFichier = fOuvre(NomCheminFichier)
    //// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
    SI IDFichier = -1 ALORS
    	Erreur(ErreurInfo(errMessage))
    SINON
    	ArticleTrouvé est un booléen = False
    	BOUCLE
    		// Lecture de la première ligne du fichier
    		LigneLue = fLitLigne(IDFichier)
    		SI ErreurDétectée ALORS
    			Erreur(ErreurInfo())
    			SORTIR
    		FIN
    		// Fin de fichier ?
    		SI LigneLue = EOT ALORS SORTIR
    	        // on teste
    		IF ExtraitChaîne(LigneLue, 1, ";") = SAI_EAN THEN 
    			ArticleTrouvé = True 
    			SORTIR
    		END
    
            FIN
    	IF ArticleTrouvé THEN
    		LIB_Nom =ExtraitChaîne(LigneLue, 2, ";")
    		LIB_AchatHT = ExtraitChaîne(LigneLue, 3, ";")+" €"//px achat
    		LIB_PublicHT = ExtraitChaîne(LigneLue, 4, ";")+" €"//px vente
    		LIB_PublicTTC = ExtraitChaîne(LigneLue, 5, ";")+" €"//px vente ttc
    	ELSE
    		// code inconu !
    	END	
    END
    // Fermeture du fichier
    fFerme(IDFichier)
    
    RepriseSaisie(SAI_EAN)

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien hardware
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien hardware
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci de votre réponse rapide. J'ai testé le code que vous m'avez donné mais malheureusement rien ne se passe sur l'écran lors de la validation après avoir rentré le code 01ASPE01 alors que c'est le premier code du CSV. Serait-ce un problème du CSV ? Comment pourrais-je le vérifier?
    J'ai pensé à une solution éventuelle : à l'initialisation de l'application, je parcours le csv et mets les lignes dans un tableau et c'est ce tableau que je prendrai comme base pour la recherche, mais je n'ai absolument aucune idée de comment cela fonctionne, je vais essayer de voir avec la doc. Le tout serait peut-être de dump le tableau dans un premier temps pour voir ce qu'il contient, c'est peut-être tout simplement le CSV qui est mal fait...

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2014
    Messages : 93
    Points : 166
    Points
    166
    Par défaut
    Bonjour
    petite fonction qui attend en entrèe le code et qui renvoie "" ou la ligne du fichier texte :

    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
     
    PROCEDURE TestCodeLu(pCodeLu est une chaîne):chaîne
    ArticleTrouvé est un booléen
    IDFichier est un entier
    NomCheminFichier, LigneLue est une chaîne
     
    pCodeLu = SansEspace(pCodeLu)
     
    NomCheminFichier = ComplèteRep(fRepEnCours())+"Interro_bdd.csv"
    IDFichier = fOuvre(NomCheminFichier)
    IF IDFichier = -1 THEN Erreur(ErreurInfo(errMessage)); RENVOYER ""
     
    ArticleTrouvé = False
    LOOP
    	LigneLue = fLitLigne(IDFichier)
    	IF ErreurDétectée THEN Erreur(ErreurInfo()); fFerme(IDFichier); RENVOYER ""
    	IF LigneLue = EOT THEN fFerme(IDFichier); RENVOYER ""
    	IF ExtraitChaîne(LigneLue, 1, ";") = pCodeLu THEN fFerme(IDFichier); ArticleTrouvé = True; SORTIR		
    END
    RENVOYER (ArticleTrouvé ? LigneLue ELSE "")
    Si vous voulez bénéficier d'un index pour éviter une lecture séquentielle, passez par une zone mémoire.
    Voir les fonctions : MemExiste() MemCrée() MemAjoute()

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien hardware
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien hardware
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Bonjour et un grand merci de l'aide,
    Le problème de lecture venait du csv qui me sortait des caractères chinois quand j'essayais de le lire sur Windev. Je suis passé en texte unicode avec tabulation et tout fonctionne ! C'est vrai que le coup de la mémoire ça peut être pas mal, je vais vérifier cela tout de suite !
    Voici mon code actuel :
    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
    NomCheminFichier est une chaîne
    IDFichier est un entier
    LigneLue est une chaîne
    //
    //// Sélection du nom et du chemin du fichier
    NomCheminFichier = "\Backup\Interro\basededonnees.txt"
    //// Ouverture du fichier
    IDFichier = fOuvre(NomCheminFichier)
    //// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
    SI IDFichier = -1 ALORS
    	Erreur(ErreurInfo(errMessage))
    SINON
    	ArticleTrouvé est un booléen = False
    	BOUCLE
    		// Lecture de la première ligne du fichier
    		LigneLue = fLitLigne(IDFichier)
    		SI ErreurDétectée ALORS
    			Erreur(ErreurInfo())
    			SORTIR
    		FIN
    		// Fin de fichier ?
    		SI LigneLue = EOT ALORS 			SORTIR
    		IF ExtraitChaîne(LigneLue, 1, [TAB]) = SAI_EAN THEN 
    			ArticleTrouvé = True 
    			LIB_Nom =ExtraitChaîne(LigneLue, 2, [TAB])
    			LIB_AchatHT = (ExtraitChaîne(LigneLue, 3, [TAB]))+" €"//px achat
    			LIB_PublicHT = ExtraitChaîne(LigneLue, 4, [TAB])+" €"//px vente
    			LIB_PublicTTC = ExtraitChaîne(LigneLue, 5, [TAB])+" €"//px vente ttc
     
    		END
    		FIN
    SI ArticleTrouvé = False ALORS LIB_Nom = "Article inconnu" 
    FIN
     
    	// Fermeture du fichier
    	fFerme(IDFichier)
    SAI_EAN=""
    RepriseSaisie(SAI_EAN)
    Par contre existe t'il une fonction pour transformer une chaîne de caractère en nombre décimal? cela me permettrait d'afficher '6,00' au lieu de '6' sur le fichier texte?

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2014
    Messages : 93
    Points : 166
    Points
    166
    Par défaut
    La fonction val () devrait répondre en faisant attention au points qui devront remplacer les virgules (voir la fonction :Remplace)

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien hardware
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien hardware
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Mon application est terminée désormais, bien sur il est possible d'apporter quelques optimisations peuvent être ajoutées mais elle est parfaitement fonctionnelle ! Merci beaucoup pour l'aide apportée Phil !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 9
    Points
    9
    Par défaut Pour mon info
    Bonjour,

    Je dois réaliser dans les semaines qui viennent un logiciel d'inventaire en WinDev Mobile sur des Datalogic Memor X3.

    Pourriez-vous m'indiquer :

    1°) Ce que vous pensez du produit ? (Je dois acheter une dizaine de Memor et je ne souhaiterais pas me planter).
    2°) Comment vous vous êtes "connecté" au lecteur code barres du Memor (Composant WinDev, dll, ou autres) ?

    D'avance merci pour votre réponse ...

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien hardware
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien hardware
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Le Memor X3 est un produit plutôt fiable (j'en fournis pas mal ainsi que les Cipherlab CPT8001). Un point faible serait peut-être la version de windows mais dans l'ensemble ça reste un produit adapté pour ce que vous voulez. Pour le scan du memor il n'y a pas besoin de se "connecter" à celui--ci. En effet un lecteur code barre n'est rien de plus qu'un simple clavier , quand vous appuierez sur le bouton "SCAN" alors que vous êtes dans un champ de saisie, celui-ci se remplira avec le code sélectionné, comme si vous l'aviez tapé au clavier. Le seul paramètre à modifier si nécessaire est le suffixe du scanner. En effet pour que mon application fonctionne de manière optimale, il fallait que quand je scan un article, la recherche se valide automatiquement sans avoir à appuyer sur entrée, j'ai donc simplement mis un [tab][tab][enter] en suffixe de scan.
    Mais cela se règle dans le panneau de config du Memor. Il n'y a rien à programmer pour utiliser ses fonctions classiques !

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut control prix
    Bonjour,

    avez vous réussi a finaliser votre programme ?

    je cherche a faire un contrôle de prix avec un terminal code barre sous windows ce memor X3

    en gros je scan un code barre et ça affiche le nom de l'article et sont prix (ces info sont a prendre dans un fichier type excel sur le réseau ou le terminal)

    cordialement

    aurelien

  11. #11
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour Aurélien,

    1. Tu aurais dû créer un nouveau fil de discussion.
    2. Tu as déjà un aperçu de l'interface graphique que tu pourrais avoir.
    3. Il faut que tu poses des questions précises si tu veux avoir des réponses. On ne sait pas ce que tu déjà fait. Personne ici n'est là pour faire le boulot à ta place.
    4. Si tu es débutant, lis déjà le livre d'autoformation. C'est une mine d'information pour apprendre
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

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

Discussions similaires

  1. [XL-2000] recherche une fonction d'affichage particulier des colonnes
    Par pat91 dans le forum Excel
    Réponses: 20
    Dernier message: 24/05/2009, 00h45
  2. Réponses: 2
    Dernier message: 03/02/2009, 22h12
  3. Recherche dans un CSV et affichage de la ligne
    Par Faladin dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/06/2008, 19h51
  4. Recherche dans fichier CSV
    Par psal78 dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 02/05/2007, 07h48
  5. [CSV] Affichage d'un fichier csv avec pagination
    Par arnoweb dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h13

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