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 ?
Je dois implémenter une instruction "selectwhere" et je la construis sous forme de chaîne, qui implique plusieurs noms de colonnes. Mais lorsqu'il évalue, il tente d'interpréter le "=" comme une affectation. Mes noms de colonnes ressemblent à : "COND=TEMP".
Ci-dessous la section du script que j'utilise :
chaîne_sélection = ":Nom du test == benchNameToCompare" ;
//Pour chaque colonne de la table cartographique, 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 ) ;
Nom de la colonne actuelle = corrélationMapTable << Obtenir les noms de colonnes () ;
Si ( Contient ( Nom de la colonne actuelle [ j ] , "COND_" ) > 0 ,
la valeur = Nom de la colonne actuelle [ j ][ je ] ;
nomCol = Nom de la colonne actuelle [ j ] ;
chaîne_sélection = chaîne_sélection || " & Comme colonne (correlationMapTable, " || carboniser ( Nom de la colonne actuelle [ j ]) || ") == " || carboniser ( Nom de la colonne actuelle [ j ][ je ]) ;
) ;
) ;
chaîne_sélection = "benchDataTable << sélectionner où(" || chaîne_sélection || ")" ;
évaluer ( analyser ( chaîne_sélection )) ; //Voici une plainte si j'ai "=" dans le nom de la colonne.
bancDataTable << Sous-ensemble (( Lignes sélectionnées ) , Nom de la table de sortie ( "Table de banc filtrée" )) ;
Merci d'avance!
Re : Comment puis-je échapper "=" dans le nom d'une colonne ?Oui, des 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 réalisé.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 véridique à tout autre chose que 0. Donc Si ( Contient ( Nom de la colonne actuelle [ j ] , "COND_" ) > 0, est identique à Si ( Contient ( Nom de la colonne actuelle [ j ] , "COND_" ) ,
Ce:
//Pour chaque colonne de la table cartographique, 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 ) ;
Nom de la colonne actuelle = corrélationMapTable << Obtenir les noms de colonnes () ;
Si ( Contient ( Nom de la colonne actuelle [ j ] , "COND_" ) > 0 ,
la valeur = Nom de la colonne actuelle [ j ][ je ] ;
nomCol = Nom de la colonne actuelle [ j ] ;
il serait mieux d'écrire :
//Pour chaque colonne de la table cartographique, si le nom de la colonne est un COND, ajoutez-le aux critères de sélection
Pour ( j = 1 , j <= nombreDeColonnes , j ++,
colName = Colonne ( corrélationMapTable, j) << Obtenir le nom ;
Si ( Contient ( nomCol , "COND_" ) ,
Re : Comment puis-je échapper "=" dans le nom d'une colonne ?Hé, Breinoso,
Ouais, je ne suis pas là depuis assez longtemps pour connaître l'origine des caractères d'échappement en JSL, mais ils commencent bel et bien par "\!".Pour insérer une nouvelle ligne dans une chaîne, c'est "\!n".Pour éviter qu'une citation soit considérée par JMP comme la fin d'une chaîne, faites-la \!". (Et je pense que msharp voulait dire "ce dont vous avez besoin pour échapper, c'est guillemets ").
Et oui, venir d'autres langages vers JSL peut être un peu rebutant ;-).
HTH,
Éric
Re : Comment puis-je échapper "=" dans le nom d'une 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'en apprenant JSL 
Salutations,
B
Re : Comment puis-je échapper "=" dans le nom d'une 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 :
= il n'est pas nécessaire d'échapper à ce dont vous avez besoin pour vous échapper parenthèse guillemets.ALIAS:
évaluer ( analyser ( "dt << Sélectionner Où (Colonne(" Cond. = Température ") == 2)" )) ;
doit devenir :
évaluer ( analyser ( "dt << Sélectionner Où (Colonne (\!" Cond=Temp\!") == 2)" )) ;