Bonjour,
Je fait un etat dans lequel j'affiche une qte par semaine.
Dans ma bdd j'ai le n° de semaine et je voudrais indiquer en plus la date de debut de semaine et la date de fin.
Comment faire cela SVP
Bonjour,
Je fait un etat dans lequel j'affiche une qte par semaine.
Dans ma bdd j'ai le n° de semaine et je voudrais indiquer en plus la date de debut de semaine et la date de fin.
Comment faire cela SVP
Voilà 3 fonctions en VB6 que tu dois pouvoir traduire en Crystal et qui pourront t'être utiles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Function DateSemaine(ByVal A As Integer, ByVal S As Integer, J As Integer) As Date Dim NJ&, Js% NJ = NombreDate(Format(Abs(A), "0000") & "0101") & Mid("-", Sgn(A) + 2) ' Jour de l'an Js = Int(7.0001 * FP(NJ / 7)) + 1 ' Jour de la Semaine DateSemaine = DateNombre(NJ - Js + 7 * (S - 1) + 7 * Abs(Js >= 4) + J) End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Function NombreDate(ByVal Jour) As Long Dim J%, M%, A% Dim NJ& If VarType(Jour) = vbDate Then Jour = Format(Jour, "YYYYMMDD") End If J = Val(Mid(Jour, 7, 2)) M = Val(Mid(Jour, 5, 2)) A = Val(Mid(Jour, 9, 1) & Mid(Jour, 1, 4)) If M < 3 Then A = A - 1: M = M + 12 NJ = Int(A * 365.25) + Int(30.6 * (M + 1)) + J - 63 - 365 If NJ > 577747 Then NJ = NJ + 2 - Int(A / 100) + Int(Int(A / 100) / 4) NJ = NJ - 694388 + 63 + 365 - 2 ' -693962 NombreDate = NJ End FunctionBon courage ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Function DateNombre(ByVal NJ As Long) As Date Dim J%, M%, A% Dim N& NJ = NJ + 693962 If NJ > 577737 Then ' Grégorien A = Int((NJ + 365) / 365.2425) N = Int(A * 365.25) - 305 - Int(A / 100) + Int(Int(A / 100) / 4) + 2 Else ' Julien A = Int((NJ + 365) / 365.25) N = Int(A * 365.25) - 305 End If N = NJ - N + 1 NJ = N If N < 1 Then N = N + 365 + Abs(AnneeBissextile(A)) M = Int((N - 0.5) / 30.61) + 3 J = N - Int(30.6 * (M - 3) + 1.5) + 1 If NJ < 1 Then If M > 12 Then M = M - 12 Else A = A - 1 ' DateNombre = Format(Abs(A), "0000") & Format(M, "00") & Format(J, "00") & Mid("-", Sgn(A) + 2) DateNombre = DateSerial(A, M, J) End Function
Excuse moi ..
Ma réponse est un peu hors sujet ...
Car tu as tout ce qu'il faut en crystal :
DateValue, WeekDay.
Pour arriver à faire ce que tu veux ...
Ma réponse s'adresse plutôt au développeur qui n'utilise pas crystal et qui ne dispose pas des fonctions précitées ....
Faut que j'arrête de trainer à la taverne, ca m'embrouille l'esprit ...
Ben en fait c'est le contraire que je veux.
J'ai le n° de semaine et je veux le transformer en 2 dates (1er jour et dernier jour.
Ex:
sem 1 du 05/01/2004 au 11/01/2004
sem 2 du 12/01/2004 au 18/01/2004 etc...
C'est bien là le rôle de la fonction DateSemaine
A=Année
S=Semaine
J=Jour de 1 à 7
Désolé mais je ne comprend pas, la WeekDay transforme une date en semaine. non ?
Moi c'est le contraire je veux transformé un numero de semaine en date jj/mm/aaaa.
Si on peut faire ça avec WeekDay, peux-tu m'eclairer sur la syntaxe STP.
Je ne parle pas de la fonction intrinsèque Crystal WeekDay, mais de la fonction que je t'ai envoyé en VB6 qui elle transforme bien un numéro de semaine en date ....
Au risque de paraître nullos, comment fais-tu pour créer une nouvelle fonction dans crystal... + je ne suis pas sur de savoir la traduire de VB6 en crystal... desolé
Tu bosses en quel langage ?? :
???? Tu me pose une colle, j'utilise tout simplement crystal 8.5 pour créer des etats à partir d'une bdd sql server 2000... c'est tout ce que je peut te dire
Tu ne peux pas créer de DLL à l'extérieur de crystal ...
Tu ne peux pas créer de fonctions dans Crystal (possible en Version 10) ...
Je ne sais pas si les fonctions créées en SQL2000 peuvent être utilisées
dans crystal ...
T'es un peu bloqué ....
Il ne te reste plus qu'à transformer ces fonctions en formules Crystal en utilisant des variables globales à la place des paramètres ...
Mais c'est un peu galère ...
Tu ne vois vraiment pas comment faire ??
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager