ibtaya
asked on
Creating an Update Record Form?
Let me tell you the scenerio. For an intranet site management wants to let employees input referrals they make into a database. No problem that works fine. Now management wants to go in to an admin site and "approve" whether a refferal is accepted or not. I figured the best way to do it is to create a check box in my Access Database and add it to a recordset and build an Update record form. But I'm getting all kinds of errors that makes me think there is a better way to do this, ... any ideas. I am willing to try anything, but am pretty new at web building so be simple.
ASKER
Two things, I didn't have the hidden field in the submit page. I can get the admin site to work if I leave the table alone using the Update Record Wizard. But when I try to rearrange the table it gives me errors. I'll let you know the errors in a minute.
ASKER
This error comes at the bottom of the screen when I view the site. It is showing the repeated fields like I hoped it would but this is listed at the bottom..
ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested opration requires a current record.
/incentives/depositadminte st.asp, line 201
ADODB.Field error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested opration requires a current record.
/incentives/depositadminte
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
In access, should the field be a regular text field or a checkbox. Or does it matter? Sorry for my unintelligence.
Hmmm, not 100% sure (as I use MySQL instead of Access), but a text field should work just fine with the form example I gave above. A checkbox field in Access might require something different in the form.
ASKER
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/inc.a sp" -->
<%
' *** Edit Operations: declare variables
Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd
Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId
Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i
MM_editAction = CStr(Request.ServerVariabl es("SCRIPT _NAME"))
If (Request.QueryString <> "") Then
MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request. QueryStrin g)
End If
' boolean to abort record edit
MM_abortEdit = false
' query string to execute
MM_editQuery = ""
%>
<%
' *** Update Record: set variables
If (CStr(Request("MM_update") ) = "form1" And CStr(Request("MM_recordId" )) <> "") Then
MM_editConnection = MM_inc_STRING
MM_editTable = "IncentivesTable"
MM_editColumn = "TypeofIncentive"
MM_recordId = "'" + Request.Form("MM_recordId" ) + "'"
MM_editRedirectUrl = "Depositapproved.htm"
MM_fieldsStr = "TypeofIncentive|value|Emp loyeeName| value|Cust omerFirstN ame|value| CustomerLa stName|val ue|Approve d|value"
MM_columnsStr = "TypeofIncentive|',none,'' |EmployeeN ame|',none ,''|Custom erFirstNam e|',none,' '|Customer LastName|' ,none,''|A pproved|no ne,1,0"
' create the MM_fields and MM_columns arrays
MM_fields = Split(MM_fieldsStr, "|")
MM_columns = Split(MM_columnsStr, "|")
' set the form values
For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
MM_fields(MM_i+1) = CStr(Request.Form(MM_field s(MM_i)))
Next
' append the query string to the redirect URL
If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
Else
MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
End If
End If
End If
%>
<%
' *** Update Record: construct a sql update statement and execute it
If (CStr(Request("MM_update") ) <> "" And CStr(Request("MM_recordId" )) <> "") Then
' create the sql update statement
MM_editQuery = "update " & MM_editTable & " set "
For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
MM_formVal = MM_fields(MM_i+1)
MM_typeArray = Split(MM_columns(MM_i+1)," ,")
MM_delim = MM_typeArray(0)
If (MM_delim = "none") Then MM_delim = ""
MM_altVal = MM_typeArray(1)
If (MM_altVal = "none") Then MM_altVal = ""
MM_emptyVal = MM_typeArray(2)
If (MM_emptyVal = "none") Then MM_emptyVal = ""
If (MM_formVal = "") Then
MM_formVal = MM_emptyVal
Else
If (MM_altVal <> "") Then
MM_formVal = MM_altVal
ElseIf (MM_delim = "'") Then ' escape quotes
MM_formVal = "'" & Replace(MM_formVal,"'","'' ") & "'"
Else
MM_formVal = MM_delim + MM_formVal + MM_delim
End If
End If
If (MM_i <> LBound(MM_fields)) Then
MM_editQuery = MM_editQuery & ","
End If
MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
Next
MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId
If (Not MM_abortEdit) Then
' execute the update
Set MM_editCmd = Server.CreateObject("ADODB .Command")
MM_editCmd.ActiveConnectio n = MM_editConnection
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnectio n.Close
If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editR edirectUrl )
End If
End If
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB .Recordset ")
Recordset1.ActiveConnectio n = MM_inc_STRING
Recordset1.Source = "SELECT EmployeeName, TypeofIncentive, CustomerFirstName, CustomerLastName, Approved FROM IncentivesTable"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<p> </p>
<form method="post" action="<%=MM_editAction%> " name="form1">
<table width="700" align="center">
<tr valign="baseline">
<td nowrap align="right"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
<tr valign="baseline">
<td nowrap align="right"><input type="checkbox" name="Approved" value=1 > </td>
<td> <input type="text" name="CustomerLastName" value="<%=(Recordset1.Fiel ds.Item("C ustomerLas tName").Va lue)%>" size="32">
</td>
<td><input type="text" name="CustomerFirstName" value="<%=(Recordset1.Fiel ds.Item("C ustomerFir stName").V alue)%>" size="32"></td>
<td><input type="text" name="TypeofIncentive" value="<%=(Recordset1.Fiel ds.Item("T ypeofIncen tive").Val ue)%>" size="32"></td>
<td><input type="text" name="EmployeeName" value="<%=(Recordset1.Fiel ds.Item("E mployeeNam e").Value) %>" size="32"></td>
</tr>
<%
Repeat1__index=Repeat1__in dex+1
Repeat1__numRows=Repeat1__ numRows-1
Recordset1.MoveNext()
Wend
%>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td><input type="submit" value="Update record">
</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<input type="hidden" name="MM_update" value="form1">
<input type="hidden" name="MM_recordId" value="<%= Recordset1.Fields.Item("ID ").Value %>">
</form>
<p> </p>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
<!--#include file="../Connections/inc.a
<%
' *** Edit Operations: declare variables
Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd
Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId
Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i
MM_editAction = CStr(Request.ServerVariabl
If (Request.QueryString <> "") Then
MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.
End If
' boolean to abort record edit
MM_abortEdit = false
' query string to execute
MM_editQuery = ""
%>
<%
' *** Update Record: set variables
If (CStr(Request("MM_update")
MM_editConnection = MM_inc_STRING
MM_editTable = "IncentivesTable"
MM_editColumn = "TypeofIncentive"
MM_recordId = "'" + Request.Form("MM_recordId"
MM_editRedirectUrl = "Depositapproved.htm"
MM_fieldsStr = "TypeofIncentive|value|Emp
MM_columnsStr = "TypeofIncentive|',none,''
' create the MM_fields and MM_columns arrays
MM_fields = Split(MM_fieldsStr, "|")
MM_columns = Split(MM_columnsStr, "|")
' set the form values
For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
MM_fields(MM_i+1) = CStr(Request.Form(MM_field
Next
' append the query string to the redirect URL
If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
Else
MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
End If
End If
End If
%>
<%
' *** Update Record: construct a sql update statement and execute it
If (CStr(Request("MM_update")
' create the sql update statement
MM_editQuery = "update " & MM_editTable & " set "
For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
MM_formVal = MM_fields(MM_i+1)
MM_typeArray = Split(MM_columns(MM_i+1),"
MM_delim = MM_typeArray(0)
If (MM_delim = "none") Then MM_delim = ""
MM_altVal = MM_typeArray(1)
If (MM_altVal = "none") Then MM_altVal = ""
MM_emptyVal = MM_typeArray(2)
If (MM_emptyVal = "none") Then MM_emptyVal = ""
If (MM_formVal = "") Then
MM_formVal = MM_emptyVal
Else
If (MM_altVal <> "") Then
MM_formVal = MM_altVal
ElseIf (MM_delim = "'") Then ' escape quotes
MM_formVal = "'" & Replace(MM_formVal,"'","''
Else
MM_formVal = MM_delim + MM_formVal + MM_delim
End If
End If
If (MM_i <> LBound(MM_fields)) Then
MM_editQuery = MM_editQuery & ","
End If
MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
Next
MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId
If (Not MM_abortEdit) Then
' execute the update
Set MM_editCmd = Server.CreateObject("ADODB
MM_editCmd.ActiveConnectio
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnectio
If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editR
End If
End If
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB
Recordset1.ActiveConnectio
Recordset1.Source = "SELECT EmployeeName, TypeofIncentive, CustomerFirstName, CustomerLastName, Approved FROM IncentivesTable"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<p> </p>
<form method="post" action="<%=MM_editAction%>
<table width="700" align="center">
<tr valign="baseline">
<td nowrap align="right"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
<tr valign="baseline">
<td nowrap align="right"><input type="checkbox" name="Approved" value=1 > </td>
<td> <input type="text" name="CustomerLastName" value="<%=(Recordset1.Fiel
</td>
<td><input type="text" name="CustomerFirstName" value="<%=(Recordset1.Fiel
<td><input type="text" name="TypeofIncentive" value="<%=(Recordset1.Fiel
<td><input type="text" name="EmployeeName" value="<%=(Recordset1.Fiel
</tr>
<%
Repeat1__index=Repeat1__in
Repeat1__numRows=Repeat1__
Recordset1.MoveNext()
Wend
%>
<tr valign="baseline">
<td nowrap align="right"> </td>
<td><input type="submit" value="Update record">
</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<input type="hidden" name="MM_update" value="form1">
<input type="hidden" name="MM_recordId" value="<%= Recordset1.Fields.Item("ID
</form>
<p> </p>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
Can you specify which is line 201?
Hopefully someone here can help with the ASP. You may also want to post a pointer question in the ASP TA.
Hopefully someone here can help with the ASP. You may also want to post a pointer question in the ASP TA.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Awaiting confirmation from ibtaya that this has resolved the issue - certainly appeared to in testing environment
Create your admin section page which is another form populated with your not-yet-approved entries (you can use Repeat Region to show them all). The management can review the submitted referrals and either accept the referral (which updates the approved value to '1' so that it appears on the site) or reject the entry and delete the record.
If this is essentially what you've done, what errors are you encountering?