dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); non funzionaHo altri script in cui sto usando una casella data del calendario per ottenere un intervallo di date per selezionare le righe da una tabella dove> = l'intervallo di date e funziona. Ho uno script in cui non funzionerà.
Sto memorizzando la data in un startDT2 vistoso. Il formato corrisponde a ciò che è nella tabella dopo aver diviso la tabella. Di seguito è riportato il codice.
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"));
Quando eseguo il codice nel debugger, posso vedere che startDT2 è il 29/01/2019 quando seleziono quella data. I dati hanno righe in cui la colonna LOGIN_DATe è stata 01/29/2019. Finisce per ignorare la selezione e l'inserimento di tutti i dati.
Qualcuno sa perché il Select Where non funziona?
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nGrazie per l'aiuto. Alla fine ho dovuto inserire i dati prima di quelli selezionati.
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nCosa restituisce Informat ()?
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nQuesto codice funziona. Ho inserito una data precedente al 19/12/2018 e entrambe le righe sono state evidenziate.
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);
Magari inserire alcune dichiarazioni show () nel tuo codice per vedere cosa sta facendo?
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nPRODUCT_CODE LOT_NUMBER LOGIN_DATE VALUE_1
11111 12345-01 19/12/2018 0,0028
Guardare il file allegato.
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nTutte le date sono espresse in secondi, ma puoi scegliere come visualizzarle (ad es. M / g / a). Puoi pubblicare un piccolo campione dei tuoi dati?
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nTempstartDT è in secondi. CharDate3 lo converte in mm / gg / aaaa. La colonna LOGIN_DATE è numerica con il formato di m / g / anno. Il suggerimento di cui sopra non funziona.Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nQual è il formato della colonna LOGIN_DATE? Se è numerico (cioè la data), non è necessario convertirlo in carattere e quindi tornare alla data numerica.
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
Re: dt5 << Seleziona dove (: LOGIN_DATE> = informat (startDT2, "mm / gg / aaaa")); fa nLa casella della data del calendario acquisisce un valore numerico che rappresenta il numero di secondi da mezzanotte, 1 gennaio 1904.
Il confronto che vuoi fare non dovrebbe usare una stringa di caratteri prodotta dalle funzioni di formattazione.