Scan multiple de QR Code

  • Scan multiple de QR Code

    Posté par Antoine sur 28 février 2025 à 15h41

    Bonjour à tous,

    Je souhaiterai utiliser le lecteur de QR Code en mode Scan multiple.

    Après les avoir lu avec l’outil, j’envoie donc les scans dans une collection comme ceci :

    ClearCollect(DirectScanCollection; LecteurQRCode.Barcodes);;

    Ce qui me donne une table à 2 colonnes “type” et “Value” avec 1 ligne à chaque code scanné.

    Je souhaite ajouter des colonnes pour ensuite patcher la collection dans un excel.
    N’arrivant pas à ajouter des colonnes directement dans ma collection, je crée une nouvelle collection :

    ForAll(DirectScanCollection;Collect(ScanCollection;{Utilisateur:User().FullName; Date:Now(); IDScan: DirectScanCollection[@Value] }));;

    Cependant, ça ne fonctionne pas, il me dit qu’IDScan attent un texte et que DirectScanCollection[@Value] est une table… (ou l’inverse…)

    Quelqu’un a t’il une idée de l’erreur que je fais et comment la corriger svp ?

    Merci d’avance pour vos idées !

    • Cette discussion a été modifiée Il y a 1 semaine, 6 jours par  Antoine.
    • Cette discussion a été modifiée Il y a 1 semaine, 6 jours par  Antoine.
    • Cette discussion a été modifiée Il y a 1 semaine, 6 jours par  Antoine.
    Nicolas a répondu Il y a 1 semaine, 1 jour 2 Membres · 6 Réponses
  • 6 Réponses
  • Nicolas

    Membre
    28 février 2025 à 17h42

    Bonjour @Antoine,,

    d’abord LecteurQRCode.Barcodes est bien une table donc DirectScanCollection en est une aussi. Pour accéder à la valeur qui t’intéresse il faut donc indiquer la ligne et le champ qui t’intéresse. Comme First(LecteurQRCode.Barcodes).Type ou First(DirectScanCollection).Value

    Mais on va plutôt faire ça dans ton premier Collect. Il faut créer un enregistrement, donc {} et on indique les différentes valeurs voulues :

    ClearCollect(

    DirectScanCollection;

    {

    IDScan: First(LecteurQRCode.Barcodes).Value;

    Utilisateur: User().FullName;

    Date: Now()

    }

    )

    De la même manière, on peut rajouter le type de scan, s’il t’intéresse…

  • Antoine

    Membre
    3 mars 2025 à 13h12

    Bonjour Nicolas et merci pour ta réponse.

    Néanmoins cela ne fonctionne pas.

    Effectivement ton code fonctionne uniquement si je scanne 1 seul QR code. C’est ce que j’avais fait au début, mais c’est assez rébarbatif lorsque l’on a plusieurs QR codes à scanner.

    Là, je veux passer en Scan multiple. C’est à dire au lieu de renvoyer 1 seul scan dans la table LecteurQRCode.Barcodes, j’en renvoie plusieurs.

    Je pense avoir trouvé la solution :

    ClearCollect(DirectScanCollection;LecteurQRCode.Barcodes);;
    ForAll(DirectScanCollection;Collect(ScanCollection; {Utilisateur : User().FullName ; Date : Now() ; IDScan : ThisRecord.Value } ) ) ;;

    Du coup je n’ai pas compris dans le ForAll la différence entre DirectScanCollection[@Value] et le ThisRecord.Value…

    • Cette réponse a été modifiée Il y a 1 semaine, 3 jours par  Antoine.
    • Cette réponse a été modifiée Il y a 1 semaine, 3 jours par  Antoine.
  • Nicolas

    Membre
    3 mars 2025 à 23h33

    Bonjour @Antoine,

    désolé, je n’avais pas vu le ForAll…

    C’est simple :

    DirectScanCollection[@Value] représente la colonne Value de la collection (une table donc). Je lui préfère l’écriture DirectScanCollection.Value, mais c’est un goût personnel…

    ThisRecord.Value représente la valeur de l’objet en cours, donc une valeur unique. Ce qui est mieux pour le ForAll.

  • Nicolas

    Membre
    3 mars 2025 à 23h48

    De plus, tu peux l’écrire en 1 collection, et je préfère l’écriture de ForAll avec As (plus claire pour moi) :

    ForAll(LecteurQRCode.Barcodes As Code;Collect(ScanCollection; {Utilisateur : User().FullName ; Date : Now() ; IDScan : Code.Value }))

    par contre, il faut penser à vider la collection quelque part avec un Clear(ScanCollection)

  • Antoine

    Membre
    5 mars 2025 à 10h16

    Bonjour Nicolas

    Merci beaucoup pour ta réponse, c’est clair pour moi maintenant.

    J’ai corrigé mon code ça fonctionne au top ! 👍

    Et du coup je ne connaissais pas le As qui est bien pratique effectivement.

  • Nicolas

    Membre
    5 mars 2025 à 15h59

    De rien : tu peux remercier Shane Young qui m’a appris le As

Connectez-vous pour répondre.