Comment puis-je échapper "=" dans le cadre d'un nom de colonne ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Comment puis-je échapper "=" dans le cadre d'un nom de colonne ?
J'ai besoin d'implémenter une instruction "select where" et je la construis sous forme de chaîne, ce qui implique plusieurs noms de colonne. Mais lorsqu'il évalue, il tente d'interpréter le "=" comme une affectation. Mes noms de colonnes sont du type : "COND=TEMP".
Ci-dessous la section du script que j'utilise:
select_string = ":Nom du test == nomdubancàcomparer" ;
//Pour chaque colonne de la table de la carte, si le nom de la colonne est un COND, ajoutez-le aux critères de sélection
Pour ( j = 1 , j <= nombreDeColonnes , j ++,
Tableau de données actuel ( corrélationMapTable ) ;
NomColonneActuel = corrélationMapTable << Obtenir les noms de colonne () ;
Si ( Contient ( NomColonneActuel [ j ] , "COND_" ) > 0 ,
la valeur = NomColonneActuel [ j ][ je ] ;
colName = NomColonneActuel [ j ] ;
select_string = select_string || " & As Column(correlationMapTable," || carboniser ( NomColonneActuel [ j ]) || ") == " || carboniser ( NomColonneActuel [ j ][ je ]) ;
) ;
) ;
select_string = "benchDataTable << sélectionnez où(" || select_string || ")" ;
eval ( analyser ( select_string )) ; // Voici des plaintes si j'ai "=" dans le cadre du nom de la colonne.
bancDataTable << Sous-ensemble (( Lignes sélectionnées ) , Nom de la table de sortie ( "Table Banc Filtrée" )) ;
Merci d'avance!
Re : Comment puis-je échapper "=" dans le cadre d'un nom de colonne ?Oui, les guillemets.Merci pour la prise.
Pour en savoir plus sur les caractères d'échappement et les nuances de JSL, vous pouvez vous référer au Scripting Guide qui est vraiment bien ficelé.Aide>>Livres>>Guide de script.(Les caractères d'échappement sont à la p.87).Si vous vous interrogez simplement sur la syntaxe, l'index de script est plus utile.Aide>>Index des scripts.
Quelques choses à souligner,
Pour les nombres dans les instructions If(), JSL répond en toute vérité à autre chose que 0. Donc Si ( Contient ( NomColonneActuel [ j ] , "COND_" ) > 0, est le même que Si ( Contient ( NomColonneActuel [ j ] , "COND_" ) ,
Cette:
//Pour chaque colonne de la table de la carte, si le nom de la colonne est un COND, ajoutez-le aux critères de sélection
Pour ( j = 1 , j <= nombreDeColonnes , j ++,
Tableau de données actuel ( corrélationMapTable ) ;
NomColonneActuel = corrélationMapTable << Obtenir les noms de colonne () ;
Si ( Contient ( NomColonneActuel [ j ] , "COND_" ) > 0 ,
la valeur = NomColonneActuel [ j ][ je ] ;
colName = NomColonneActuel [ j ] ;
serait mieux écrit :
//Pour chaque colonne de la table de la carte, si le nom de la colonne est un COND, ajoutez-le aux critères de sélection
Pour ( j = 1 , j <= nombreDeColonnes , j ++,
nomCol = Colonne( corrélationMapTable, j) << Obtenir le nom ;
Si ( Contient ( colName , "COND_" ) ,
Re : Comment puis-je échapper "=" dans le cadre d'un nom de colonne ?Hé, breinoso,
Ouais, je ne suis pas là depuis assez longtemps pour connaître l'origine des caractères d'échappement dans JSL, mais ils commencent en effet par "\!".Pour insérer une nouvelle ligne dans une chaîne, c'est "\!n".Pour éviter qu'un guillemet ne soit vu par JMP comme la fin d'une chaîne, faites-le \!". (Et je pense que msharp voulait dire "ce dont vous avez besoin pour échapper est guillemets ").
Et, oui, venir d'autres langages vers JSL peut être un peu rebutant ;-).
HTH,
Éric
Re : Comment puis-je échapper "=" dans le cadre d'un nom de colonne ?Bonjour msharp,
Merci d'avoir pris le temps de répondre. Pourriez-vous donc préciser que la séquence d'échappement requise est \! \! ?
En tant que programmeur C #, j'ai très mal à la tête rien qu'à apprendre JSL 
Salutations,
B
Re : Comment puis-je échapper "=" dans le cadre d'un nom de colonne ?Je vais être honnête, ce script a beaucoup de problèmes.J'ai mal à la tête rien que de penser à le déboguer.
Donc je ne vais pas le faire, mais essentiellement votre problème est le suivant:
= n'a pas besoin d'être échappé ce dont vous avez besoin pour échapper est parenthèse guillemets.ALIAS:
eval ( analyser ( "dt << Sélectionnez Où(Colonne(" Cond = Temp ") == 2)" )) ;
doit devenir :
eval ( analyser ( "dt << Sélectionnez Où(Colonne(\!"Cond=Temp\!") == 2)" )) ;