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

SAP Crystal Reports Discussion :

Encodage tabulation horizontal dans un code 128


Sujet :

SAP Crystal Reports

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    CdP ERP
    Inscrit en
    mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CdP ERP
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2014
    Messages : 33
    Points : 33
    Points
    33
    Par défaut Encodage tabulation horizontal dans un code 128
    Bonjour à toutes et à tous,

    Je cherche maintenant depuis plusieurs jours à intégrer le caractère tabulation d'en un code barre 128 généré depuis crystal report sans succés.
    J'ai essayé avec les chr(9), chr(09), chr(105) mais sans succés. en fait des que j'incorpore le chr dans la formule le code barre ne s'affiche pas.
    Ci-dessous le code que j'avais récupéré sur le grand zebu je crois pour construire mon code 128.

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    // V 2.0.0
    // Paramètres : une chaine : remplacer {TEXTE_A_CODER} par la chaîne voulue
    // Retour : * une chaine qui, affichée avec la police CODE128.TTF, donne le code barre
    //          * une chaine vide si paramètre fourni incorrect
    // Déclaration des variables
    Local StringVar code128 := '';
    Local StringVar chaine :="V"+chr(9)+"O";
    Local NumberVar index;
    Local NumberVar cleControle;
    Local NumberVar minIndex;
    Local NumberVar dummy;
    Local BooleanVar tableB := True;
    Local NumberVar longChaine := Length (chaine);
     
    If longChaine > 0 Then
    (
          // Vérifier si caractères valides
          For index := 1 To longChaine Do
          (
                // Condition Case OK en VB = impossible en Crystal, remplacée un If
                If Not (AscW (Mid (chaine, index, 1)) In [32 To 126]) Then
                      (index := 0; Exit For)
          );
     
          code128 :='';
          If index > 0 Then
          (
                index := 1; // index devient l'index sur la chaîne
                While index <= longChaine Do
                (
                      If tableB = True Then
                      (
                            // Voir si intéressant de passer en table C
                            // Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres
                            minIndex := IIf (index = 1 Or index + 3 = longChaine, 4, 6);
                            // Pas de GoTo, donc on duplique testnum:
                            minIndex := minIndex - 1;
                            If (index + minIndex) <= longChaine Then
                            (
                                 While minIndex >= 0 Do
                                 (
                                       If AscW (Mid (chaine, (index + minIndex), 1)) < 48 Or AscW (Mid (chaine, (index + minIndex), 1)) > 57 Then Exit While;
                                       minIndex := minIndex - 1
                                 )
                            );
                            // Fin de testnum
                            If minIndex < 0 Then // Choix table C
                            (
                                 If index = 1 Then // Débuter sur table C
                                 (
                                       code128 := ChrW (210); 
                                       tableB := False;
                                 )
                                 Else // Commuter sur table C
                                 (
                                       code128 := code128 + ChrW(204); 
                                       tableB := False;
                                 )
                            )
                            Else   
                                 If index = 1 Then 
                                 (
                                       code128 := ChrW (209);
                                       tableB := True;
     
                                 ); // Débuter sur table B
                      );
                      If tableB = False Then
                      (
                            // On est sur la table C, essayer de traiter 2 chiffres
                            minIndex := 2;
                            // Pas de GoTo, donc on duplique testnum:
                            minIndex := minIndex - 1;
                            If (index + minIndex) <= longChaine Then
                            (
                                 While minIndex >= 0 Do
                                 (
                                       If AscW (Mid (chaine, (index + minIndex), 1)) < 48 Or AscW (Mid (chaine, (index + minIndex), 1)) > 57 Then Exit While;
                                       minIndex := minIndex - 1
                                 )
                            );
                            // Fin de testnum
                            If minIndex < 0 Then // OK pour 2 chiffres, les traiter
                            (
                                 dummy := Val (Mid (chaine, index, 2));
                                 dummy := IIf (dummy < 95, dummy + 32, dummy + 105);
                                 code128 := code128 + ChrW (dummy);
                                 index := index + 2;
                                 tableB := False
                            )
                            Else // On n'a pas 2 chiffres, rapasser en table B
                            (
                                 dummy := dummy;
                                 code128 := code128 + ChrW (205);
                                 index := index;
                                 tableB := True);
                      );
                      If tableB = True Then
                            // traiter 1 caractère en table B
                      (
                            code128 := code128 + Mid (chaine, index, 1);
                            index := index + 1
                      )
                );
                // Calcul de la clé de contrôle
                For index := 1 To Length (code128) Do
                (
                      dummy := AscW (Mid (code128, index, 1));
                      dummy := IIf (dummy < 127, dummy - 32, dummy - 105);
                      If index = 1 Then cleControle := dummy;
                      cleControle := (cleControle + (index - 1) * dummy) Mod 103);
                // Calcul du code ASCII de la clé
                cleControle := IIf (cleControle < 95, cleControle + 32, cleControle + 105);
                // Ajout de la clé et du STOP
                code128 := code128 + ChrW (cleControle) + ChrW (211)
          );
    );
    code128;

  2. #2
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    avril 2004
    Messages
    1 913
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : avril 2004
    Messages : 1 913
    Points : 2 633
    Points
    2 633
    Par défaut
    bonjour

    essaye de rentrer ce caractère ~009
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    CdP ERP
    Inscrit en
    mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CdP ERP
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2014
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par luc_chivas Voir le message
    bonjour

    essaye de rentrer ce caractère ~009
    Bonjour,
    j'avais déjà essayé j'ai oublié de le mentionner. c'est interprété comme une chaine de caractère classique donc ressort ~0009 dans le code barre.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    CdP ERP
    Inscrit en
    mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CdP ERP
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2014
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Je me demande si c'est pas la police que j'utilise qui n'est pas capable d'encoder dans le code barre ce caractère.
    est-ce que vous avez des conseils pour faire CB128 via crystal ?

  5. #5
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    avril 2004
    Messages
    1 913
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : avril 2004
    Messages : 1 913
    Points : 2 633
    Points
    2 633
    Par défaut
    Bonjour , une des solutions, c'est d'aller faire un tour sur iDAutomation, il y a toutes les UFL pour générer tout type de code barre
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    CdP ERP
    Inscrit en
    mars 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CdP ERP
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2014
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Au final via la formule BCSLinearCode128A en combinant avec la police Code128aMHr j'arrive à encoder le char(9), par contre dans le code barre j'ai la valeur qui est affiché en-dessous et des "démos" dans les barres.
    Je pense que j'ai la formule car j'avais acheté chez barcodesoft de quoi faire du DMC et du QRC. D'ailleurs je n'avais même pas la police Code128aMHr, que j'ai choppé sur le net...
    Est-ce que tu sais s'il y a un moyen de virer ces "démos"?
    sinon au final ça fait un code barre très grand...
    Images attachées Images attachées  

Discussions similaires

  1. [XL-2010] Encodage des caractères dans les codes-source VBA
    Par puresprit dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2013, 00h16
  2. Encodage en code 128
    Par gerald2545 dans le forum Contribuez
    Réponses: 0
    Dernier message: 13/02/2011, 18h37
  3. Réponses: 10
    Dernier message: 14/11/2009, 16h19
  4. Réponses: 2
    Dernier message: 10/10/2007, 16h24
  5. Réponses: 6
    Dernier message: 19/09/2006, 10h12

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