I like your second option better. The first method requires either a calulation or a script and if there is any chance that two users might attempt to create a new timesheet record for the same employee at the same time, there's small chance of getting duplicate numbers that is difficult to avoid.
There's a function you can check out: WeekofYear ( date ) that may do what you want. You'll have to decide what to do though, if The week starts in the last week of December and concludes in the first week of January. If you use the date of the week start, this function will return the week number of the last week of the past year, not 1 as being the first week in the new year.
And to get a number that combines other values with a serial number, I suggest defining the serial number part in a separate field and using it as your primary key for this table. You can then define a calculation field such as what you have here that combines the other values with it for use as a label, but not in any relationships except possibly one used strictly to find specific records.
Ahhh sweet. Thanks again!