Remplacer la fonction ne fonctionne pas dans Crystal Reports
quand je fournir la chaîne de stknummer = "*VU-NR:-93.10xxxxxxxx_2-12-2011*" à cette fonction:
whileprintingrecords;
shared stringvar tstnummer;
shared stringvar stknummer;
local stringvar tst;
local stringvar stk;
local stringvar bc;
tst := tstnummer;
stk := stknummer;
//why is this not evaluated?
tst := Replace (tstnummer,":" ,"_" );
tst := Replace (tstnummer,"." ,"_" );
tst := Replace (tstnummer,"=" ,"_" );
tst := Replace (tstnummer,"/" ,"_" );
tst := Replace (tstnummer,"\" ,"_" );
tst := Replace (tstnummer,"?" ,"_" );
tst := Replace (tstnummer,"#" ,"_" );
tst := Replace (tstnummer,"." ,"_" );
tst := Replace (tstnummer,"*" ,"_" );
tst := Replace (tstnummer,"|" ,"_" );
tst := Replace (tstnummer,"<" ,"_" );
tst := Replace (tstnummer,">" ,"_" );
tst := Replace (tstnummer," " ,"-" );
//and this neither?
stk := Replace (stknummer,":" ,"_" );
stk := Replace (stknummer,"." ,"_" );
stk := Replace (stknummer,"=" ,"_" );
stk := Replace (stknummer,"/" ,"_" );
stk := Replace (stknummer,"\" ,"_" );
stk := Replace (stknummer,"?" ,"_" );
stk := Replace (stknummer,"#" ,"_" );
stk := Replace (stknummer,"." ,"_" );
stk := Replace (stknummer,"*" ,"_" );
stk := Replace (stknummer,"|" ,"_" );
stk := Replace (stknummer,"<" ,"_" );
stk := Replace (stknummer,">" ,"_" );
stk := Replace (stknummer," " ,"-" );
//select file output format
if {?barcode_type} = true
then (if trim(stk) =""
then
bc:= "*" + tst + "_" + totext(dateValue({@signdate})) + "*"
else
(
bc:= "*" + stk + "_" + totext(dateValue({@signdate})) + "*");;)
else bc := "*" + tst + "_" + totext(dateValue({@signdate})) + "*"
Le résultat est que toute les remplacements sont effectués (c'est à dire l' : est toujours là)
quand j'ai mis le Remplacer(stk, ":", "_") dans le bas de la fonction comme:
//select file output format
if {?barcode_type} = true
then (if trim(stk) =""
then
bc:= "*" + tst + "_" + totext(dateValue({@signdate})) + "*"
else
(
bc:= "*" + Replace (stk, ":", "_") + "_" + totext(dateValue({@signdate})) + "*");;)
else bc := "*" + tst + "_" + totext(dateValue({@signdate})) + "*"
Le remplacement est effectué correctement.
Pourquoi les remplacements ne se fait pas dans le premier exemple?
J'ai bien mis tous les remplacements dans la fonction mais pas trop élégant....
Grâce
Vous devez vous connecter pour publier un commentaire.
Oh, vous allez être en colère à propos de celui-ci 🙂
La fonction de remplacement() est en cours d'évaluation... mais à chaque fois que vous êtes en écrasant les variables stk et tst avec un seul remplacement de les chaînes d'origine, tstnummer et stknummer. Lorsque tous les Remplace() sont terminées, vous êtes de gauche avec une chaîne de caractères sans espace blanc. Besoin de changer pour cette...
+1 -- Qui M'a pris avant.
Dans votre première affectation,
Vous donnez 'tst' une valeur.
Dans votre première déclaration,
Vous RÉ-affectation d'une valeur à 'tst'. CHAQUE instruction active ré-attribue 'tst" avec les résultats de REPLACE (), qui agit sur la valeur de 'tstnummer'.
'Tstnummer' ne CHANGE JAMAIS. 'Tst' est à plusieurs reprises affecté les résultats de la DERNIÈRE REPLACE()
Au lieu de cela, après que vous avez attribué 'tst' une valeur, vous voulez ré-affecter les résultats de REPLACE() -- sur la variable "Tst'. Chaque fois qu'un actif instruction est traitée, la valeur de " tst " est mis à jour, et la PROCHAINE instruction active les processus de la "nouvelle" 'tst'.
Il semble confus, mais si vous marchez à travers elle, vous allez voir.
'Tstnummer' reste le même
Ensuite, nous allons jouer avec la REGEX! (just kidding).