Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos.
Tengo un problemilla con un tema de fechas. La cuestión es la siguiente:
Tengo un QVD, donde almaceno el histórico de datos de venta, y la fecha de cada pedido. La idea es cargar en el documento todo el QVD, a excepción de los datos del mes en curso, que se cargaran directamente de la BBDD.
Para ello hago lo siguiente:
// Busco la máxima fecha del QVD y la minima a cargar
AÑO_ACTUAL_MENOS_2=Year(ReloadTime())-2;
LET Fecha_Inicio = MakeDate($(AÑO_ACTUAL_MENOS_2)) ;
MAX_FECHA:
NoConcatenate
LOAD
max(DATE) as MAX_FECHA
FROM
venta.qvd (qvd);
LET MAX_FECHA = PEEK ('MAX_FECHA', 0 , 'MAX_FECHA'); // meto la meto en una variable
DROP TABLE MAX_FECHA ;
LET Fecha_ref = monthstart(date($(MAX_FECHA))) ; // calculo el primer dia del mes del máximo mes
ventas_TMP:
NoConcatenate
LOAD
cliente,
DATE,
..
FROM
venta.qvd (qvd)
where date(DATE,'DD/MM/YYYY') < $(Fecha_ref)
AND date(DATE) >= $(Fecha_Inicio) ;
Tras lanzar esto no me carga ningún dato. Cominenzo a mirar y veo que si en un objeto de texto pongo:
= date($(Fecha_ref)) , me da como fecha 30/12/1899
= date((Fecha_ref)) , me da como fecha 01/06/2014 (Que es la fecha correcta)
= $(Fecha_ref) , me da como resultado 8,2754......
¿Alguna idea?
Buenas Juan Antonio,
quizás sea un problema de diferencia de formatos de fecha entre el valor de las variables y el qvd.
Yo declaro las variable en formato numérico así:
LET Fecha_Inicio = num( Floor(MakeDate($(AÑO_ACTUAL_MENOS_2)))) ;
LET Fecha_ref = num( Floor(monthstart(date(PEEK ('MAX_FECHA', 0 , 'MAX_FECHA'))))) +1 ;
Y entonces la carga del qvd la haría así (en mi fichero he puesto el nombre de la columna 'Fecha' en lugar de 'Date' porque no me gusta nombrar columnas igual que funciones implementadas), también verás que hago un Precedent Load para ajustar el formato de la fecha:
Directory;
LOAD
date(Fecha,'DD/MM/YYYY') As Fecha,
Cliente;
LOAD
Fecha,
Cliente
FROM
Datos.qvd
(qvd)
where Fecha < $(Fecha_ref) AND Fecha >= $(Fecha_Inicio);
Espero que pueda servirte de ayuda.
Un saludo
Hola,
LET Fecha_ref = monthstart(date($(MAX_FECHA))) ; // calculo el primer dia del mes del máximo mes
ponlo así:
LET Fecha_ref = monthstart(date(MAX_FECHA)) ;
y luego en:
venta.qvd (qvd)
where date(DATE,'DD/MM/YYYY') < date(Fecha_ref)
AND date(DATE) >= $(Fecha_Inicio) ;
Saludos,
Pero al poner
LET Fecha_ref = monthstart(date($(MAX_FECHA))) ;
como
LET Fecha_ref = monthstart(date(MAX_FECHA)) ;
No me lo reconoce MAX_FECHA como variable, sino como campo;
Y lo mismo me ocurre con :
venta.qvd (qvd)
where date(DATE,'DD/MM/YYYY') < date(Fecha_ref)
¿?
Si disculpa,
Yo me lo he creado así:
AÑO_ACTUAL_MENOS_2=Year(ReloadTime())-2;
LET Fecha_Inicio = MakeDate($(AÑO_ACTUAL_MENOS_2));
LET vDATEMAX = today();
LET vMAX_FECHA = PEEK ('vDATEMAX', 0 , 'vDATEMAX');
LET Fecha_ref = monthstart(date(vDATEMAX)) ;
Lo tendrías que acoplar a tu proyecto.
Espero que te sirva.
Pero no veo cual seria la diferencia, ya que a fin de cuentas, tendría una fecha almacenada en una variable, que tendría que evaluar al cargar del QVD. ¿No?
Buenas Juan Antonio,
quizás sea un problema de diferencia de formatos de fecha entre el valor de las variables y el qvd.
Yo declaro las variable en formato numérico así:
LET Fecha_Inicio = num( Floor(MakeDate($(AÑO_ACTUAL_MENOS_2)))) ;
LET Fecha_ref = num( Floor(monthstart(date(PEEK ('MAX_FECHA', 0 , 'MAX_FECHA'))))) +1 ;
Y entonces la carga del qvd la haría así (en mi fichero he puesto el nombre de la columna 'Fecha' en lugar de 'Date' porque no me gusta nombrar columnas igual que funciones implementadas), también verás que hago un Precedent Load para ajustar el formato de la fecha:
Directory;
LOAD
date(Fecha,'DD/MM/YYYY') As Fecha,
Cliente;
LOAD
Fecha,
Cliente
FROM
Datos.qvd
(qvd)
where Fecha < $(Fecha_ref) AND Fecha >= $(Fecha_Inicio);
Espero que pueda servirte de ayuda.
Un saludo
Hola,
Sorry, en principio creo que el problema lo tenías en la fecha_ref (ya que lo comparas con un campo de tabla con formato dd/mm/yyyy y daba por entendido que ese campo estaba bien) pero Alex tiene razon y a lo mejor el problema lo tienes en algun formato de fecha del QVD.
Si no lo solucionas, si quieres sube el QVD y esta tarde le doy una vuelta.
Saludos,
Finalmente tuve que modificar todos los formatos para que fuesen numéricos y ponerles el Date() para que me los reconociese correctamente.