Problème : J'exécute un script pour charger les données d'une base de données. Je supprime toutes les formules de la table de données. Je copie le script de table en utilisant le menu triangle rouge. Je colle le script de table dans une fenêtre de script. Je lance le script. La table résultant du script de table a un groupement de colonnes différent et jette les colonnes autour (voir capture d'écran montrant le panneau Colonnes de la table d'origine et la table créée par le script de table côte à côte. Voir aussi les fichiers joints pour référence).

J'ai d'abord soupçonné que cela était dû au fait que le script de table ne préservait pas les espaces de tête dans les noms de colonne, mais comme le montre la capture d'écran ci-dessous, les espaces de tête font en effet partie du script de table, ils ne sont tout simplement pas pris en compte dans la table recréée à partir du script de tableau.

Existe-t-il un moyen de vraiment recréer la table de données d'origine, y compris des espaces blancs dans les noms de colonne ou est-ce généralement une mauvaise stratégie de script?
Même si je n'utiliserais jamais d'espace blanc en début de colonne (j'éviterais également la plupart des caractères spéciaux), dans ce cas, je dirais que cela devrait fonctionner, car il semble être un nom de colonne valide dans JMP.Je dirais que c'est un bug avec New Column.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
wait(1);
Column(dt, 2) << Set Name(" A");
wait(1);
dt << New Column(" A");
La seule solution de contournement "rapide" qui me vient à l'esprit consiste à ajouter le script <
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]), << Set Name(" A"))
);
vous devez donc d'abord placer le script dans le presse-papiers, puis le récupérer sous forme de texte et le modifier avant de l'exécuter.
C'est un exemple très rapide qui fonctionne avec celui-ci :
Names Default To Here(1);
str = JSL Quote(dt = New Table("Untitled",
Add Rows(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column(" A", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
));
new_lines = {};
For Each({line}, Words(str, "\!N"),
If(Starts With(Trim Whitespace(line), "New Column("),
// get column name
col_name = Regex(Trim Whitespace(line), "^New Column\(\!"(.+?)\!",\s", "\1");
// add set name
last_idx = Contains(line, ")", -1);
new_line = Left(line, last_idx - 1) || ", << Set Name(\!"" || col_name ||"\!")),";
Insert Into(new_lines, new_line);
,
Insert Into(new_lines, line);
);
);
old_dt = Eval(Parse(str));
new_dt = Eval(Parse(Concat Items(new_lines, "\!N")));
@jthi Merci. J'avais peur que les espaces blancs principaux soient une mauvaise pratique. Une liste à laquelle ce bogue peut ou peut être ajouté ou signalé ?
De plus, je pense qu'il est plus facile de réécrire mon script pour donner des noms de colonne différents que d'implémenter les solutions de contournement que vous avez suggérées. (J'ai accidentellement qualifié votre réponse de solution alors que j'essayais juste de répondre.) Comme toujours, merci pour votre contribution inestimable et vos efforts inlassables pour éduquer les autres utilisateurs de JMP. C'est extrêmement utile.
J'ai généralement contacté le support jmp avec des bogues. Ce message devrait être un assez bon exemple de la situation, alors n'oubliez pas d'ajouter un lien vers celui-ci.
C'est certainement (à mon avis) une bonne idée de renommer les colonnes plutôt que d'essayer de gérer des solutions de contournement étranges. Ces espaces blancs pourraient finir par causer des problèmes plus tard de toute façon.