dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); funktioniert nichtIch habe andere Skripts, bei denen ich ein Kalender-Datumsfeld verwende, um einen Datumsbereich zu erhalten, um Zeilen aus einer Tabelle auszuwählen, in denen> = der Datumsbereich und es funktioniert. Ich habe ein Skript, bei dem es nicht funktioniert.
Ich speichere das Datum in einem variablen startDT2. Das Format stimmt mit dem überein, was in der Tabelle steht, nachdem ich die Tabelle aufgeteilt habe. Unten ist der 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"));
Wenn ich den Code im Debugger ausführen, kann ich sehen, dass startDT2 der 29.01.2014 ist, wenn ich dieses Datum auswähle. Die Daten haben Zeilen, in denen die Spalte LOGIN_DATe den 29.01.2014 aufweist. Am Ende ignoriert es die Auswahl wo und holt alle Daten ein.
Weiß jemand, warum das Select Where nicht funktioniert?
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nDanke für deine Hilfe. Am Ende musste ich die Daten zuerst subsetieren, dann die Auswahl, wo gearbeitet wurde.
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nWas gibt Informat () zurück?
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nDieser Code funktioniert. Ich habe ein Datum vor dem 19.12.2014 eingegeben und beide Zeilen wurden hervorgehoben.
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);
Vielleicht fügen Sie einige show () - Anweisungen in Ihren Code ein, um zu sehen, was er tut.
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nPRODUCT_CODE LOT_NUMBER LOGIN_DATE VALUE_1
11111 12345-01 19.12.2014 0,0028
Siehe angehängte Datei.
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nAlle Datumsangaben sind in Sekunden, Sie können jedoch auswählen, wie sie angezeigt werden sollen (z. B. m / d / y). Können Sie eine kleine Auswahl Ihrer Daten posten?
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nTempstartDT ist in Sekunden. Das CharDate3 konvertiert es in mm / tt / jjjj. Die Spalte LOGIN_DATE ist numerisch mit dem Format m / d / y. Der obige Vorschlag funktioniert nicht.Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nWelches Format hat die LOGIN_DATE-Spalte? Wenn es numerisch ist (dh Datum), müssen Sie nicht in ein Zeichen und dann wieder in ein numerisches Datum konvertieren.
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
Re: dt5 << Auswahl wo (: LOGIN_DATE> = informat (startDT2, "mm / tt / jjjj")); tut nDas Kalenderdatum-Feld erfasst einen numerischen Wert, der die Anzahl der Sekunden seit Mitternacht (1. Januar 1904) darstellt.
Der Vergleich, den Sie vornehmen möchten, sollte keine Zeichenfolge verwenden, wie sie von den Formatierungsfunktionen erzeugt wird.