I am working on a time tracking app for my job to assist me with the "paper" timesheets we have to submit daily. I am doing this as a learning process for .NET and plan on submitting to the code bank upon completion.
The base functionality is displayed in the attached screenshot. Each "row" would contain a task and description. There is no primary, or unique identifier: thus multiple tasks/descriptions/work-orders/job numbers could be entered for the day. When the check-box is checked, the Hours textbox will display the duration, rounded to the nearest 1/10th of an hour.
I will add a few "analysis/reporting" screens after I complete the main layout and get some advice on how to store the data. Reporting would include generating an excel spreadsheet to print (paper timesheet) and analyzing the hours spent on specific tasks (by work-order/description/job #).
I would like to use a Microsoft access database because I have some other projects that are all using MS Access.
I am looking for advice on the following, and would appreciate any feedback/examples/suggested reading:
1. What format should use to store the data in memory? Dataset or other?
2. What type of "binding" control should I use to display the data? Currently I am using a TableLayoutPanel because I want to use auto-complete textboxes, multi-line textboxes, and a checkbox in a row. Is this the suggested control?
3. I am using TimeSpan objects to display the hours column. Is there a simple method in the framework that will allow me to display hours as an integer (i.e. 1.1 hours).
4. I am still a little unclear of how I can "link" a timer that is created at runtime to a "row" object. This would probably depend on how I should organize the data in memory? A dictionary seems like it would be overkill, as I would only be displaying the tasks entered for a single day (usually under 20)?
5. I believe that I should be using a system.windows.forms timer for each row, is this correct?
This is all that I can compile at the moment. Please share your advice/knowledge!
Thanks,
Brian


Reply With Quote