SlideShare a Scribd company logo
1 of 101
Lab Steps
STEP 1: Login Form
1. In order to do this lab, we need to assign a primary key to the
tblUserLogin table. This will allow us to modify the user login
table from our Manage Users form that we will create later. Go
to Windows Explorer and open
the PayrollSystem_DB.accdb. Set the UserID as the Primary key
and save the table. Close the database.
2. Open Microsoft Visual Studio.NET.
3. Click the ASP.NET website named PayrollSystem to open it.
4. Create a new Web form named frmLogin.
5. Add the ACIT logo to the top of the frmLogin page. Do not
hyperlink the logo.
6. Under the login controls, you will see Login. Drop the Login
control onto the form. Set the properties of the login control as
follows:
Property
Value
DestinationPageUrl
frmMain.aspx
TitleText
Please enter your UserName and Password in order to log in to
the system.
7. Highlight everything in the form, then click Format, Justify,
Center. Save your work.
8. Go to the
Solution
Explorer, right-click on frmLogin, and left-click on Set As
Start Page.
Then run the website to check if the Web form appears
correctly.
If you receive an error, add the following code to
the web.config file right above the </configuration> line:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode"
value="None" />
</appSettings>
STEP 2: Login Check
9. Create a new DataSet called dsUser. Use the
table tblUserLogin as the database table for this dataset. Do this
in the same way that you added datasets in the previous labs.
10. Open the clsDataLayer and add the following function:
// This function verifies a user in the tblUser table
public static dsUser VerifyUser(string Database, string
UserName, string UserPassword)
{
// Add your comments here
dsUser DS;
OleDbConnection sqlConn;
OleDbDataAdapter sqlDA;
// Add your comments here
sqlConn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+
"Data Source=" + Database);
// Add your comments here
sqlDA = new OleDbDataAdapter("Select SecurityLevel from
tblUserLogin " +
"where UserName like '" + UserName + "' " +
"and UserPassword like '" + UserPassword + "'", sqlConn);
// Add your comments here
DS = new dsUser();
// Add your comments here
sqlDA.Fill(DS.tblUserLogin);
// Add your comments here
return DS;
}
11. Double-click on the login control that you added. Add the
following code to the login control Authenticate event handler:
// Add your comments here
dsUser dsUserLogin;
// Add your comments here
string SecurityLevel;
// Add your comments here
dsUserLogin =
clsDataLayer.VerifyUser(Server.MapPath("PayrollSystem_DB.a
ccdb"),
Login1.UserName, Login1.Password);
// Add your comments here
if (dsUserLogin.tblUserLogin.Count < 1)
{
e.Authenticated = false;
return;
}
// Add your comments here
SecurityLevel =
dsUserLogin.tblUserLogin[0].SecurityLevel.ToString();
// Add your comments here
switch (SecurityLevel)
{
case "A":
// Add your comments here
e.Authenticated = true;
Session["SecurityLevel"] = "A";
break;
case "U":
// Add your comments here
e.Authenticated = true;
Session["SecurityLevel"] = "U";
break;
default:
e.Authenticated = false;
break;
}
STEP 3: User Authentication, Test and Submit
12. Open the frmPersonnel form and add the following code to
its Page_Load() function:
// Add your comments here
if (Session["SecurityLevel"] == "A") {
btnSubmit.Visible = true;
//Add your comments here
} else {
btnSubmit.Visible = false;
}
13. Set the start page as frmLogin.aspx. Run the website. Try to
log in with both User Name = Mickey and Password =
Mouse and User Name = Minnie and Password = Mouse. Any
other user ID and password should not allow you to log in.
14. When the user logs in, we want to restrict what they can see
and do based on their user role. The role is stored in the
database table tblUserLogin. Mickey Mouse has all privileges,
whereas Minnie Mouse has read only privileges. We want to
control the visibility of the links on the frmMain page.
15. Initially, we did not set the ID of any of the Link Button or
Image Button controls that we used on frmMain. In order to
make our code more maintainable, we will change the IDs as
follows:
Option
Link Button ID
Image Button ID
Annual Salary Calculator
linkbtnCalculator
imgbtnCalculator
Add New Employee
linkbtnNewEmployee
imgbtnNewEmployee
View User Activity
linkbtnViewUserActivity
imgbtnViewUserActivity
View Personnel
linkbtnViewPersonnel
imgbtnViewPersonnel
Search Personnel
linkbtnSearch
imgbtnSearch
Edit Employees
linkbtnEditEmployees
imgbtnEditEmployees
16. Modify the main form so that the following options
are turned off for nonadmin users:
· Add New Employee
· View User Activity
· Edit Employees
17. You now have a Web application that honors the role of the
logged-in user. We don't have a way of managing the user roles
and users in the system.
18. Add a new form called frmManageUsers that will allow the
user to add new users. The user will also need to be able to view
all users and modify or delete any of the users in the database.
Add a main form option called Manage Users that is only
accessible to admin users. Add the link and image buttons as we
have done in the past. Add the ACIT logo that is hyperlinked as
you did in previous assignments.
· For the security level of the user, use a dropdown list control
to allow the user to select from A or U.
· Name the controls with names that make sense.
· Add code as appropriate to the code behind and clsDataLayer.
Note: You will need to create a SaveUser function that is very
similar to the SavePersonnel function. Use the following as a
guide:
public static bool SaveUser(string Database, string UserName,
string Password,
string SecurityLevel)
When creating the SaveUser function, be sure to insert the data
into the tblUserLogin table with columns: userName,
UserPassword, and SecurityLevel.
19. Hints:
· Make sure you reestablish your database connection if you
copied the files from a previous lab.
· Update any DataSource controls that you added with the new
Payroll database location.
· You can turn a control on or off by setting
its Visible property.
· You can add a data entry form for new users and a grid
displaying all users all on the same form.
· To force a gridView to refresh, call its DataBind method in
the btnAddUser_click event handler. For example, use the
following code in the btnAddUser_click (be sure to include an
Else condition as well if the user was not added successfully):
if
(clsDataLayer.SaveUser(Server.MapPath("PayrollSystem_DB.ac
cdb"),
txtUserName.Text,
txtPassword.Text,ddlSecurityLevel.SelectedValue))
{
lblError.Text = "The user was successfully added!";
grdUsers.DataBind();
}
20. Test your application to make sure that you are logging in
with a valid user ID. Try to log in with both Minnie and Mickey
and make sure that the UI adjusts by the role properly. Make
sure that you can utilize the Manage Users functionality to
Add/Modify/Delete and view user information. Once you have
verified that everything works, save your project, zip up all
files, and submit it.
NOTE: Make sure you include comments in the code provided
where specified (where the " // Your comments here" is
mentioned); also, any code you write needs to be properly
commented, or else a 5-point deduction per item (form, class,
function) will be made.
frmManageUsers
Mickey Mouse (Admin) Login:
Minnie Mouse (User) Login:
spssdatayearidmaritalsibschildsageeducdegreesexracepartyidVO
TE08happysatfintvhourshealth1mntlhlth2,012151022163112211
13102,01212523361632212222302,0121556452401332332142,0
1217153361211153222222,01218325471312221233242,012231
12541421132233102,01224132451622332110202,01227520221
511151212102,012304324413121512322202,012323526314221
01134322,012351104214121212233152,0123852049121220111
16212,01239520271732311221312,01240522301412212232422,
01243310511842121222202,01248122681641131114102,01252
1324216323132212102,012545101381421321132202,01267372
521102232237402,01268511491632201233302,0126952046163
11213202102,01271510281631312223432,01274132481421102
330352,01275132461631131221302,0127918232131231113230
2,01282410321842111222132,01283122441641101132232,0128
5550641212102222312,01290122321411332115242,012925503
42032202224202,01293101331642332120102,01299330411631
322121242,012100500231712111222152,012106500262041351
2221152,012110540431731111222102,01211311032163231221
2202,012115552501212132224282,01211631360121114112320
2,012118112401842161221322,012123510281631111211142,01
2124350491211221234122,012127122531941101211112,01212
95133412121322214202,01213016358601133231302,01213212
0241212132321102,012135500291631222222212,01213913249
1632332211312,012140322601631301223302,01214254239141
2211223302,01214857022601143324302,012150452411411111
233442,01215155333902123332312,0121535102211013122324
02,012154111242602312131402,012160511311311132124202,0
12162461501731313122202,012165112621311151232242,0121
69510241631351221102,012172530241522152111112,0121765
10221111332111202,012177510211511153111372,0121791513
21932151121102,012186520221632102231332,0121871125617
31131111102,012190130331632161222302,0121945604216321
322222102,012202500201411103221222,012205180571421111
222202,012206155611302201239232,012209580301211112131
102,012210233681422171122202,012215112651842121212102,
012219143221211122124102,0122245233812121322334152,01
2225134671212151213102,012226150481211171223222,01222
9122481212121120252,012231110421511122213242,01223511
14341311201123222,012237512531731232220312,0122411513
91211111121202,012242174611631141112302,0122431436518
41141211212,012244120341841151120302,0122475313912121
11225322,0122501535416321412123302,012251541551422131
331302,012253570621411211223302,012254110339601321332
202,012255541301212311223252,012257511130101120113442
02,012264122431731171221312,012270132551631161112102,0
122723436814121412213222,012278520301631142111222,012
279121381642131121322,012282420492041131222112,012283
341521622132222202,012286104331421151221402,012290156
35901322232202,012291414361422202214332,0122951303818
41121231232,012296511251411232233202,0122983212312121
313302302,012301570301112142236322,012305510251831111
330492,012307112461841101221302,012311125531631141222
312,012314142552041121211302,012316113772041151112202,
012320172571212201235302,012324183331201332110202,012
327500441732211230302,012330510271631171122202,012331
510281632151121132,012332510221631111113352,012338133
411521171222152,012340153461632121232352,012341112581
6421012122202,0123445303814121222382102,0123471304816
421032201152,012348130371631151222142,012349331471211
121234432,0123513214113121012121302,01235452032173112
1211222,012355121271411141121202,01235811055163211122
3472,01236454334502332323202,012369143611212131221322,
012374502421211161231102,012375510271412132122202,012
377172631412101224222,012379120272042332221202,012380
5404816311213223252,012381500251631311111302,01238521
2821841111222322,012392500231311201211242,01239411041
1521131111252,012395540291212201234322,01239633251194
21111313282,012397330551831341224322,0123981323615122
113322102,012400510281731112212202,012401110351731151
2121122,012411530201001153225522,01241213151194211112
1102,012414122591632101232152,01241812454131213222122
2,012419530191212213234232,012420143381012222214202,01
2423530231111132238102,012425320451622201224402,01243
2130501632101113112,012434102321421141121202,01243511
2432041111221202,012436112511632161112102,01244311334
15112113143202,012446131341311161212202,0124473425013
11201222302,012451132412041111212302,0124535305416311
21322322,012454130671941101111102,0124581435114111611
12202,012460322491212161211222,0124611003016321011212
22,012464301391842141121262,0124671424118311222201102,
012468510291841322222342,012469430581211142222222,012
4723805414222113332292,012473513379022112223102,01247
4293481842201234342,01247636877902201237302,012477510
4414121312244202,0124795401911011232144292,0124811215
21212131212102,012487253641512101112202,0124885604718
42211321252,012490115371211142338442,0124921313120412
112214102,012495141561522161111142,012496231348011422
203102,012497172531201352222402,012499473391212333132
302,0125055543310121322214102,01250611544912013222213
52,0125095004017311012112152,012511532211212233128302,
012515102401412151222152,012517123488021522233162,012
519111441801332122202,0125213315712122013234202,01252
5530301511111236352,012526502471212221233352,01252818
443501332320402,012530110471842211222352,012532183351
211231234222,012538112491212151220302,012543134431001
203134222,0125445102311312201230312,01254914232110114
2121102,012552352311521211224202,01255751332910012022
20312,0125601644812121332214152,012566148686013032323
272,012567142371742201222302,012571530401932172223342,
012572331431632111122202,0125811103491211302211302,01
2584112522041161211322,012587122371842101211212,01259
2560291321201122302,012593132581421121233472,01259512
2491621101231102,012597530561631101222312,01259811240
1842111111212,012599160351832121111112,01260212337204
11312212242,012604520241511301215102,0126065102811111
11230302,012607123511212161131122,0126081203014221012
21472,012610352461632161233332,0126122116413121612223
52,012615195661411302122222,012616121351632111111102,0
12622112331212161112202,0126231114481422131222302,012
627520281631121121202,0126315405114111112112122,01263
5162401112131221222,012638113511311151221202,01264014
2421211351111302,012643143451212352122312,01264413242
1511111223312,0126451254812111323221252,0126475301812
113232215102,012648110371211132213302,012650550491212
151232332,01265216744802332116172,0126535635360133333
1202,012655111451632151122252,01265614024121112123343
2,012658571271412332222302,01265931005420411013342202,
012660520261212132127302,012662350631212161211102,012
663561271312221127102,012665598501202203336332,012670
531411412101336302,012673341391832101221352,012674170
611422101222402,012675520211211133223332,012679310451
842111212302,01268113236901122321402,0126831744660111
2122102,012685132431512332122102,01268712134121112112
2302,012689520281631151111102,01269114329121115122232
2,0126971534214111412112152,012698570351422112232422,0
12699121301632101114102,0127003625514211721263102,012
705132542042101111202,012708142281311101123132,012712
522241312111222302,012714223701212141237322,012718121
472042131230202,012719581491512151235342,012723353551
312132233302,012724350571631101238422,012727342541311
1522233152,012728500211211113123332,01273433028204211
1130322,012738231451312132216252,01274022262121111123
3302,012741122291632112221112,01274411041141116113320
2,012745134301632151121122,012747321501311161211202,01
27485102213111112135102,012749561221102112234352,0127
54120561632161231352,012757122471732121131122,0127591
84441311201226402,012760520241521312221352,0127611424
91632233130122,012762352671212111222472,0127633124812
11142233302,012765112751512151222242,0127673405111021
62215302,012769532431212201321352,0127705312213121611
20102,012771554411311141226202,0127731554380212323130
2,012778120561311201222302,012781111261512171110252,01
2790155511631151220102,0127923323611011422311202,0127
931323414121213311302,012795530291421142113222,012797
112511421361124102,012800541221212132222302,012801122
451312151121212,012805172602041332311302,012810371611
2112012363152,012811540511211201136102,01281513145163
21611122202,0128161624812111611231102,012821124441631
141234452,012822332421422112331452,012827530261311101
223302,012829143451622201232202,012833312681631151222
302,0128365101913121132222152,01284013027163213223237
2,0128421223812111312223202,012847532231512111223302,0
12849520471212131231202,0128523113617311312201152,012
854110221201122124212,012857520191101153114102,012858
530521211132123102,012862133451101151235322,012865331
551842201213222,012867121311631162222102,012868330541
211101214302,012869511211312123121212,012871111341632
101112102,0128725804514111013225202,01287352028131114
21323202,012878592381001341223402,0128812156711211111
214302,0128823307331001201232552,01288517141121114222
52152,012886500321411161326402,0128881926112111612322
02,0128891125716311411132202,012893111421632161221112,
012896122421842201231212,012900220471211151213302,012
901121411631151113102,0129033423112121212112302,01290
6131481311121224332,012908340401111142333412,01291252
33315122013323122,012914530301211212325302,0129175302
11412153223322,012921510181211133111102,0129231222812
11132113102,012925520319111123354202,0129285213712121
322263102,012930162721211151222302,012931142241412111
122112,012932111491412141122202,012933170429113221121
12,012935154391211312332122,0129365725912122212312322,
012938530611311132334402,012940321391212131132202,012
943172271411211232222,012944520531211121232442,012947
123441631241213422,012952110631212111123102,012954361
411842361211112,012957142311212141232332,012961560381
831171111112,012963510191212163220252,012965122311632
161121142,012966272361212132212402,012968131371732133
221302,012971142241211311123202,012973114402041121120
412,012974571301111133222322,012975128651631151221212,
012976197561842161111102,012977131401631121224302,012
981133291411131233302,012983113321211161112302,012985
133551411131225302,012987520351841151111302,012988552
421101142133382,012993510501212161213152,012994520451
7321122302182,0121,001111431211131223202,0121,00452057
1311121224202,0121,006352571612112231432,0121,00752022
1512112122102,0121,0085002313111322221292,0121,0095505
012111222395122,0121,011530251631132111122,0121,016530
211312123123202,0121,0173213418421312221152,0121,01851
0341832101120322,0121,021520281632121122152,0121,02617
1271211101232442,0121,027342591631101221412,0121,02851
0221631141222252,0121,031122311632212224372,0121,03312
0261632151110112,0121,034441251212171230382,0121,03743
0401731111231412,0121,038332521311162121252,0121,04043
33616321112303102,0121,04354229901132224302,0121,04651
03541002132128202,0121,047520331421131230302,0121,0481
21261412311122202,0121,055510241631131122112,0121,0573
10671732171221302,0121,059162301622131123102,0121,0605
201911011333123182,0121,0613324212121322203102,0121,06
2133571411141121202,0121,064122631421141112302,0121,06
5550221412111221272,0121,0665202812111322321102,0121,0
6711028801322211352,0121,0695163371622201221102,0121,0
771215116321512121152,0121,081540191212153221202,0121,
083114331732131234222,0121,085110311212122225142,0121,
08713342912132232332,0121,0961515311011122355302,0121,
102431421101121332202,0121,104510201212103231102,0121,
105202611511111212302,0121,107541231001132133122,0121,
112111651212161211402,0121,114112321422162122212,0121,
116540251632353120202,0121,117330532041101211102,0121,
120540331421111222272,0121,133110261632151112252,0121,
135145561311211132302,0121,141132391522231231222,0121,
142133511832151117102,0121,144112431632151222362,0121,
145542381312251121102,0121,148530231312151125202,0121,
157330581212151236352,0121,158534351412211323452,0121,
159513271422232322302,0121,174381561211112121302,0121,
175121301211201123402,0121,176123611212151224112,0121,
181113521512161123102,0121,189160381212161232112,0121,
190110281211151122252,0121,193550241631151222202,0121,
1955202816312012220102,0121,197312411412152233302,0121
,203532291311151222302,0121,206123441212101131102,0121,
207352241212201223352,0121,208110331312101113222,0121,
210122601411151122422,0121,2111125316311613322302,0121
,213120461212131232102,0121,2155113714122212322142,012
1,21952226801122231402,0121,224162401812121221352,0121,
2295222331112232232102,0121,232581231212231115102,0121
,234132321211272221202,0121,237153631512141221202,0121,
238300421211131231432,0121,243120301211162223172,0121,
247134411202132121242,0121,252510351631152233312,0121,
253120521631161111152,0121,254143632041202233402,0121,
256351641411152212422,0121,258150411942211223212,0121,
2643524615111512222302,0121,266112431631151213302,0121
,269110552041161211102,0121,272520371842211115102,0121,
277580211111123226402,0121,280110281212201132302,0121,
282540371741343223202,0121,283536371211221222202,0121,
287522451511201325452,0121,293310521311122213302,0121,
298322611742121212152,0121,301111331632161212312,0121,
302322641202152213412,0121,305362651212201213202,0121,
309510251212211234322,0121,310142511211151123302,0121,
3145203719421012243152,0121,3193225216311012322152,012
1,320131681641341222212,0121,321132531212161122202,012
1,323582301211121230102,0121,325134341212141122202,012
1,327312571411151221102,0121,328560651212111113302,012
1,3301315012121621210102,0121,3313204116111322233172,0
121,334510191211143233102,0121,336111621411151211352,0
121,346454551211142222102,0121,3511124218321513204122,
0121,35312355163215121152102,0121,35612447204116111112
2,0121,357132511731101211312,0121,35838150902111231315
2,0121,360121301731101212222,0121,36531147121113121122
2,0121,367123772041161124212,0121,36851028162215121311
02,0121,37033260602111221402,0121,37451134151220131340
2,0121,3771225314121112242102,0121,3781824612112723354
302,0121,382510191212133133302,0121,383110261212311212
272,0121,384134421412121121202,0121,390323401512151130
222,0121,391172331211151122302,0121,394100422042101120
232,0121,395182411631111212202,0121,399111451942111233
302,0121,403392531001132212332,0121,405342341521161221
252,0121,409122591311121113302,0121,412112401212142131
332,0121,413102411632161111232,0121,414373591421132114
202,0121,416132552042141211322,0121,418133351211201214
302,0121,423560601211131222302,0121,425510241211112223
322,0121,435131421421161223302,0121,437113471411151230
352,0121,441510301211111232402,0121,442174321211132212
102,0121,444582251211322221202,0121,446521351211142122
202,0121,448123511212151213302,0121,453164601632161221
422,0121,454112441631141232352,0121,456511281631132232
312,0121,4581435117311011122102,0121,46011241121211122
2222,0121,461122391631151236102,0121,46412050121210112
5252,0121,466171431212121215222,0121,46751022151212121
13302,0121,469142371632131231312,0121,4715103019311522
22252,0121,4721113551412332222232,0121,473372461522301
222302,0121,475343651311161223202,0121,476132651211111
112122,0121,478510271631101213102,0121,480111371941141
331452,0121,482322641631171113202,0121,484120431632152
121102,0121,485530451632161234302,0121,488310471631151
312272,0121,490312361211141111102,0121,492122301731121
122202,0121,495521471211112214402,0121,496520341731121
222262,0121,499532301101132123102,0121,500122521212101
232252,0121,502150511411121124402,0121,503122392041331
230362,0121,504492491212122233252,0121,505540221512222
2283102,0121,507562331211211235302,0121,51052228141213
12202252,0121,511325661842121210232,0121,5121235512121
51223132,0121,513311451422162210302,0121,5143325116311
11220202,0121,517581531412201131422,0121,5194154371102
232131302,0121,521510231711161112102,0121,526210281121
2131213212,0121,528510531512121223302,0121,52911339131
2141113102,0121,530152381211312121302,0121,53244853100
21322253102,0121,5354434912112323124402,0121,538130331
521352220232,0121,5403343411023222353102,0121,54214229
1312132220462,0121,5431203511731232120202,0121,5465202
01312133124102,0121,549311261311152231202,0121,5503118
451211111112102,0121,551510441511161124402,0121,560130
571841171132102,0121,563520271941101112242,0121,565122
451211341222302,0121,5665524214123012213142,0121,56712
0211412333222432,0121,569510471941171210112,0121,57231
03461412322114202,0121,575120651312161132172,0121,5791
61371731141222412,0121,581143552032151113102,0121,5851
10371841343222352,0121,587530612042121222222,0121,5893
202515121512223152,0121,590510631841101223312,0121,592
13439901112221302,0121,5984153341942122232122,0121,603
15355501332222222,0121,604122481941121113202,0121,6095
24311212131233222,0121,6114104441102332233242,0121,616
54033601132332322,0121,622192361832151121132,0121,6231
33331101141221102,0121,630162701212151233332,0121,6323
20691412111116122,0121,634142681421101134402,0121,6401
23351731111223332,0121,641540361212151333552,0121,6421
32861211111212302,0121,647143511832111232222,0121,6521
52381311132221202,0121,656112341212122122222,0121,6595
10611631161211202,0121,66231046802111232312,0121,66653
0381312111220102,0121,668232621732131210252,0121,67053
2291112132332352,0121,672121391421111121202,0121,67453
0551421112212152,0121,6755402712111012312322,0121,6823
14741211161115102,0121,68316267201111231102,0121,68555
0361211111224302,0121,687560211312123224102,0121,68851
0211111133233302,0121,689520431732151212342,0121,69011
2341401123221422,0121,695540181101153232102,0121,69637
473802331226202,0121,69931243913122322312302,0121,7011
12311412131122302,0121,702113371521152223302,0121,7041
222413111612281202,0121,706128501841161111102,0121,712
1325618411212112202,0121,7171336514221512344302,0121,7
19122491211151111202,0121,721135552041241231112,0121,7
23133521842101133102,0121,728121321422161111212,0121,7
30331391632211112232,0121,733520351312211222452,0121,7
34114381211361113102,0121,735330521312112111152,0121,7
36123731202111223332,0121,7393834613111522225122,0121,
740323371312151221402,0121,744152411211162111102,0121,
75051424314122112243102,0121,7523153461112132231322,01
21,754132751212111324402,0121,7553150541312201223422,0
121,758550321741352211322,0121,7623336311011322154202,
0121,765133616021423310532,0121,767112651411111134302,
0121,7771226012111421242302,0121,779160611211121312322
,0121,782370381411152123202,0121,783100391631171110102,
0121,785133331211132223202,0121,786520301631111222202,
0121,787510301211343226302,0121,7881633616311512243152
,0121,790432231212332132202,0121,791530271731121212132,
0121,794312411632211230202,0121,797160331412131233302,
0121,798210371311101211162,0121,799114441641153211202,
0121,803520261732111224172,0121,804323361311122231302,
0121,806113721212112133202,0121,80853064801132336402,0
121,815123421211151122102,0121,81812373801131123312,01
21,820112481211151111102,0121,823364741212151213102,01
21,827131561211111111102,0121,829541541212122132322,01
21,830523341212132223302,0121,833122791941111213322,01
21,839352741212101232202,0121,841501291831121222422,01
21,8421223217311611111102,0121,845120462042131216132,0
121,846520281312111224202,0121,855163551211151124302,0
121,860134621411101113202,0121,8655605517111612233102,
0121,868530331632121115302,0121,8751115614221012262212
,0121,881121251632141113202,0121,883163471312201214302,
0121,885551281932211333302,0121,887251661642201211212,
0121,8901224411112121310102,0121,897510281521142233312
,0121,899131561211101132252,0121,90318231401333121122,0
121,906572621412201234422,0121,907123561631141223302,0
121,9094523912122612131102,0121,914520231211121223202,
0121,915374579022012224152,0121,920510231212152213352,
0121,9221124812121513325252,0121,925134561212112224322
,0121,927382561211151222302,0121,928132471211151124302,
0121,929292441102132212302,0121,934520331211132222302,
0121,9361123912111322123102,0121,940112321622132211202
,0121,9443623112121312304302,0121,94733149121221222735
2,0121,951520402031101330222,0121,95214045163212112021
2,0121,953363621422131233402,0121,95736042163110122220
2,0121,959181501942111222102,0121,96325350141131223238
2,0121,9645312314121322202302,0121,9651326519421012111
02,0121,970530611632311123222,0121,9721224813111411242
52,0121,97353837121233222444
PayrollSystem (1)/App_Code/clsDataLayer.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.OleDb;
using System.Net;
using System.Data;
public class clsDataLayer
{
// This function gets the user activity from the tblUserActivity
public static dsUserActivity GetUserActivity(string
Database)
{
// Declare DataSet, connection, and data adapter object
dsUserActivity DS;
OleDbConnection sqlConn;
OleDbDataAdapter sqlDA;
// Inintialize connection using the connection string to the
database
sqlConn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+ "Data Source=" + Database);
// Initialize the data adapter using SQL
sqlDA = new OleDbDataAdapter("select * from
tblUserActivity", sqlConn);
// Create and empty data set
DS = new dsUserActivity();
// It fills the data set from the data adapter
sqlDA.Fill(DS.tblUserActivity);
// returns the retrieved data to the caller
return DS;
}
// This function saves the user activity
public static void SaveUserActivity(string Database, string
FormAccessed)
{
// It saves the user information by connecting to the
database and saving it to the dataset
OleDbConnection conn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+
"Data Source=" + Database);
conn.Open();
OleDbCommand command = conn.CreateCommand();
string strSQL;
strSQL = "Insert into tblUserActivity (UserIP,
FormAccessed) values ('" +
GetIP4Address() + "', '" + FormAccessed + "')";
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
command.ExecuteNonQuery();
conn.Close();
}
// This function gets the IP Address
public static string GetIP4Address()
{
string IP4Address = string.Empty;
foreach (IPAddress IPA in
Dns.GetHostAddresses(HttpContext.Current.Request.UserHostA
ddress))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
if (IP4Address != string.Empty)
{
return IP4Address;
}
foreach (IPAddress IPA in
Dns.GetHostAddresses(Dns.GetHostName()))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
return IP4Address;
}
}
// This function saves the personnel data.
public static bool SavePersonnel(string Database, string
FirstName, string LastName,
string PayRate, string StartDate, string EndDate)
{
bool recordSaved;
// Declares the transaction variable.
OleDbTransaction myTransaction = null;
try
{
// Opens the connection to the database.
OleDbConnection conn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+
"Data Source=" + Database);
conn.Open();
OleDbCommand command = conn.CreateCommand();
string strSQL;
// Begin transaction as new transaction
myTransaction = conn.BeginTransaction();
command.Transaction = myTransaction;
// It perform an insert interaction with the database to
insert the data below; FirstName and LastName
//from the form filled by the user.
strSQL = "Insert into tblPersonnel " +
"(FirstName, LastName) values ('" +
FirstName + "', '" + LastName + "')";
// Indicate the type of command being executed, in this
case is .Text; Second command is to identify
// the command to execute which is strSQL that insert
data into the datasources in the data set.
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// perform a query without returning any value since we
are performing an Insert operation for the database.
command.ExecuteNonQuery();
// perform and UPDATE to save the PayRate, StartDate,
and EndDate into the new record.
strSQL = "Update tblPersonnel " +
"Set PayRate=" + PayRate + ", " +
"StartDate='" + StartDate + "', " +
"EndDate='" + EndDate + "' " +
"Where ID=(Select Max(ID) From tblPersonnel)";
// Indicate the type of command being executed, in this
case is .Text; Second command is to identify
// the command to execute which is strSQL that insert
data into the datasources in the data set.
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// perform a query without returning any value since we
are performing an Insert operation for the database.
command.ExecuteNonQuery();
// Commits the transaction saving changes and
competing the current transaction.
myTransaction.Commit();
// Close the connection to the database.
conn.Close();
recordSaved = true;
}
catch (Exception ex)
{
// Rollsback the transaction canceling any changes
during the current transaction and ends the transaction.
myTransaction.Rollback();
recordSaved = false;
}
return recordSaved;
}
public static dsPersonnel GetPersonnel(string Database, string
strSearch)
{
// Declare DataSet, connection, and data adapter object
dsPersonnel DS;
OleDbConnection sqlConn;
OleDbDataAdapter sqlDA;
// Inintialize connection using the connection string to the
database
sqlConn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+ "Data Source=" + Database);
// Will check if the text box for search is empty or the user
hit the search button with nothing on the text box
// then it will return all the personnel. If a last name is
filled up it will return the table with the last names on the table.
if (strSearch == null || strSearch.Trim() == "")
{
sqlDA = new OleDbDataAdapter("select * from
tblPersonnel", sqlConn);
}
else
{
sqlDA = new OleDbDataAdapter("select * from
tblPersonnel where LastName = '" + strSearch + "'", sqlConn);
}
// Create and empty data set
DS = new dsPersonnel();
// It fills the data set from the data adapter
sqlDA.Fill(DS.tblPersonnel);
// returns the retrieved data to the caller
return DS;
}
}
PayrollSystem (1)/App_Code/dsPersonnel.xsd
PayrollSystem (1)/App_Code/dsPersonnel.xss
PayrollSystem (1)/App_Code/dsUserActivity.xsd
DELETE FROM `tblUserActivity` WHERE
((`ActivityID` = ?))
INSERT INTO `tblUserActivity` (`UserIP`,
`DateOfActivity`, `FormAccessed`) VALUES (?, ?, ?)
SELECT ActivityID, UserIP, DateOfActivity,
FormAccessed FROM tblUserActivity
UPDATE `tblUserActivity` SET `UserIP` = ?,
`DateOfActivity` = ?, `FormAccessed` = ? WHERE
((`ActivityID` = ?))
PayrollSystem (1)/App_Code/dsUserActivity.xss
PayrollSystem (1)/frmSearchPersonnel.aspx
PayrollSystem (1)/frmSearchPersonnel.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmSearchPersonnel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
PayrollSystem (1)/frmUserActivity.aspx
PayrollSystem (1)/frmUserActivity.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmUserActivity : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Declares the DataSet
dsUserActivity myDataSet = new dsUserActivity();
// Fill the dataset with what is returned from the
function
myDataSet =
clsDataLayer.GetUserActivity(Server.MapPath("PayrollSystem_
DB.accdb"));
// Sets the DataGrid to the DataSource based on the
table
grdUserActivity.DataSource =
myDataSet.Tables["tblUserActivity"];
// Binds the DataGrid
grdUserActivity.DataBind();
}
}
}
PayrollSystem (1)/frmViewPersonnel.aspx
PayrollSystem (1)/frmViewPersonnel.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmViewPersonnel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Declare the Dataset
dsPersonnel myDataSet = new dsPersonnel();
string strSearch = Request["txtSearch"];
//Fill the dataset with shat is returned from the method.
myDataSet =
clsDataLayer.GetPersonnel(Server.MapPath("PayrollSystem_D
B.accdb"), strSearch);
//Set the DataGrid to the DataSource based on the table.
grdViewPersonnel.DataSource =
myDataSet.Tables["tblPersonnel"];
//Bind the DataGrid.
grdViewPersonnel.DataBind();
}
}
}
}
}
PayrollSystem (1)/PayrollSystem/App_Code/clsDataLayer.cs
// Add your comments here
using System.Data.OleDb;
using System.Net;
using System.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for clsDataLayer
/// </summary>
public class clsDataLayer
{// This function gets the user activity from the tblUserActivity
public static dsUserActivity GetUserActivity(string
Database)
{
// Add your comments here
dsUserActivity DS;
OleDbConnection sqlConn;
OleDbDataAdapter sqlDA;
// Add your comments here
sqlConn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+ "Data Source=" + Database);
// Add your comments here
sqlDA = new OleDbDataAdapter("select * from
tblUserActivity", sqlConn);
// Add your comments here
DS = new dsUserActivity();
// Add your comments here
sqlDA.Fill(DS.tblUserActivity);
// Add your comments here
return DS;
}
// This function saves the user activity
public static void SaveUserActivity(string Database, string
FormAccessed)
{
// Add your comments here
OleDbConnection conn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+
"Data Source=" + Database);
conn.Open();
OleDbCommand command = conn.CreateCommand();
string strSQL;
strSQL = "Insert into tblUserActivity (UserIP,
FormAccessed) values ('" +
GetIP4Address() + "', '" + FormAccessed + "')";
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
command.ExecuteNonQuery();
conn.Close();
}
// This function gets the IP Address
public static string GetIP4Address()
{
string IP4Address = string.Empty;
foreach (IPAddress IPA in
Dns.GetHostAddresses(HttpContext.Current.Request.UserHostA
ddress))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
if (IP4Address != string.Empty)
{
return IP4Address;
}
foreach (IPAddress IPA in
Dns.GetHostAddresses(Dns.GetHostName()))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
return IP4Address;
}
public clsDataLayer()
{
//
// TODO: Add constructor logic here
//
}
}
PayrollSystem (1)/PayrollSystem/App_Code/dsUserActivity.xsd
DELETE FROM `tblUserActivity` WHERE
((`ActivityID` = ?))
INSERT INTO `tblUserActivity` (`UserIP`,
`DateOfActivity`, `FormAccessed`) VALUES (?, ?, ?)
SELECT ActivityID, UserIP, DateOfActivity,
FormAccessed FROM tblUserActivity
UPDATE `tblUserActivity` SET `UserIP` = ?,
`DateOfActivity` = ?, `FormAccessed` = ? WHERE
((`ActivityID` = ?))
PayrollSystem (1)/PayrollSystem/App_Code/dsUserActivity.xss
PayrollSystem (1)/PayrollSystem/CIS407A_iLab_ACITLogo.jpg
PayrollSystem (1)/PayrollSystem/Default.aspx
Greetings and Salutations. I will master ASP.NET in this
course.
PayrollSystem (1)/PayrollSystem/Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
PayrollSystem (1)/PayrollSystem/frmMain.aspx
Annual Salary Calulator
Add New Employee
View User Activity
View Personnel
Search Personnel
PayrollSystem (1)/PayrollSystem/frmMain.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmMain : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Add your comments here
clsDataLayer.SaveUserActivity(Server.MapPath("PayrollSystem
_DB.accdb"), "frmPersonnel");
}
protected void ImageButton1_Click(object sender,
ImageClickEventArgs e)
{
}
}
PayrollSystem (1)/PayrollSystem/frmPersonnel.aspx
PayrollSystem (1)/PayrollSystem/frmPersonnel.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmPersonnel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Variables for the Date for the user entries.
DateTime dt1;
DateTime dt2;
// This will make the error textbox blank again and the
entry textbox back to white color.
lblError.Text = "";
Boolean validatedState = false;
// The next 5 validation controls check if there are left
blank or filled with blank spaces and gives the error message.
if (Request["txtFirstName"].ToString().Trim() == "")
{
txtFirstName.BackColor =
System.Drawing.Color.Yellow;
lblError.Text = "Must enter a First Name. ";
validatedState = true;
}
else
{
txtFirstName.BackColor =
System.Drawing.Color.White;
}
if (Request["txtLastName"].ToString().Trim() == "")
{
txtLastName.BackColor =
System.Drawing.Color.Yellow;
lblError.Text += "Must enter a Last Name. ";
validatedState = true;
}
else
{
txtLastName.BackColor =
System.Drawing.Color.White;
}
if (Request["txtPayRate"].ToString().Trim() == "")
{
txtPayRate.BackColor = System.Drawing.Color.Yellow;
lblError.Text += "Must enter a Pay Rate. ";
validatedState = true;
}
else
{
txtPayRate.BackColor = System.Drawing.Color.White;
}
if (Request["txtStartDate"].ToString().Trim() == "")
{
txtStartDate.BackColor =
System.Drawing.Color.Yellow;
lblError.Text += "Must enter a Start Date. ";
validatedState = true;
}
if (Request["txtEndDate"].ToString().Trim() == "")
{
txtEndDate.BackColor =
System.Drawing.Color.Yellow;
lblError.Text += "Must enter an End Date. ";
validatedState = true;
}
// First this method saves the dates into the dt1 and dt2
variables and then perform the second part described on next
line.
// Second part it is a compare method to ensure the end
date is later than the start date and will make the text boxes
background yellow color.
if (txtStartDate.Text.Trim() != "" &
txtEndDate.Text.Trim() != "")
{
dt1 = DateTime.Parse(txtStartDate.Text);
dt2 = DateTime.Parse(txtEndDate.Text);
if (DateTime.Compare(dt1, dt2) > 0)
{
txtStartDate.BackColor =
System.Drawing.Color.Yellow;
txtEndDate.BackColor =
System.Drawing.Color.Yellow;
lblError.Text += "The end date must be a later date
than the start date.";
validatedState = true;
}
else
{
// This will ensure that the background color goes
back to white if the textbox is filled and no errors are found.
txtStartDate.BackColor =
System.Drawing.Color.White;
txtEndDate.BackColor =
System.Drawing.Color.White;
}
}
// This method saves the data from the session and pass it
to the frmPersonnelVerified.
if (validatedState == false)
{
Session["txtFirstName"] = txtFirstName.Text;
Session["txtLastName"] = txtLastName.Text;
Session["txtPayRate"] = txtPayRate.Text;
Session["txtStartDate"] = txtStartDate.Text;
Session["txtEndDate"] = txtEndDate.Text;
Response.Redirect("frmPersonnelVerified.aspx");
}
}
}
}
}
PayrollSystem (1)/PayrollSystem/frmPersonnelVerified.aspx
HyperLink
PayrollSystem (1)/PayrollSystem/frmPersonnelVerified.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmPersonnelVerified : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Get the data from the Session of the previous form, the
frmPersonnel.aspx
txtVerifiedInfo.Text = Session["txtFirstName"].ToString()
+
"n" + Session["txtLastName"].ToString() +
"n" + Session["txtPayRate"].ToString() +
"n" + Session["txtStartDate"].ToString() +
"n" + Session["txtEndDate"].ToString();
// call the SavePersonnel method from clsDataLayer.cs and
pass the session data. After it will validate if the
// data was saved if not then will pop an error message
saying that the data was not saved.
if
(clsDataLayer.SavePersonnel(Server.MapPath("PayrollSystem_
DB.accdb"),
Session["txtFirstName"].ToString(),
Session["txtLastName"].ToString(),
Session["txtPayRate"].ToString(),
Session["txtStartDate"].ToString(),
Session["txtEndDate"].ToString()))
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"nThe information was successfully saved.";
}
else
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"nThe information was NOT saved.";
}
}
}
PayrollSystem (1)/PayrollSystem/frmSalaryCalculator.aspx
PayrollSystem (1)/PayrollSystem/frmSalaryCalculator.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmSalaryCalculator : System.Web.UI.Page
{
protected void btnReset_Click(object sender, EventArgs e)
{
txtAnnualHours.Text = "";
txtAnnualSalary.Text = "";
txtPayRate.Text = "";
}
protected void btnCalculateSalary_Click(object sender,
EventArgs e)
{
Double annualhours, payrate, annualsalary;
try
{
annualhours = Double.Parse(txtAnnualHours.Text);
payrate = Double.Parse(txtPayRate.Text);
if (annualhours > 0)
{
if (payrate > 0)
{
annualsalary = annualhours * payrate;
txtAnnualSalary.Text =
annualsalary.ToString("C");
}
else
txtAnnualSalary.Text = "Pay Rate should be
greater than zero";
}
else
txtAnnualSalary.Text = "Annual Hours should be
greater than zero";
}
catch (Exception ex)
{
txtAnnualSalary.Text = "Error : " + ex.Message;
}
}
}
PayrollSystem (1)/PayrollSystem/frmUserActivity.aspx
PayrollSystem (1)/PayrollSystem/frmUserActivity.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class frmUserActivity : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Declares the DataSet
dsUserActivity myDataSet = new dsUserActivity();
// Fill the dataset with what is returned from the
function
myDataSet =
clsDataLayer.GetUserActivity(Server.MapPath("PayrollSystem_
DB.accdb"));
// Sets the DataGrid to the DataSource based on the
table
grdUserActivity.DataSource =
myDataSet.Tables["tblUserActivity"];
// Binds the DataGrid
grdUserActivity.DataBind();
}
}
}
PayrollSystem (1)/PayrollSystem/Images/Activity.png
PayrollSystem (1)/PayrollSystem/Images/calculator.jpeg
PayrollSystem (1)/PayrollSystem/Images/employee.jpg
PayrollSystem (1)/PayrollSystem/Images/personnelmanager.png
PayrollSystem (1)/PayrollSystem/Images/Search.png
PayrollSystem
(1)/PayrollSystem/PayrollSystem_DB.accdbIDFirstNameLastNa
mePayRateStartDateEndDateActivityIDUserIPDateOfActivityFo
rmAccessed110.154.77.7811/26/17frmPersonnel210.154.77.781
1/26/17frmPersonnel310.154.77.7811/26/17frmPersonnel410.15
4.77.7811/26/17frmPersonnelUserIDUserNameUserPasswordSec
urityLevel1MickeyMouseA2MinnieMouseU
PayrollSystem (1)/PayrollSystem/Web.config
PayrollSystem (1)/PayrollSystem/Web.Debug.config
PayrollSystem
(1)/PayrollSystem_DB.accdbIDFirstNameLastNamePayRateStar
tDateEndDateActivityIDUserIPDateOfActivityFormAccessed11
0.154.77.7811/26/17frmPersonnel210.154.77.7811/26/17frmPer
sonnel310.154.77.7811/26/17frmPersonnel410.154.77.7811/26/1
7frmPersonnelUserIDUserNameUserPasswordSecurityLevel1Mi
ckeyMouseA2MinnieMouseU
PayrollSystem (1)/Web.config
WEEK 5: LAB OVERVIEW
Table of Contents
Lab 5 of 7: Transaction Processing (30 points)
Lab Overview
Scenario/Summary
This week, we will use the .NET OleDbTransaction functions to
either commit a set of changes to the database, if all of them
were done correctly, or to roll back all of the changes if there
was an error in any one of them. We will first modify the code
that we created last week so that it will save personnel data in
the database in two steps; first by inserting a personnel record
for a new employee, and then by updating that record to fill in
the start and end dates. This two-step approach is not really
needed in this simple case, but we will use it to simulate a more
complex database transaction that would have to be done in
multiple steps, such as one involving more than one table or
even more than one database. We will then see what happens
when there is an error in the second operation (the update),
allowing a record to be created containing incomplete
information: not a good result! We will fix the problem by
wrapping both operations (the insert and the update) into a
single transaction that will be committed (made permanent) only
if both operations succeed or will be rolled back (undone) if
either operation fails. We will also add client-side validation
using the ASP.Net validation controls, and we will allow the
user an easy way to edit all employees.
Please watch the tutorial before beginning the Lab.
Transcript
Deliverables
All files are located in the subdirectory of the project. The
project should function as specified: When you press
the Submit button in frmPersonnel, a record should be saved in
the tblPersonnel table containing the FirstName, LastName,
PayRate, StartDate, and EndDate that you entered. Test that the
transaction will roll back by entering invalid information in one
or more items, such as Hello for a StartDate. Check that client-
side validation works: The ability to edit employees in a grid is
working. Once you have verified that it works, save your
website, zip up all files, and submit them.
Required Software
Microsoft Visual Studio.NET
Access the software at https://lab.devry.edu (Links to an
external site.)Links to an external site..
Steps: 1, 2, and 3
Lab Steps
STEP 1: Modify the clsDataLayer to Use a Two-Step Process
1. Open Microsoft Visual Studio.NET.
2. Click the ASP.NET project called PayrollSystem to open it.
3. Open the clsDataLayer class.
4. Modify the SavePersonnel() function so that instead of just
doing a single SQL INSERT operation with all of the personnel
data, it does an INSERT with only the FirstName and
LastName, followed by an UPDATE to save the PayRate,
StartDate, and EndDate into the new record. (This two-step
approach is not really necessary here because we are dealing
with only one table, tblPersonnel, but we are doing it to
simulate a case with more complex processing requirements, in
which we would need to insert or update data in more than one
table or maybe even more than one database.) Find the
following existing code in the SavePersonnel() function:
// Add your comments here
strSQL = "Insert into tblPersonnel " +
"(FirstName, LastName, PayRate, StartDate, EndDate)
values ('" +
FirstName + "', '" + LastName + "', " + PayRate + ", '" +
StartDate +
"', '" + EndDate + "')";
// Add your comments here
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// Add your comments here
command.ExecuteNonQuery();
Modify it so that it reads as follows:
// Add your comments here
strSQL = "Insert into tblPersonnel " +
"(FirstName, LastName) values ('" +
FirstName + "', '" + LastName + "')";
// Add your comments here
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// Add your comments here
command.ExecuteNonQuery();
// Add your comments here
strSQL = "Update tblPersonnel " +
"Set PayRate=" + PayRate + ", " +
"StartDate='" + StartDate + "', " +
"EndDate='" + EndDate + "' " +
"Where ID=(Select Max(ID) From tblPersonnel)";
// Add your comments here
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// Add your comments here
command.ExecuteNonQuery();
5. Set frmMain as the startup form and run the PayrollSystem
Web application to test the changes. When valid data values are
entered for a new employee, things should work exactly as they
did previously. To test it, enter valid data for a new employee in
frmPersonnel and click Submit. The frmPersonnelVerified form
should be displayed with the entered data values and a message
that the record was saved successfully. Click the View
Personnel button and check that the new personnel record was
indeed saved to the database and that all entered data values,
including the PayRate, StartDate, and EndDate, were stored
correctly. Close the browser window.
Now run the PayrollSystem Web application again, but this
time, enter some invalid data (a nonnumeric value) in the
PayRate field to cause an error, like this:
6. Now, when you click Submit, the frmPersonnelVerified form
should display a message indicating that the record
was not saved:
However, when you click on the View Personnel button to
display the personnel records, you should see that an incomplete
personnel record was in fact created, with missing values for the
PayRate, StartDate, and EndDate fields.
This occurred because the Insert statement succeeded but the
following Update statement did not. We do not want to allow
this to happen because we end up with incomplete or incorrect
data in the database. If the Update statement fails, we want the
Insert statement to be rolled back, or undone, so that we end up
with no record at all. We will fix this by adding transaction
code in the next step.
STEP 2: Add Transaction Code
7. In the clsDataLayer.cls class file, add code to the
SavePersonnel() function to create a transaction object. Begin
the transaction, commit the transaction if all database
operations are successful, and roll back the transaction if any
database operation fails. The following listing shows the
complete SavePersonnel() function; the lines you will need to
add are marked with ** NEW ** in the preceding comment and
are shown in bold and underlined.
// This function saves the personnel data
public static bool SavePersonnel(string Database, string
FirstName, string LastName,
string PayRate, string StartDate, string
EndDate)
{
bool recordSaved;
// ** NEW ** Add your comments here
OleDbTransaction myTransaction = null;
try
{
// Add your comments here
OleDbConnection conn = new
OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;"
+
"Data Source=" +
Database);
conn.Open();
OleDbCommand command = conn.CreateCommand();
string strSQL;
// ** NEW ** Add your comments here
myTransaction = conn.BeginTransaction();
command.Transaction = myTransaction;
// Add your comments here
strSQL = "Insert into tblPersonnel " +
"(FirstName, LastName) values ('" +
FirstName + "', '" + LastName + "')";
// Add your comments here
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// Add your comments here
command.ExecuteNonQuery();
// Add your comments here
strSQL = "Update tblPersonnel " +
"Set PayRate=" + PayRate + ", " +
"StartDate='" + StartDate + "', " +
"EndDate='" + EndDate + "' " +
"Where ID=(Select Max(ID) From tblPersonnel)";
// Add your comments here
command.CommandType = CommandType.Text;
command.CommandText = strSQL;
// Add your comments here
command.ExecuteNonQuery();
// ** NEW ** Add your comments here
myTransaction.Commit();
// Add your comments here
conn.Close();
recordSaved = true;
}
catch (Exception ex)
{
// ** NEW ** Add your comments here
myTransaction.Rollback();
recordSaved = false;
}
return recordSaved;
}
8. Run your Web application. First, enter valid data in all fields
of frmPersonnel. When you press the Submit button in
frmPersonnel, a record should be saved in the tblPersonnel table
containing the FirstName, LastName, PayRate, StartDate, and
EndDate. With valid data entered in all items, the successfully
saved message should appear, indicating that the transaction
was committed.
Click the View Personnel button and verify that the new record
was in fact added to the database table correctly.
9. Now, close the browser, run the Web application again, and
this time, test that the transaction will roll back after entering
incorrect information. On the frmPersonnel form,
enter invalid data for PayRate and click Submit. The not
saved message should appear, which indicates that the
transaction was rolled back.
Click the View Personnel button and verify that this time, as
desired, an incomplete record was not added to the database
table.
10. You have seen how we used the try/catch block to catch an
unexpected error. You may have noticed that if you enter bad
data for the dates, an exception is thrown. Go back to the
validation code that you added in the frmPersonnel code and
add a try/catch with logic to prevent an invalid date from
causing a server error.
11. In the Week 3 Lab, you learned how to validate code once
the page was posted back to the server. There is some validation
that must be done on the server because it requires server
resources such as the database. Some validation can also be
done on the client. If you can do validation on the client, it
saves a round trip to the server, which will improve
performance. In this approach, we will check values before the
page is submitted to the server for processing. Normally, there
is a combination of server and client validation used in a Web
application. ASP.Net includes validation controls which will
use JavaScript on the client to perform validation. You will find
these controls in the Validation group in the toolbox.
12. Add validation controls to the frmPersonnel form as
follows: For the first, last name, and pay rate, make sure each
field has data in it. Use the RequiredFieldValidator for this
task. Add the control to the right of the text box that you are
validating. The location of the validator control is where the
error message (if there is one) will appear for the control to
which you link the validator. You will be adding one validator
control for each text box that you want to validate. Remember
to set the ControlToValidate and ErrorMessage properties on
the validator control. Making this change eliminates the need
for the server-side check you were doing previously. Use
a regular expression validator to check that the start and end
date are in the correct format.
In order to keep the validation controls from causing wrapping,
you may want to increase the Panel width.
A regular expression for mm/dd/yyyy is this:
^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)dd$
13. Remove the View Personnel and Cancel buttons from the
frmPersonnel form, because they will cause a Postback and
invoke the client-side editing that you just added. The user is
able to get to the View Personnel from the main form and from
the personnel verification screen, so there is no need for
these buttons now.
14. Because you have entered data in this lab that is invalid and
those partial records are in the database, you will need to add
the ability to remove or update data. Open up frmMain and add
a new main form option called Edit Employees. Add the link
and image for it. This option will take the user to a new form
called frmEditPersonnel.
15. Add the new form frmEditPersonnel. On frmEditPersonnel,
add the ACIT logo at the top of the form. Add a label that
says Edit Employees. Add a GridView control with an ID
of grdEditPersonnel.
16. You will now add a SQLDataSource to the page. You will
be using a databound grid for this form unlike the previous
grids, in which you added as unbound (in the designer).
17. Add a new SQLDataSource control to the frmEditPersonnel
in the Design View. This is not a visible control; that is, it will
only appear in Design View, but the user will never see it. Note:
If you change the folder name or location of your database, you
will need to reconfigure the data source (right-click on the data
source control and select the Configure Data Source option).
18. There is a small > indicator in the Design View of the SQL
Data Source control that you added. If the configuration menu is
collapsed (press it to open the menu), or there is a < with the
menu displayed, from the data source menu, select Configure
Data Source.
19. Press the New Connection button and browse for the
database.
20. Press the Next button.
21. When asked if you want to save the connection in the
application configuration file, check the Yes check box and
press Next.
22. Select the tblPersonnel table.
23. Select all columns (you can use the * for this).
24. Press the Advanced button and check the Generate Insert,
Update, and Delete option and press the OK button.
25. Press the Next button.
26. Press the Test Query button and make sure that you see all
records in the database like the image below. If it does not,
repeat the above steps to make sure that you did everything
properly (and selected the correct database - if you are not sure,
open the database in Windows Explorer to be sure that it is the
one with data in tblPersonnel). Press the Finish button.
27. Click on the grid that you added in the Design View and
expand the Properties menu (the little > in the upper right of the
control). Choose the data source you just added. On the
GridView tasks menu, select Edit columns. Add an Edit,
Update, and Cancel Command field. Add a Delete Command
field. Press OK. You can now test the grid, which is a fully
functioning Update and Delete grid. Try it out!
STEP 3: Test and Submit
28. Once you have verified that everything works as it is
supposed to work, save your project, zip up all files, and submit
it.
NOTE: Make sure you include comments in the code provided
where specified (where the " // Your comments here" is
mentioned) and for any code you write, or else a 5-point
deduction per item (form, class, function) will be made.

More Related Content

Similar to Lab Steps: Mickey Mouse (Admin) Login and Minnie Mouse (User) Login

Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...
Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...
Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...Nagios
 
LearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLLearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLAkhil Mittal
 
Diving into VS 2015 Day5
Diving into VS 2015 Day5Diving into VS 2015 Day5
Diving into VS 2015 Day5Akhil Mittal
 
Demo how to create visualforce page and custom controller via developer console
Demo how to create visualforce page and custom controller via developer consoleDemo how to create visualforce page and custom controller via developer console
Demo how to create visualforce page and custom controller via developer consoletuan vo
 
Cis407 a ilab 1 web application development devry university
Cis407 a ilab 1 web application development devry universityCis407 a ilab 1 web application development devry university
Cis407 a ilab 1 web application development devry universitylhkslkdh89009
 
Cis 407 i lab 4 of 7
Cis 407 i lab 4 of 7Cis 407 i lab 4 of 7
Cis 407 i lab 4 of 7helpido9
 
Claims based authentication in share point 2010 .new
Claims based authentication in share point 2010 .newClaims based authentication in share point 2010 .new
Claims based authentication in share point 2010 .newRavikantChaturvedi
 
Cis407 a ilab 4 web application development devry university
Cis407 a ilab 4 web application development devry universityCis407 a ilab 4 web application development devry university
Cis407 a ilab 4 web application development devry universitylhkslkdh89009
 
Implementing Your Full Stack App with MongoDB Stitch (Tutorial)
Implementing Your Full Stack App with MongoDB Stitch (Tutorial)Implementing Your Full Stack App with MongoDB Stitch (Tutorial)
Implementing Your Full Stack App with MongoDB Stitch (Tutorial)MongoDB
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Previous weeks work has been uploaded as well as any other pieces ne.docx
Previous weeks work has been uploaded as well as any other pieces ne.docxPrevious weeks work has been uploaded as well as any other pieces ne.docx
Previous weeks work has been uploaded as well as any other pieces ne.docxkeilenettie
 
Detail view in distributed technologies
Detail view in distributed technologiesDetail view in distributed technologies
Detail view in distributed technologiesjamessakila
 
Using prime[31] to connect your unity game to azure mobile services
Using prime[31] to connect your unity game to azure mobile servicesUsing prime[31] to connect your unity game to azure mobile services
Using prime[31] to connect your unity game to azure mobile servicesDavid Voyles
 
Sap solution manager change request management
Sap solution manager change request managementSap solution manager change request management
Sap solution manager change request managementdryday sunny
 
Aggregate persistence wizard
Aggregate persistence wizardAggregate persistence wizard
Aggregate persistence wizardreturnasap
 
Cis 407 i lab 1 of 7
Cis 407 i lab 1 of 7Cis 407 i lab 1 of 7
Cis 407 i lab 1 of 7helpido9
 

Similar to Lab Steps: Mickey Mouse (Admin) Login and Minnie Mouse (User) Login (20)

Angularjs Live Project
Angularjs Live ProjectAngularjs Live Project
Angularjs Live Project
 
Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...
Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...
Nagios Conference 2013 - Jake Omann - Developing Nagios XI Components and Wiz...
 
LearningMVCWithLINQToSQL
LearningMVCWithLINQToSQLLearningMVCWithLINQToSQL
LearningMVCWithLINQToSQL
 
Diving into VS 2015 Day5
Diving into VS 2015 Day5Diving into VS 2015 Day5
Diving into VS 2015 Day5
 
Demo how to create visualforce page and custom controller via developer console
Demo how to create visualforce page and custom controller via developer consoleDemo how to create visualforce page and custom controller via developer console
Demo how to create visualforce page and custom controller via developer console
 
Cis407 a ilab 1 web application development devry university
Cis407 a ilab 1 web application development devry universityCis407 a ilab 1 web application development devry university
Cis407 a ilab 1 web application development devry university
 
Cis 407 i lab 4 of 7
Cis 407 i lab 4 of 7Cis 407 i lab 4 of 7
Cis 407 i lab 4 of 7
 
Claims based authentication in share point 2010 .new
Claims based authentication in share point 2010 .newClaims based authentication in share point 2010 .new
Claims based authentication in share point 2010 .new
 
Cis407 a ilab 4 web application development devry university
Cis407 a ilab 4 web application development devry universityCis407 a ilab 4 web application development devry university
Cis407 a ilab 4 web application development devry university
 
Implementing Your Full Stack App with MongoDB Stitch (Tutorial)
Implementing Your Full Stack App with MongoDB Stitch (Tutorial)Implementing Your Full Stack App with MongoDB Stitch (Tutorial)
Implementing Your Full Stack App with MongoDB Stitch (Tutorial)
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Previous weeks work has been uploaded as well as any other pieces ne.docx
Previous weeks work has been uploaded as well as any other pieces ne.docxPrevious weeks work has been uploaded as well as any other pieces ne.docx
Previous weeks work has been uploaded as well as any other pieces ne.docx
 
Detail view in distributed technologies
Detail view in distributed technologiesDetail view in distributed technologies
Detail view in distributed technologies
 
Using prime[31] to connect your unity game to azure mobile services
Using prime[31] to connect your unity game to azure mobile servicesUsing prime[31] to connect your unity game to azure mobile services
Using prime[31] to connect your unity game to azure mobile services
 
Sap solution manager change request management
Sap solution manager change request managementSap solution manager change request management
Sap solution manager change request management
 
Aggregate persistence wizard
Aggregate persistence wizardAggregate persistence wizard
Aggregate persistence wizard
 
Cis 407 i lab 1 of 7
Cis 407 i lab 1 of 7Cis 407 i lab 1 of 7
Cis 407 i lab 1 of 7
 
Step by step exercise for bw 365
Step by step exercise for bw 365Step by step exercise for bw 365
Step by step exercise for bw 365
 
data binding.docx
data binding.docxdata binding.docx
data binding.docx
 
Module05
Module05Module05
Module05
 

More from smile790243

PART B Please response to these two original posts below. Wh.docx
PART B Please response to these two original posts below. Wh.docxPART B Please response to these two original posts below. Wh.docx
PART B Please response to these two original posts below. Wh.docxsmile790243
 
Part C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docxPart C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docxsmile790243
 
PART A You will create a media piece based around the theme of a.docx
PART A You will create a media piece based around the theme of a.docxPART A You will create a media piece based around the theme of a.docx
PART A You will create a media piece based around the theme of a.docxsmile790243
 
Part 4. Implications to Nursing Practice & Implication to Patien.docx
Part 4. Implications to Nursing Practice & Implication to Patien.docxPart 4. Implications to Nursing Practice & Implication to Patien.docx
Part 4. Implications to Nursing Practice & Implication to Patien.docxsmile790243
 
PART AHepatitis C is a chronic liver infection that can be e.docx
PART AHepatitis C is a chronic liver infection that can be e.docxPART AHepatitis C is a chronic liver infection that can be e.docx
PART AHepatitis C is a chronic liver infection that can be e.docxsmile790243
 
Part A post your answer to the following question1. How m.docx
Part A post your answer to the following question1. How m.docxPart A post your answer to the following question1. How m.docx
Part A post your answer to the following question1. How m.docxsmile790243
 
PART BPlease response to these two original posts below..docx
PART BPlease response to these two original posts below..docxPART BPlease response to these two original posts below..docx
PART BPlease response to these two original posts below..docxsmile790243
 
Part A (50 Points)Various men and women throughout history .docx
Part A (50 Points)Various men and women throughout history .docxPart A (50 Points)Various men and women throughout history .docx
Part A (50 Points)Various men and women throughout history .docxsmile790243
 
Part A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docx
Part A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docxPart A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docx
Part A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docxsmile790243
 
Part A Develop an original age-appropriate activity for your .docx
Part A Develop an original age-appropriate activity for your .docxPart A Develop an original age-appropriate activity for your .docx
Part A Develop an original age-appropriate activity for your .docxsmile790243
 
Part 3 Social Situations2. Identify multicultural challenges th.docx
Part 3 Social Situations2. Identify multicultural challenges th.docxPart 3 Social Situations2. Identify multicultural challenges th.docx
Part 3 Social Situations2. Identify multicultural challenges th.docxsmile790243
 
Part A (1000 words) Annotated Bibliography - Create an annota.docx
Part A (1000 words) Annotated Bibliography - Create an annota.docxPart A (1000 words) Annotated Bibliography - Create an annota.docx
Part A (1000 words) Annotated Bibliography - Create an annota.docxsmile790243
 
Part 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docx
Part 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docxPart 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docx
Part 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docxsmile790243
 
Part 3 Social Situations • Proposal paper which identifies multicul.docx
Part 3 Social Situations • Proposal paper which identifies multicul.docxPart 3 Social Situations • Proposal paper which identifies multicul.docx
Part 3 Social Situations • Proposal paper which identifies multicul.docxsmile790243
 
Part 3 Social Situations 2. Identify multicultural challenges that .docx
Part 3 Social Situations 2. Identify multicultural challenges that .docxPart 3 Social Situations 2. Identify multicultural challenges that .docx
Part 3 Social Situations 2. Identify multicultural challenges that .docxsmile790243
 
Part 2The client is a 32-year-old Hispanic American male who c.docx
Part 2The client is a 32-year-old Hispanic American male who c.docxPart 2The client is a 32-year-old Hispanic American male who c.docx
Part 2The client is a 32-year-old Hispanic American male who c.docxsmile790243
 
Part 2For this section of the template, focus on gathering deta.docx
Part 2For this section of the template, focus on gathering deta.docxPart 2For this section of the template, focus on gathering deta.docx
Part 2For this section of the template, focus on gathering deta.docxsmile790243
 
Part 2 Observation Summary and Analysis • Summary paper of observat.docx
Part 2 Observation Summary and Analysis • Summary paper of observat.docxPart 2 Observation Summary and Analysis • Summary paper of observat.docx
Part 2 Observation Summary and Analysis • Summary paper of observat.docxsmile790243
 
Part 2 Observation Summary and Analysis 1. Review and implement any.docx
Part 2 Observation Summary and Analysis 1. Review and implement any.docxPart 2 Observation Summary and Analysis 1. Review and implement any.docx
Part 2 Observation Summary and Analysis 1. Review and implement any.docxsmile790243
 
Part 2Data collectionfrom your change study initiative,.docx
Part 2Data collectionfrom your change study initiative,.docxPart 2Data collectionfrom your change study initiative,.docx
Part 2Data collectionfrom your change study initiative,.docxsmile790243
 

More from smile790243 (20)

PART B Please response to these two original posts below. Wh.docx
PART B Please response to these two original posts below. Wh.docxPART B Please response to these two original posts below. Wh.docx
PART B Please response to these two original posts below. Wh.docx
 
Part C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docxPart C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docx
 
PART A You will create a media piece based around the theme of a.docx
PART A You will create a media piece based around the theme of a.docxPART A You will create a media piece based around the theme of a.docx
PART A You will create a media piece based around the theme of a.docx
 
Part 4. Implications to Nursing Practice & Implication to Patien.docx
Part 4. Implications to Nursing Practice & Implication to Patien.docxPart 4. Implications to Nursing Practice & Implication to Patien.docx
Part 4. Implications to Nursing Practice & Implication to Patien.docx
 
PART AHepatitis C is a chronic liver infection that can be e.docx
PART AHepatitis C is a chronic liver infection that can be e.docxPART AHepatitis C is a chronic liver infection that can be e.docx
PART AHepatitis C is a chronic liver infection that can be e.docx
 
Part A post your answer to the following question1. How m.docx
Part A post your answer to the following question1. How m.docxPart A post your answer to the following question1. How m.docx
Part A post your answer to the following question1. How m.docx
 
PART BPlease response to these two original posts below..docx
PART BPlease response to these two original posts below..docxPART BPlease response to these two original posts below..docx
PART BPlease response to these two original posts below..docx
 
Part A (50 Points)Various men and women throughout history .docx
Part A (50 Points)Various men and women throughout history .docxPart A (50 Points)Various men and women throughout history .docx
Part A (50 Points)Various men and women throughout history .docx
 
Part A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docx
Part A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docxPart A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docx
Part A1. K2. D3. N4. C5. A6. O7. F8. Q9. H10..docx
 
Part A Develop an original age-appropriate activity for your .docx
Part A Develop an original age-appropriate activity for your .docxPart A Develop an original age-appropriate activity for your .docx
Part A Develop an original age-appropriate activity for your .docx
 
Part 3 Social Situations2. Identify multicultural challenges th.docx
Part 3 Social Situations2. Identify multicultural challenges th.docxPart 3 Social Situations2. Identify multicultural challenges th.docx
Part 3 Social Situations2. Identify multicultural challenges th.docx
 
Part A (1000 words) Annotated Bibliography - Create an annota.docx
Part A (1000 words) Annotated Bibliography - Create an annota.docxPart A (1000 words) Annotated Bibliography - Create an annota.docx
Part A (1000 words) Annotated Bibliography - Create an annota.docx
 
Part 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docx
Part 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docxPart 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docx
Part 6 Disseminating Results Create a 5-minute, 5- to 6-sli.docx
 
Part 3 Social Situations • Proposal paper which identifies multicul.docx
Part 3 Social Situations • Proposal paper which identifies multicul.docxPart 3 Social Situations • Proposal paper which identifies multicul.docx
Part 3 Social Situations • Proposal paper which identifies multicul.docx
 
Part 3 Social Situations 2. Identify multicultural challenges that .docx
Part 3 Social Situations 2. Identify multicultural challenges that .docxPart 3 Social Situations 2. Identify multicultural challenges that .docx
Part 3 Social Situations 2. Identify multicultural challenges that .docx
 
Part 2The client is a 32-year-old Hispanic American male who c.docx
Part 2The client is a 32-year-old Hispanic American male who c.docxPart 2The client is a 32-year-old Hispanic American male who c.docx
Part 2The client is a 32-year-old Hispanic American male who c.docx
 
Part 2For this section of the template, focus on gathering deta.docx
Part 2For this section of the template, focus on gathering deta.docxPart 2For this section of the template, focus on gathering deta.docx
Part 2For this section of the template, focus on gathering deta.docx
 
Part 2 Observation Summary and Analysis • Summary paper of observat.docx
Part 2 Observation Summary and Analysis • Summary paper of observat.docxPart 2 Observation Summary and Analysis • Summary paper of observat.docx
Part 2 Observation Summary and Analysis • Summary paper of observat.docx
 
Part 2 Observation Summary and Analysis 1. Review and implement any.docx
Part 2 Observation Summary and Analysis 1. Review and implement any.docxPart 2 Observation Summary and Analysis 1. Review and implement any.docx
Part 2 Observation Summary and Analysis 1. Review and implement any.docx
 
Part 2Data collectionfrom your change study initiative,.docx
Part 2Data collectionfrom your change study initiative,.docxPart 2Data collectionfrom your change study initiative,.docx
Part 2Data collectionfrom your change study initiative,.docx
 

Recently uploaded

Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,Virag Sontakke
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfMahmoud M. Sallam
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...
KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...
KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...M56BOOKSTORE PRODUCT/SERVICE
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerunnathinaik
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...jaredbarbolino94
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfadityarao40181
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 

Recently uploaded (20)

TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdf
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...
KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...
KSHARA STURA .pptx---KSHARA KARMA THERAPY (CAUSTIC THERAPY)————IMP.OF KSHARA ...
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developer
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdf
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 

Lab Steps: Mickey Mouse (Admin) Login and Minnie Mouse (User) Login