<%Option Explicit On Error Resume Next%> Thank you! <% 'get data, store in variables, do data type conv. where needed Dim title, fname, mname, lname, address, city, state Dim country, zip, email, phone, skillDesc 'As String Dim skills 'As Byte array Dim refname, refEmail, refPhone 'As string Dim reference 'As Byte title = Trim(Left(Request.Form("title"), 10)) fname = Trim(Left(Request.Form("fname"), 25)) mname = Trim(Left(Request.Form("mname"), 25)) lname = Trim(Left(Request.Form("lname"), 25)) address = Trim(Left(Request.Form("address"), 50)) city = Trim(Left(Request.Form("city"), 25)) state = Trim(Left(Request.Form("state"), 25)) country = Trim(Left(Request.Form("country"), 35)) zip = Trim(Left(Request.Form("zip"), 25)) email = Trim(Left(Request.Form("email"), 30)) phone = Trim(Left(Request.Form("phone"), 25)) skillDesc = Trim(Left(Request.Form("skillDesc"), 1000)) skills = Split(Request.Form("skills"), ",", 40) Dim i For i = 0 To Ubound(skills) On Error Resume Next 'in case of out of bounds for byte data skills(i) = CByte(Trim(skills(i))) If Err.Number <> 0 Then Redim Preserve skills(i) 'resize array to hold only previous valid values Exit For End If Next refname = Trim(Left(Request.Form("refname"), 25)) refEmail = Trim(Left(Request.Form("refEmail"), 30)) refPhone = Trim(Left(Request.Form("refPhone"), 25)) 'On Error Resume Next reference = CByte((Left(Request.Form("reference"), 3))) If Err.Number <> 0 Then reference = 255 End If 'other specialty if none specified 'verify that required fields are present, else output error If(fname = "" Or lname = "" Or (email = "" And phone = "")) Then Response.Write("Form Incomplete
" & _ "

The form you submitted is incomplete. Click here " & _ "or use your back button to return to the sign up page. Fill in all fields marked with an asterisk(*).

") Else 'create records 'open database connection and insert new volunteer record Dim conec, nextID, recSet, vID set conec = Server.CreateObject("ADODB.Connection") conec.ConnectionString = "Password=airfrance;Data Source=Volunteers" conec.open 'check that new record is not duplicate of old records Dim duplicate, fnameTemp, lnameTemp, emailTemp, phoneTemp, addressTemp, skillDescTemp If fname = "" Then fnameTemp = " is null" If(fnameTemp <> " is null") Then fnameTemp = " = '" & fname & "'" If lname = "" Then lnameTemp = " is null" If(lnameTemp <> " is null") Then lnameTemp = " = '" & lname & "'" If email = "" Then emailTemp = " is null" If(emailTemp <> " is null") Then emailTemp = " = '" & email & "'" If phone = "" Then phoneTemp = " is null" If(phoneTemp <> " is null") Then phoneTemp = " = '" & phone & "'" If address = "" Then addressTemp = " is null" If(addressTemp <> " is null") Then addressTemp = " = '" & address & "'" If skillDesc = "" Then skillDescTemp = " is null" If(skillDescTemp <> " is null") Then skillDescTemp = " = '" & skillDesc & "'" duplicate = True 'assume true, then check set recSet = Server.CreateObject("ADODB.Recordset") recSet.open "select * from PersonalInfo where " & _ "FirstName" & fnameTemp & " and " & _ "LastName" & lnameTemp & " and " & _ "Email" & emailTemp & " and " & _ "Phone" & phoneTemp & " and " & _ "Address" & addressTemp & " and " & _ "SkillDesc" & skillDescTemp, conec, 3, 1 recSet.MoveLast If(recSet.RecordCount > 0) Then duplicate = True Else duplicate = False End If recSet.close nextID = conec.execute("select count(*) from PersonalInfo") If(Not(nextID(0) > 1000000000) And Not duplicate) Then 'no more than 1M records in database recSet.open "PersonalInfo", conec, 1, 3 'open for update; non-simultaneous recSet.AddNew If(title <> "") Then recSet("Title") = title End If recSet("FirstName") = fname If(mname <> "") Then recSet("MiddleName") = mname End If recSet("LastName") = lname If(address <> "") Then recSet("Address") = address End If If(city <> "") Then recSet("City") = city End If If(state <> "") Then recSet("State") = state End If If(zip <> "") Then recSet("PostalCode") = zip End If If(country <> "") Then recSet("Country") = country End If If(email <> "") Then recSet("Email") = email End If If(phone <> "") Then recSet("Phone") = phone End If If(skillDesc <> "") Then recSet("SkillDesc") = skillDesc End If If(refname <> "") Then recSet("RefName") = refname End If recSet("RefKey") = reference If(refEmail <> "") Then recSet("RefEmail") = refEmail End If If(refPhone <> "") Then recSet("RefPhone") = refPhone End If recSet.Update recSet.MoveLast vID = recSet.Fields(0).value recSet.close 'update VolunteerSkillJoin table recSet.open "select VolunteerID, SkillID from VolunteerSkillJoin", conec, 1, 3 For i = 0 To Ubound(skills) recSet.AddNew recSet("VolunteerID") = vID recSet("SkillID") = skills(i) recSet.Update Next recSet.close set recSet = nothing %>

Thank you for signing up...

Click here if you don't see a new page after a few seconds.

<% Else 'database is full, output message or duplicate Response.Write("

Sorry, cannot process transaction at this time. " & _ "Please try again soon or send inquiry.

") End If conec.close set conec = nothing End If Session.Abandon %>