dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); ne marche pasJ'ai d'autres scripts où j'utilise une zone de date du calendrier pour obtenir une plage de dates afin de sélectionner des lignes dans une table où> = la plage de dates et cela fonctionne. J'ai un script où cela ne fonctionnera pas.
Je stocke la date dans un startDT2 varaible. Le format correspond à ce qui est dans le tableau après avoir divisé le tableau. Ci-dessous le code.
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
CharDate3= Uppercase(Format(TempstartDT, "mm/dd/yyyy"));
startDT2 = CharDate3;
dt5 << Select where (:LOGIN_DATE >= informat(startDT2,"mm/dd/yyyy"));
Lorsque je lance le code dans le débogueur, je vois que startDT2 est 01/29/2019 lorsque je sélectionne cette date. Les données ont des lignes où la colonne LOGIN_DATe a 01/29/2019. Il finit par ignorer la sélection où et apporter toutes les données.
Est-ce que quelqu'un sait pourquoi le Select Where ne fonctionne pas?
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nMerci de votre aide. J'ai fini par avoir besoin de créer un sous-ensemble des données, puis de sélectionner l'élément sélectionné.
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nQue renvoie Informat ()?
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nCe code fonctionne. J'ai entré une date antérieure au 19/12/2018 et les deux lignes ont été mises en évidence.
dt5 = New Table( "Test", Add Rows( 2 ),
New Column( "PRODUCT_CODE", Character( 6 ), "Nominal",
Set Values( {"11111", "222"} ), Set Display Width( 103 )
),
New Column( "LOT_NUMBER", Character, "Nominal",
Set Values( {"11111-01", "222-01"} ), Set Display Width( 88 )
),
New Column( "LOGIN_DATE", Numeric, "Continuous",
Format( "m/d/y", 12 ), Input Format( "m/d/y" ),
Set Values( [3628022400, 3631564800] ),
Set Display Width( 82 )
),
New Column( "Value", Numeric, "Nominal", Format( "Best", 12 ),
Set Values( [0.0028, 0.001] ), Set Display Width( 91 )
)
);
nw = new window("test", modal(),
start = number edit box(),
start << Set Format( Format( "m/d/y", 12 ) );
);
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
Peut-être mettre des instructions show () dans votre code pour voir ce qu'il fait?
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nPRODUCT_CODE LOT_NUMBER LOGIN_DATE VALUE_1
11111 12345-01 19/12/2018 0.0028
Voir fichier joint.
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nToutes les dates sont exprimées en secondes, mais vous pouvez choisir le mode d'affichage souhaité (c.-à-d. M / j / y). Pouvez-vous poster un petit échantillon de vos données?
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nTempstartDT est en secondes. Le CharDate3 le convertit en mm / jj / aaaa. La colonne LOGIN_DATE est numérique au format m / j / y. La suggestion ci-dessus ne fonctionne pas.Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nQuel est le format de la colonne LOGIN_DATE? Si c'est numérique (c.-à-d. La date) alors vous n'avez pas besoin de convertir en caractère, puis de revenir à la date numérique.
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
Re: dt5 << Sélectionnez où (: LOGIN_DATE> = informat (startDT2, "mm / jj / aaaa")); fait nLa zone de date du calendrier capture une valeur numérique qui représente le nombre de secondes écoulées depuis le 1er janvier 1904 à minuit.
La comparaison que vous souhaitez effectuer ne doit pas utiliser une chaîne de caractères telle que produite par les fonctions de formatage.