PDA

Ver la Versión Completa : Quiebre por fecha en reporte


oscarac
18-05-2011, 04:41:59
buenas noches....

estoy haciendo un reporte en cual debe quebrar por fecha, el problema que tengo es que las fechas me las captura asi


11/05/2011 14:24:00
11/05/2011 14:24:00
11/05/2011 14:24:00
11/05/2011 14:26:00
11/05/2011 14:26:00
11/05/2011 14:26:00
11/05/2011 14:28:00


Entonces en el reporte coloque una banda qrGroup en la cual puse la expresion qryConsumo.fechaDoc

el asunto es que me muestra en 3 grupos (cuando deberia ser 1), me esta considerando la hora tambien...

como puedo hacer para que en la consulta me salga solo la fecha y no la hora?

en la tabla (MS SQL SERVER 2000) tengo el campo en smalldatetime

alguna sugerencia?

gracias

Caral
18-05-2011, 04:55:04
Hola
Probaste Display format?
Saludos

oscarac
18-05-2011, 04:56:47
si, ya probe con DisplayFormat

este es el query que hago


Select C.Tdc, C.Doc, C.f_Doc, C.Hora, C.Aux, T.Descl As Trabajador, C.TOT, A.Descl As Producto
from (((tblConsumoC C
Left Join tblConsumoD D on (C.TDC = D.TDC and C.DOC = D.DOC))
Left Join tblTrabajador T on C.Aux = T.KOD)
Left Join TblArticulo A on D.KOD = A.KOD)
Where C.f_doc >= '01/05/2011' and C.f_doc <= '17/05/2011'
Order by C.AUX, C.f_DOC


quiza en el query deba truncar algo?

Caral
18-05-2011, 04:59:51
Hola
No veo nada raro en el select, me parece que el asunto esta en como se guarda la fecha y como se muestra.
Como usaste el display format?, en donde ?.
Saludos

oscarac
18-05-2011, 05:02:34
el select no tiene nada de malo, es mas me muestra la informacion pero como mencione antes, me la muestra con hora, me gustaria que solo me muestre la fecha

el displayformat lo use en el campo del query

Caral
18-05-2011, 05:04:45
Hola
Intenta algo como esto en el evento beforeopen del query:
procedure TRFactura.ADOQuery1BeforeOpen(DataSet: TDataSet);
begin
AdoQuery1Fecha.DisplayFormat := 'dd mm yyyy';
end;
A ver que pasa.
Saludos

oscarac
18-05-2011, 05:10:40
mmmm
no no funciona...

osea basicamente quiero que el "quiebre" (qrGroup -> expresion = qryConsumoTrabajador.f_Doc)

solo me coja la fecha y no la hora

Caral
18-05-2011, 05:13:45
Hola
Trataste con ShortDateFormat antes del query ?.
ShortDateFormat := 'yyyy/mm/dd';
Saludos

oscarac
18-05-2011, 05:18:53
si ya probe y nada...

que raro

Caral
18-05-2011, 05:25:31
Hola
Se menciona que la fecha en sql server se guarda en formato fecha hora.
Tambien se dice que se puede separar al ser mostrado como float.
El asunto es mostrar el dato por medio de un parametro con el uso de INT()
Segun entiendo.
Saludos

oscarac
18-05-2011, 05:30:54
buscando en el internet encontre una solucion...
la coloco aqui quiza a alguien le pueda ayudar


Select C.Tdc, C.Doc, dbo.SoloFecha(C.f_Doc) As f_DOC, C.Hora, C.Aux, T.Descl As Trabajador, C.TOT, A.Descl As Producto
from (((tblConsumoC C
Left Join tblConsumoD D on (C.TDC = D.TDC and C.DOC = D.DOC))
Left Join tblTrabajador T on C.Aux = T.KOD)
Left Join TblArticulo A on D.KOD = A.KOD)
Where C.f_doc >= '01/05/2011' and C.f_doc <= '17/05/2011'
order by C.Aux, c.f_doc


y la funcion soloFecha es como sigue


SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER FUNCTION dbo.SoloFecha(@Fecha datetime)
RETURNS datetime AS
BEGIN
declare @FechaAux datetime

set @FechaAux = @Fecha
set @FechaAux = dateAdd(hh, -datePart(hh, @Fecha), @FechaAux)
set @FechaAux = dateAdd(mi, -datePart(mi, @Fecha), @FechaAux)
set @FechaAux = dateAdd(ss, -datePart(ss, @Fecha), @FechaAux)
set @FechaAux = dateAdd(ms, -datePart(ms, @Fecha), @FechaAux)
return @FechaAux
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO



eso me jala solo las fechas.....:p:p:p:p

Caral
18-05-2011, 05:33:21
Hola
Me alegro que lo solucionaras.
Esta podria ser otra solucion:

var Fecha1, Fecha2: TDateTime;
begin
Fecha1:= 01/05/2011;
Fecha2:= 17/05/2011;
TuQuery.Sql.Text:='
Select C.Tdc, C.Doc, C.f_Doc, C.Hora, C.Aux, T.Descl As Trabajador, C.TOT, A.Descl As Producto
from (((tblConsumoC C
Left Join tblConsumoD D on (C.TDC = D.TDC and C.DOC = D.DOC))
Left Join tblTrabajador T on C.Aux = T.KOD)
Left Join TblArticulo A on D.KOD = A.KOD)
Where C.f_doc >= :f1 and C.f_doc <= :f2
Order by C.AUX, C.f_DOC'
TuQuery.Parameters[0].AsDateTime := INT(Fecha1.Date);
TuQuery.Parameters[1].AsDateTime := INT(Fecha2.Date);
end;

Saludos