dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); No funcionaTengo otros scripts en los que estoy usando un cuadro de fecha de calendario para obtener un rango de fechas para seleccionar filas de una tabla donde> = el rango de fechas y funciona. Tengo un script donde no funcionará.
Estoy almacenando la fecha en un inicioDT2 varaible. El formato coincide con lo que está en la tabla después de dividir la tabla. A continuación se muestra el código.
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"));
Cuando ejecuto el código en el depurador, puedo ver que startDT2 es 01/29/2019 cuando selecciono esa fecha. Los datos tienen filas donde la columna LOGIN_DATe tiene 01/29/2019. Termina ignorando la selección de dónde y trayendo todos los datos.
¿Alguien sabe por qué el Select Where no funciona?
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace nGracias por tu ayuda. Terminé necesitando subcontratar los datos primero y luego la selección donde funcionó.
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace n¿Qué devuelve Informat ()?
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace nEste código funciona. Ingresé una fecha anterior al 19/12/2018 y ambas filas estaban resaltadas.
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);
¿Tal vez poner algunas declaraciones show () en su código para ver qué está haciendo?
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace nPRODUCT_CODE LOT_NUMBER LOGIN_DATE VALUE_1
11111 12345-01 19/12/2018 0.0028
Ver archivo adjunto.
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace nTodas las fechas están en segundos, pero puede elegir cómo desea que se muestren (es decir, m / d / a). ¿Puedes publicar una pequeña muestra de tus datos?
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace nTempstartDT está en segundos. El CharDate3 lo convierte a mm / dd / aaaa. La columna LOGIN_DATE es numérica con el formato de m / d / y. La sugerencia anterior no funciona.Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace n¿Cuál es el formato de la columna LOGIN_DATE? Si es numérico (es decir, fecha), no es necesario convertirlo en caracteres y luego volver a la fecha numérica.
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
Re: dt5 << Seleccione where (: LOGIN_DATE> = informat (startDT2, "mm / dd / aaaa")); hace nEl cuadro de fecha del calendario captura un valor numérico que representa el número de segundos desde la medianoche del 1 de enero de 1904.
La comparación que desee realizar no debe utilizar una cadena de caracteres como la que producen las funciones de formato.