Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

print a weeknumber in a textfield

Posted on 2000-03-09
15
Medium Priority
?
326 Views
Last Modified: 2012-05-04
How I'll able to print the current weeknumber on an Visual Basic application.

Example:
when teh date is 3 januari
the application must print week 1
in a textfield

Thx in advance
Der Freak
0
Comment
Question by:FREAK
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 3
  • +1
15 Comments
 
LVL 32

Expert Comment

by:Erick37
ID: 2601328
Private Sub Command1_Click()
    Dim d As Date
    Dim nWeek As Long
    d = Now
    nWeek = DatePart("ww", d)
    MsgBox "Week " & CStr(nWeek)
End Sub
0
 

Author Comment

by:FREAK
ID: 2601360
Thx...but I think the code is not 100%

I test it but he said that it's week 11
and it is week 10 now

???
0
 
LVL 32

Expert Comment

by:Brendt Hess
ID: 2601411
It depends on which standard you are using for week number.  In some locales, week numbers start on the first week of a year with more than 3 days in it (for accounting purposes, at least - this is, as I understand it, used primarily in some European countries.)

The simple answer has already been given.  A more complex answer to andle the above case would be something like this:

Function WeekNumber (ByVal Dt as Date) As Integer

Dim Week%, tmpDt
Dim YrDay1%, WeekOfs%

  tmpDt = CVDate("01/01/" & Format(Dt,"yyyy"))  ' Get new years day
  YrDay1 = DatePart("w", tmpDt) ' What day of week was New Years for the input date?

  WeekOfs = (YrDay1 > 4) ' If 3 or less days in 1st week, WeekOfs = -1

  Week = DatePart("ww", Dt) + WeekOfs
  If Week = 0 Then Week = Weeknumber(tmpDt - 1)
  WeekNumber = Week

End Function

This should give the correct week number for the European case.  Note:  Yes, the week number for Jan 1 - 3 can be week 53!
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 4

Accepted Solution

by:
wesleystewart earned 200 total points
ID: 2601413
Erick37 supplied the correct function, but the optional third parameter must be used to determine which week is the first week in the year.

Depending on your locale, the first week of the year might be the first week in which 1/1 appears, or it might be the first week in which 1/4 appears, or it might be the first full week of the year.

I think for you the correct syntax would be:

Private Sub Command1_Click()
    Dim d As Date
    Dim nWeek As Long
    d = Now
    nWeek = DatePart("ww", d, 1)
    MsgBox "Week " & CStr(nWeek)
End Sub

to specify other "first weeks" use the following constants:

1 first week contains 1/1
2 first week has at least the first four days of the year
3 first week is first full week.

Hope this helps.

Wes
0
 
LVL 32

Expert Comment

by:Brendt Hess
ID: 2601430
One more possibility:  If you are simply counting the number of seven day periods since Jan 1, then use:

Function WeekNumber(Dt as Date) As Integer

Dim tmpDt, Days%

  tmpDt = CVDate("01/01/" & Format(Dt, "yyyy")
  Days = DateDiff("d", tmpDt, Dt)
  WeekNumber = Days Mod 7 + 1
End Function

0
 
LVL 32

Expert Comment

by:Brendt Hess
ID: 2601452
Well, poop - I hadn't ever read that part of the DatePart documentation!  Thanks for the information (we can all learn something new here, even if we think we know the answer).
0
 
LVL 4

Expert Comment

by:wesleystewart
ID: 2601455
Happy to help.

Note that the comment from bhess1 would certainly work, and if you want total control over the return that is probably the way to go.  But using DatePart() allows you to take advantage of built-in (fast!!) functions and constants.

Wes
0
 

Author Comment

by:FREAK
ID: 2601487
I think this is working

Private Sub Command1_Click()
    Dim d As Date
    Dim weekNummer As Long
    d = Now
    weekNummer = DatePart("ww", d)
    MsgBox ("Week " & (weekNummer - 1))
End Sub
0
 
LVL 4

Expert Comment

by:wesleystewart
ID: 2601518
That won't work for a few days out of every week.  You might find out tomorrow that you are getting answers that indicate the previous week.  You really need to use that third argument:

weekNummer = DatePart("ww", d, 1)

Wes
0
 

Author Comment

by:FREAK
ID: 2601543
Private Sub Command1_Click()
    Dim d As Date
    Dim nWeek As Long
    d = now
    nWeek = DatePart("ww", d, 1)
    MsgBox "Week " & CStr(nWeek)
End Sub

gives me as answer week 11
and it's week 10 at the moment
0
 
LVL 4

Expert Comment

by:wesleystewart
ID: 2601567
My calendar says it is week 11 at the time.  How are you calculating the first week in the year?

1/1/2000 was a Saturday, so the first week of the year was exactly one day long.  If you are under the impression that the first week of the year is the first full week, then use the constant 3:

=DatePart("ww", d, 3)

Wes
0
 

Author Comment

by:FREAK
ID: 2601569
Private Sub Command1_Click()
    Dim d As Date
    Dim nWeek As Long
    d = now
    nWeek = DatePart("ww", d, 1)
    MsgBox "Week " & CStr(nWeek)
End Sub

gives me as answer week 11
and it's week 10 at the moment
0
 
LVL 4

Expert Comment

by:wesleystewart
ID: 2601574
Crap.

I was wrong.  The firstweek argument is the FOURTH argument.  You have to include a comma for the option third argument, which we won't include:

datepart("ww",date(),,3)

Will return week 10

datepart("ww",date(),,1)

returns week 11

Sorry about the mix-up

Wes
0
 

Author Comment

by:FREAK
ID: 2601589
At my calender is sunday 2 januari 2000 the first day of week 1. I live in Holland....maybe is that the difference

=datePart("ww",d,3)

constant 3 gives also week 11 as answer.
grtz..
FREAK
0
 

Author Comment

by:FREAK
ID: 2601596
Thank u very much Wesley...
This code is working 100% !!!
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Suggested Courses

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question