DTE PART

mercoledì 03 novembre 2010 - 14.00
Tag Elenco Tags  VB.NET  |  Windows XP  |  SQL Server 2005  |  Office 2003  |  Internet explorer 8.0  |  Crystal Reports 8.5

m.lusardi Profilo | Newbie

Buongiorno a tutti,
ho un problema con un report in cui faccio somme settimanali di ordini utilizzando la funzione datepart per la selezione del numero della setimana.
Il problema è il seguente:
inserendo ordini previsionali con date future se queste sono relative alla stessa settimana dell'anno in corso vengono sommate, falsando quindi gli ordini relativi all'anno in corso.
Es. ordine 100 per 05/11/2010 settimana 44
ordine 200 per 31/10/2011 settimana 44
Totale ordine: 300 per settimana 44
In realtà il totale è solo 100.

Come posso risolvere il problema senza stravolgere il report????

Grazie!

freeteo Profilo | Guru

Ciao,
puoi postare la formula che usi? Oppure il report stesso, magari con dei dati fittizi giusto per provarlo...

Di primo acchito direi che potresti anche controllare di essere nello stesso anno quando fai la somma, ma forse con la formula sottomano riesco a capire meglio come si può fare.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

m.lusardi Profilo | Newbie

Nel frattempo ho trovato una soluzione accettabile: recupero il primo e l'ultimo giorno della settimana relativa a quell'anno e faccio in modo che le somme siano entro quel limite.
Grazie comunque.

freeteo Profilo | Guru

>Nel frattempo ho trovato una soluzione accettabile: recupero
>il primo e l'ultimo giorno della settimana relativa a quell'anno
>e faccio in modo che le somme siano entro quel limite.
ok magari se puoi posta la formula che usi, in modo che possa essere d'aiuto a qualcuno se si trovasse a passare per questo thread...
Grazie.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

m.lusardi Profilo | Newbie

La formula applicata per trovare il primo giorno di una settimana è:
If DayOfWeek({@gg_sett2}) = 2 Then
{@gg_sett2}
Else If DayOfWeek({@gg_sett2}) = 3 Then
dateadd ("d",-1,{@gg_sett2})
Else If DayOfWeek({@gg_sett2}) = 4 Then
dateadd ("d",-2,{@gg_sett2})
Else If DayOfWeek({@gg_sett2}) = 5 Then
dateadd ("d",-3,{@gg_sett2})
Else If DayOfWeek({@gg_sett2}) = 6 Then
dateadd ("d",-4,{@gg_sett2})
Else If DayOfWeek({@gg_sett2}) = 7 Then
dateadd ("d",-5,{@gg_sett2})
Else If DayOfWeek({@gg_sett2}) = 1 Then
dateadd ("d",-6,{@gg_sett2})

dove per me @gg_sett2 è una data calcolata.

La formula per trovare l'ultimo giorno della settimana è:
Local DateTimeVar d := DateTime (DatePart ("yyyy", {@gg_sett2}), DatePart ("m", {@gg_sett2}), DatePart ("d", {@gg_sett2}), 23, 59, 59);

If DayOfWeek({@gg_sett2}) = 2 Then
dateadd ("d",+6,d)
Else If DayOfWeek({@gg_sett2}) = 3 Then
dateadd ("d",+5,d)
Else If DayOfWeek({@gg_sett2}) = 4 Then
dateadd ("d",+4,d)
Else If DayOfWeek({@gg_sett2}) = 5 Then
dateadd ("d",+3,d)
Else If DayOfWeek({@gg_sett2}) = 6 Then
dateadd ("d",+2,d)
Else If DayOfWeek({@gg_sett2}) = 7 Then
dateadd ("d",+1,d)
Else If DayOfWeek({@gg_sett2}) = 1 Then
d;
dove per me @gg_sett2 è una data calcolata.
Nelle somme invece inserisco la seguente formula che sarà specifica per ogni giorno della settimana:
DatePart ("ww",{$data},2,2 )={@sett2} and WeekdayName (DayOfWeek ({$data}))='lunedì'
and {$data}>={@first_day2} and {$data}<={@last_day2}
dove $data è una data di consegna, $first_day2 è il primo giorno relativo a quella settimana specifica e $last_day2 è l'ultimo giorno di quella settimana.

Spero di esservi stati d'aiuto.
Grazie!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5