c# - Payroll System - 'clock out' functionality -
i working on designing payroll system using access database end.
currently, facing problems implementing 'clock out' functionality.
the 'clock in' button inserts time in database. however, when 'clock out' button clicked, inserts data new row. there there way avoid , update existing last row considering employee name. have tried approach using different methods , far have not been able solve it.
is there way rectify this?
i think have implement loop somewhere check emp name, clock in , locate null values in clock out field. not sure though.
please advise.
my code follows;
using system; using system.collections.generic; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols; public partial class timecards : system.web.ui.page { protected void page_load(object sender, eventargs e) { { if (session["id"] != null && session["id"].tostring() != "") { panelusersinfo.visible = true; } else { panelusersinfo.visible = false; } emplabel.visible = false; mainpagebutton.visible = false; logoutbutton.visible = false; if (session["title"] == null || session["names"] == null) { clockpanel.visible = false; return; } else { mainpagebutton.visible = true; logoutbutton.visible = true; emplabel.visible = true; emplabel.text = "<b>hi, " + session["names"].tostring() + "</b>"; namelabel.text = session["names"].tostring(); clockinlabel.text = datetime.now.tostring("hh:mm"); label1.text = clockinlabel.text; } } } protected void mainpage_click(object sender, eventargs e) { response.redirect("employeeloggedin.aspx"); } protected void logout_click(object sender, eventargs e) { session.abandon(); response.redirect("default.aspx"); } protected void clockinbutton_click(object sender, eventargs e) { informlabel.text = "clocked in @ " + label1.text + ""; label1.visible = false; label2.visible = false; clockinbutton.enabled = false; clockoutbutton.enabled = true; string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source=" + page.server.mappath("app_data\\database.mdb"); system.data.oledb.oledbconnection conn = new system.data.oledb.oledbconnection(connectionstring); system.data.oledb.oledbcommand cmd = conn.createcommand(); cmd.parameters.add("employee", system.data.oledb.oledbtype.varchar); cmd.parameters["employee"].value = namelabel.text; cmd.parameters.add("clockin", system.data.oledb.oledbtype.varchar); cmd.parameters["clockin"].value = clockinlabel.text; cmd.commandtext = "insert [timecard] ([employee], [clockin]) values (@employee, @clockin)"; conn.open(); cmd.executenonquery(); conn.close(); } protected void clockoutbutton_click(object sender, eventargs e) { clockoutlabel.visible = true; clockoutlabel.text = "you have been clocked out."; informlabel.visible = false; label1.visible = false; clockoutbutton.enabled = false; infolabel.visible = true; infolabel.text = "if want clock in again, please select timecard option main employee page."; string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source=" + page.server.mappath("app_data\\database.mdb"); system.data.oledb.oledbconnection conn = new system.data.oledb.oledbconnection(connectionstring); system.data.oledb.oledbcommand cmd = conn.createcommand(); cmd.parameters.add("employee", system.data.oledb.oledbtype.varchar); cmd.parameters["employee"].value = this.namelabel.text; //string x = datetime.now.tostring("hh:mm"); cmd.parameters.add("clockout", system.data.oledb.oledbtype.varchar); cmd.parameters["clockout"].value = this.clockinlabel.text; cmd.commandtext = "update [timecard] set [employee]=@employee, [clockout]=@clockout"; conn.open(); int numberofrows = cmd.executenonquery(); conn.close(); } }
if both buttons inserting records both buttons running same code. check .aspx page see if both buttons happen have same onclick= attribute.
Comments
Post a Comment