La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?J'essaie de définir un ID de lien dans JSL, mais lors de sa définition dans JSL, l'ID de lien semble être défini dans la table comme il se doit, mais la référence de lien dans l'autre table censée le référencer ne fonctionne pas.
Si je supprime l'identifiant du lien et que je le définis en cliquant avec le bouton droit sur l'identifiant du lien, tout fonctionne correctement.
J'utilise ceci :
dfps:name( "Country" ) << Set Property( "Link ID", 1 );
Je ne vois pas ce qui ne va pas avec ça. Me manque-t-il une opération de rafraîchissement pour que cela fonctionne? Aucune suggestion?
ScriptRe : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Comme Craige le mentionne, je pense qu'il s'agit d'un problème de "sauvegarde". J'ai déjà eu ce problème auparavant, et frustrant, je l'ai eu uniquement sur PC. Sur le Mac, je n'ai pas eu besoin d'effectuer la sauvegarde.
S'assurer que ma table a été enregistrée en premier, a résolu le problème.
brady
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?J'ai découvert quelque chose de nouveau :
Si le script JSL que j'exécute n'est pas enregistré et n'a jamais été enregistré auparavant (donc si le code source a été écrit ou copié dans une toute nouvelle fenêtre de script ouverte), la liaison de deux tables de données non enregistrées fonctionne comme un charme.
S'il est enregistré ou s'il s'agit d'un script existant qui vient d'être modifié et non enregistré, il ne fonctionne pas.
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Salut tout le monde,
J'ai le même problème avec la liaison de deux tables via un script.
Il se comporte exactement comme @ThomasZatValcon décrit.
Après l'avoir fait manuellement en cliquant, j'ai ensuite copié les deux lignes de code du journal.
Ensuite, cela dépend de l'endroit où ils sont insérés. Si je les insère dans une nouvelle fenêtre de script, le script fonctionne. Si je les insère dans mon script en cours de développement (à partir duquel les deux tables ont été ouvertes à l'origine), cela ne fonctionne pas.
Y a-t-il de nouvelles idées sur cette question?
Acclamations
robert
D'ailleurs. Entre-temps, j'ai trouvé un fil connexe. La solution consiste à enregistrer d'abord les tables de données, mais ce n'est pas toujours pratique.
https://community.jmp.com/t5/Discussions/Virtual-Join-via-JSL-does-not-work/td-p/360675
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Essayez d'enregistrer les tableaux avant de les lier et voyez si vos résultats deviennent cohérents. Je ne sais pas comment les liens fonctionnent en interne, mais cela peut dépendre de la disponibilité d'un nom de fichier.
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Ce sont deux tables différentes. Celui de gauche est le tableau avec l'ID, le tableau de gauche est le tableau avec la référence.
Oui, j'ai essayé column(dt...) et dt:name()... référencement.
J'ai également essayé de mettre le code qui fonctionne (lorsqu'il est exécuté à partir d'une fenêtre de script distincte) dans un fichier séparé et de l'inclure. N'a pas fonctionné non plus. J'ai essayé de le mettre dans un expr() et de l'évaluer. N'a pas non plus aidé.
Mais les deux lignes de code fonctionnent si je crée une fenêtre de script séparée et que je les exécute à partir de là, ce qui est inattendu.
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Sont-ils censés être les mêmes ? Parce que les deux tables ont un nombre de colonnes différent.
Avez-vous vérifié que "dfps" est correct ? Ou essayé d'utiliser `Column(dt, "Country")` ?Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Je n'ai toujours pas compris, mais j'obtiens un comportement vraiment étrange ici:
Avoir le même code dans deux fenêtres :

Lorsque j'exécute le code dans la fenêtre de gauche, remarquez que l'icône avec les deux clés est grise (cela ne fonctionne pas):

Lorsque j'exécute les deux mêmes lignes dans la fenêtre de droite, cela fonctionne:

Le code dans la fenêtre de gauche est l'endroit où le jsl a été créé. Tout le code s'exécute simplement dans l'espace de noms global. J'ai même essayé avec des noms par défaut ici (1) et j'ai eu le même comportement qui m'a surpris, car je m'attendais à ne pas pouvoir référencer les variables de table à partir d'une autre fenêtre de script.
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Merci. J'ai modifié votre code pour mieux représenter ce qui se passe (les tables ne sont qu'en mémoire) pour représenter plus étroitement ce qui se passe et je m'attendais à ce qu'il échoue, mais cela fonctionne réellement. Je n'ai toujours pas compris ce qui fait échouer mon autre code, mais je mettrai à jour ce fil si je le découvre.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// creating a unique ID
dt2 = dt << subset( all rows, all columns );
dt2 << New Column( "_Row", <<SET each="" value=""></SET>
Re : La définition de l'ID de lien dans jsl ne semble pas fonctionner - qu'est-ce qui ne va pas ?Voulez-vous dire que vous définissez la référence avant l'ID ?Je ne sais pas comment vous feriez cela, mais cela fonctionne très bien pour moi.
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
// creating a unique ID
dt << New Column("_Row", << Set Each Value(Row()));
// subsetting just so I have something to link
dt_sub = dt << Subset(
Selected Rows( 0 ),
Rows( [1, 2, 3, 4, 5] ),
columns( :_Row )
);
Column(dt, "_Row") << Set Property( "Link ID", 1 );
Column(dt_sub, "_Row") << Set Property( "Link Reference",
Reference Table( "$SAMPLE_DATA\Big Class.jmp" )
);