Besoin d'aide pour sélectionner la date.Je crée un sous-ensemble dans lequel j'utilise Select Where :Login Date == 01/18/2019; Je n'arrive pas à le faire fonctionner.J'ai également essayé d'ouvrir le sous-ensemble et d'exécuter le générateur de requêtes.Je peux ajouter tous les champs puis filtrer par date de connexion.Les dates de connexion s'affichent dans le filtre.Si je choisis l’une des dates et clique sur Mettre à jour, aucun enregistrement ne s’affiche.Vous trouverez ci-dessous mon code et j'ai joint la capture d'écran du générateur de requêtes.Toute aide serait appréciée.
Salutations,
Wayne
</CODE></PRE><P> </P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture-6.PNG" style="width: 973px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Capture-6.PNG" style="width: 973px;"><span class="lia-inline-image-display-wrapper" image-alt="Capture-6.PNG" style="width: 973px;"><img src="https://us.v-cdn.net/6038925/uploads/images/15261iF7CEA402ACB0B52C/Capture-6.PNG" role="button" title="Capture-6.PNG" alt="Capture-6.PNG" /></span></SPAN></SPAN></P></LINGO-BODY><LINGO-SUB id="lingo-sub-108358" slang="en-US" mode="NONE">Re : Besoin d'aide pour sélectionner la date.</LINGO-SUB><LINGO-BODY id="lingo-body-108358" slang="en-US" mode="NONE">Jim,<BR /><BR /> J'ai finalement compris. J'ai pris votre solution, puis je me suis débarrassé de l'extension et je l'ai rajoutée à ma sélection d'origine. Pour une raison quelconque, l'extension n'a pas fonctionné.<BR /> Merci d'avoir pris tout le temps pour m'aider à résoudre ce problème. Très apprécié. Sans tous les experts de ce forum, les gens qui apprennent comme moi ne pourraient pas mener à bien leurs projets.<BR /><BR /> Salutations,<BR /><BR /> Wayne</LINGO-BODY><LINGO-SUB id="lingo-sub-108356" slang="en-US" mode="NONE">Re : Besoin d'aide pour sélectionner la date.</LINGO-SUB><LINGO-BODY id="lingo-body-108356" slang="en-US" mode="NONE"><P>Jim,</P><P>J'ai remarqué dans l'outil de débogage qu'il indique que ALstartDT est une chaîne et non un nombre.J'espère que cela aide.</P><P> </P><P>Salutations,</P><P> </P><P>Wayne</P></LINGO-BODY><LINGO-SUB id="lingo-sub-108355" slang="en-US" mode="NONE">Re : Besoin d'aide pour sélectionner la date.</LINGO-SUB><LINGO-BODY id="lingo-body-108355" slang="en-US" mode="NONE"><P>Jim,</P><P> </P><P>Aucune erreur, mais il n'est pas sous-défini par la date ALstartDT extraite de la zone de texte de date.Mon fichier contient des lignes avec des dates de connexion allant du 02/01/2019 au 24/01/2019. Mon ALstartDT est le 18/01/2019.</P><P> </P><P>Salutations,</P><P> </P><P>Wayne</P></LINGO-BODY><LINGO-SUB id="lingo-sub-108347" slang="en-US" mode="NONE">Re : Besoin d'aide pour sélectionner la date.</LINGO-SUB><LINGO-BODY id="lingo-body-108347" slang="en-US" mode="NONE"><P>Le problème est que vous avez :login Date comme colonne de caractères et qu'elle contient les données de temps ainsi que les données de date.Ainsi, lorsque vous le comparez à ALstartDT, il rencontre des problèmes.Je vous suggère de décommenter la ligne où vous avez tenté de modifier la date de connexion : Login Date en un chiffre au format "m/d/y".Il devrait être légèrement modifié pour ressembler à</P>
<PRE><CODE class=" language-jsl">dt6:Login Date << data type(numeric) << modeling type(continuous)<< format( "m/d/y");
puis modifiez vos lignes de sélection où en
dt6 << Select where ((Contains(MyList, :Site ID)) & :Analysis == "G4");
dt6 << Select where (:Login Date >= informat(ALstartDT,"mm/dd/yyyy"),current selection("extend"));Re : Besoin d'aide pour sélectionner la date.Jim,
L'exemple de table JMP : Date de connexion est au format de caractères.Je crois que l'AlstartDT est numérique et c'est pourquoi j'ai ce problème ?Pensez-vous que c'est là le problème ?Dans ce cas, que recommandez vous?
Salutations,
Wayne
Re : Besoin d'aide pour sélectionner la date.Jim,
C'est l'Excel que j'importe.Après l'importation, j'obtiens le tableau suivant.Voir ci-joint.
Wayne
Re : Besoin d'aide pour sélectionner la date.Jim,
Je suis d'accord.Ci-joint un exemple de tableau.
Salutations,
Wayne
Re : Besoin d'aide pour sélectionner la date.Je suis presque sûr que le problème est une incompatibilité entre le caractère ou non de la colonne et la variable de comparaison.Pouvez-vous joindre un exemple de tableau de données ?
Re : Besoin d'aide pour sélectionner la date.Jim,
Je reçois toujours un argument qui doit être numérique{1} lors de l'accès ou de l'évaluation de 'Format' , Format/*###*/(:Login Date, "mm/dd/yyyy")Re : Besoin d'aide pour sélectionner la date.Oups, mon erreur.Le [Row()] est le problème.Utiliser
dt << select where( Format( :Login Date, "mm/dd/yyyy" ) <= ALstartDT );
Re : Besoin d'aide pour sélectionner la date.Jim,
Lorsque j'essaie de convertir :Login Date en chaîne, je reçois l'erreur indiquant que l'argument doit être numérique{1} lors de l'accès ou de l'évaluation de 'Format', Format/*###*/:Login Date [Row()], "jj/mm/aaaa")
Salutations,
Wayne
Re : Besoin d'aide pour sélectionner la date.Parce que vous avez défini votre variable "ALstartDT" sur une chaîne
ALstartDT = Uppercase( Format( TempstartDT, "mm/dd/yyyy" ) );
(La fonction Format() renvoie une valeur de chaîne)
Vous devez ensuite convertir votre ":Login Date" en chaîne également... le ":Login Date", je suppose, est une colonne de date JMP.
dt6 << Select where( Format(:Login Date[row()], "mm/dd/yyyy") >= ALstartDT, current selection( "extend" ) );
Re : Besoin d'aide pour sélectionner la date.Jim,
J'utilise 14.1.J'ai essayé tellement de façons différentes de formater mes dates et je n'ai pas trouvé le bon format.Vous trouverez ci-dessous plus de mon code.Je passe une variable d'une boîte de date.Ma date de connexion à l'importation Excel ressemble à
Veuillez vérifier si je transmets correctement l'ALstartDT et toute recommandation sur la façon de formater correctement la date pour que la sélection fonctionne.
Merci,
Wayne
Effacer le journal ();
Noms par défaut ici (1);
runScript = Expr(
TempstartDT = démarrer << get;
TempendDT = fin << get;
ALstartDT = Majuscules (Format (TempstartDT, "mm/jj/aaaa"));
ALendDT = Majuscules (Format (TempendDT, "mm/jj/aaaa"));
);
// Écrit par Vince Faller
// Fait apparaître un calendrier sur une numeditbox (par défaut : maintenant)
// Notez que cela ne fonctionne que sur JMP 11 ou supérieur
dateBox = Fonction (
{timething = Aujourd'hui()},
{nouvelle boîte},
nouvelle boîte = Eval (
Remplaçant(
Nom Expr(
Zone d'édition du numéro (
timething, // Eval(Sub()) à cause de la bizarrerie de JMP
10, // J'en ai juste besoin car JMP ne définit pas de largeur par défaut
< Fonction( {soi},
{},
Si (est manquant (self << get ),
self << Set( Eval( DUMMY ) ) // Définit la date sur l'argument timething
)
)
),
<< Définir le format (Format( "m/d/yh:m:s", 23, 0 ) ); // Crée le format datetime pour la boîte (donne le calendrier)
)
),
Expr (DUMMY), chronométrage
)
);
nouvelle boîte ;
);
nw =
Nouvelle fenêtre( "Extraction de table de données SQL",
LineUpBox(NCol(2),
TextBox("Start DateTime"), start = dateBox(Aujourd'hui()- InDays(12)),
TextBox("End DateTime"), fin = dateBox(),
ButtonBox("Annuler", ButtonPressed = "Annuler"), ButtonBox("Get Data", ButtonPressed = "Get Data") //stocke l'entrée de l'utilisateur en appuyant sur le bouton dans une variable
));
attendez (15);
//Si les instructions doivent agir en fonction du bouton sur lequel vous avez appuyé sur l'invite de date
Si ( ButtonPressed == "Annuler", nw << Fermer la fenêtre);
Si ( ButtonPressed == "Annuler", Stop());
if ( ButtonPressed == "Obtenir des données", runScript);
Si ( ButtonPressed == "Obtenir des données", runScript2);
Si ( ButtonPressed == "Obtenir des données", nw << Fermer la fenêtre);
Légende("La requête est en cours d'exécution");
attendre(0);
Noms par défaut ici (1);
Utiliser pour toutes les feuilles( 1 ),
Concaténer des feuilles de calcul (0),
Créer une colonne de concaténation ( 0 ),
Paramètres de la feuille de calcul (
1,
A des en-têtes de colonnes (1),
Nombre de lignes dans les en-têtes ( 1 ),
Les en-têtes commencent sur la ligne ( 1 ),
Les données commencent sur la ligne ( 2 ),
Les données commencent sur la colonne (1),
Les données se terminent sur la ligne ( 0 ),
Les données se terminent sur la colonne ( 0 ),
Lignes étendues répliquées ( 1 ),
En-têtes étendus répliqués (0),
Supprimer les lignes cachées( 1 ),
Supprimer les colonnes masquées ( 1 ),
Supprimer les colonnes vides ( 1 ),
Traiter comme une hiérarchie ( 0 ),
Pile de séries multiples (0),
Importer les couleurs des cellules ( 0 ),
Détection de colonne limite ( 0 ),
Chaîne de séparateur de colonne( "-" )
);
);
//Colonne ("Date de connexion") << type de données (numérique) << format("m/d/y");
dt6 << Sélectionner où (:Date de connexion >= ALstartDT, sélection actuelle ("étendre"));
dt7 << sélectionner où (est manquant (: ID d'étiquette)) << supprimer les lignes ;
selrows=dt7 << obtenir les lignes où (:Formatted Entry == "ND");
dt7:Entrée formatée[selRows]="0";
dt7 : entrée formatée << type de données (numérique) ;
Re : Besoin d'aide pour sélectionner la date.Pour développer @Mark_Bailey La réponse de ici est un exemple montrant la constante de date utilisée.
dt = open("$SAMPLE_DATA\TechStock.jmp");
dt << select where(Date <= 05Jan2001);
Pour plus de conseils sur les dates, voir Utilisation de dates, d'heures, de dates-heures et de durées dans JMP .
Re : Besoin d'aide pour sélectionner la date.Notez que vous pouvez utiliser directement des valeurs de date littérales (constantes) sans avoir besoin de convertir entre les chaînes de caractères et les valeurs numériques. Le formulaire est JJmmAAAA:HH:MM:SS.S . (Vous n'utilisez ce formulaire que nécessaire, en omettant le côté droit.) Ainsi, par exemple, je pourrais saisir directement la valeur numérique correcte pour 8 heures du matin aujourd'hui sous la forme :
29Jan2019:08:00
L'éditeur de script reconnaît cette valeur sous la forme d'un nombre avec un code couleur si la fonctionnalité est activée.
Re : Besoin d'aide pour sélectionner la date.Voici un exemple de Select Where, dans la même structure que votre Select Where noté.Ça marche.Je pense donc que vous devez éventuellement utiliser le débogueur JSL pour parcourir votre code et découvrir où se trouvent le(s) problème(s).
names default to here(1);
dt= open("$SAMPLE_DATA/Aircraft Incidents.jmp");
MyList = {"Accident", "Incident" };
dt << Select where( (Contains( MyList, :Investigation Type) & :Location == "Eden, UT"));
dt << Select where( format(Column( "Event Date" )[Row()], "M/D/Y" ) == "01/05/2001", current selection("extend"));
J'ai extrait le code de JMP 11.La "sélection actuelle ("extend")" a été ajoutée dans JMP 12, donc le JSL ne fonctionne pas correctement dans JMP 11, mais il fonctionne après cette version.
Re : Besoin d'aide pour sélectionner la date.Jim,
J'ai essayé votre suggestion et les données n'ont toujours pas été filtrées.Ci-dessous, ce que j'ai utilisé.
Salutations,
Wayne
Re : Besoin d'aide pour sélectionner la date.Les valeurs de date JMP sont des valeurs numériques.Si vous souhaitez comparer une valeur de « Date de connexion » à une valeur de date, vous devez soit convertir la valeur de « Date de connexion » en chaîne de caractères et la compresser en « 01/07/2018 », soit la conserver comme valeur de date. numérique et convertissez « 01/07/2018 » en une valeur numérique date/heure.Le script ci-dessous effectue la sélection en utilisant l'ancienne méthodologie
Column( "Login Date" ) << data type( numeric ) << Format( "m/d/y" );
MyList = {"HCDS", "HCDS;LENNY", "HCDS; WACKER", "HCDS; GOLDEN SAMPLE", "HCDS; ALJ", "HCDS; LENNY C",
"HCDS; WACKER; GOLDEN SAMPLE", "HCDS; WACKER; PRE-MOVE"};
dt6 << Select where( (Contains( MyList, :Site ID )) & :Analysis == "G4" );
dt6 << Select where( format(Column( "Login Date" )[Row()], "M/D/Y" ) == "01/07/2018", current selection( "extend" ) );
dt7 = dt6 << Subset( Output Table( "Aloha Lenny Assay Subset" ), Selected Rows( 1 ), Selected Columns( 0 ) );
dt7 << select where( Is Missing( :Label ID ) ) << delete rows;
selrows = dt7 << get rows where( :Formatted Entry == "ND" );
dt7:Formatted Entry[selRows] = "0";
dt7:Formatted Entry << data type( Numeric );