Estou tendo problemas para fazer um update quando o mesmo tem vários campos gerados por um repeat region. Quando tenho só um resultado consigo fazer o update, mas quando tenho vários dá erro.
Veja o código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/catvi.asp" -->
<%
Dim MM_editAction
MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If
' boolean to abort record edit
Dim MM_abortEdit
MM_abortEdit = false
%>
<%
' IIf implementation
Function MM_IIf(condition, ifTrue, ifFalse)
If condition = "" Then
MM_IIf = ifFalse
Else
MM_IIf = ifTrue
End If
End Function
%>
<%
If (CStr(Request("MM_update")) = "form1") Then
If (Not MM_abortEdit) Then
' execute the update
Dim MM_editCmd
Set MM_editCmd = Server.CreateObject ("ADODB.Command")
MM_editCmd.ActiveConnection = MM_catvi_STRING
MM_editCmd.CommandText = "UPDATE Estoque SET Estoque = ? WHERE ProductDetailID = ?"
MM_editCmd.Prepared = true
MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 5, 1, -1, MM_IIF(Request.Form("qtidade"), Request.Form("qtidade"), null)) ' adDouble
MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 5, 1, -1, MM_IIF(Request.Form("MM_recordId"), Request.Form("MM_recordId"), null)) ' adDouble
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
' append the query string to the redirect URL
Dim MM_editRedirectUrl
MM_editRedirectUrl = "stockcontrol.asp"
If (Request.QueryString <> "") Then
If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0) Then
MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
Else
MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
End If
End If
Response.Redirect(MM_editRedirectUrl)
End If
End If
%>
<%
Dim rsOrder__MMColParam
rsOrder__MMColParam = "1"
If (Request.Form("numpedido") <> "") Then
rsOrder__MMColParam = Request.Form("numpedido")
End If
%>
<%
Dim rsOrder
Dim rsOrder_cmd
Dim rsOrder_numRows
Set rsOrder_cmd = Server.CreateObject ("ADODB.Command")
rsOrder_cmd.ActiveConnection = MM_catvi_STRING
rsOrder_cmd.CommandText = "SELECT OrderDetailsID, OrderID, estoque_final, ProductDetailID FROM orderDetails WHERE OrderID = ?"
rsOrder_cmd.Prepared = true
rsOrder_cmd.Parameters.Append rsOrder_cmd.CreateParameter("param1", 5, 1, -1, rsOrder__MMColParam) ' adDouble
Set rsOrder = rsOrder_cmd.Execute
rsOrder_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
rsOrder_numRows = rsOrder_numRows + Repeat1__numRows
%>
<%
Dim estoque__numRows
Dim estoque__index
estoque__numRows = -1
estoque__index = 0
rsOrder_numRows = rsOrder_numRows + estoque__numRows
%>
<%
Dim MM_paramName
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters
Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth
Dim MM_removeList
Dim MM_item
Dim MM_nextItem
' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If
MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""
' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
End If
Next
' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
End If
Next
' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "") Then
MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If
' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
If (firstItem <> "") Then
MM_joinChar = "&"
Else
MM_joinChar = ""
End If
End Function
%>
<%
Dim numprodid
numprodid = (rsOrder.Fields.Item("ProductDetailID").Value)
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style54 {font-family: Tahoma;
font-weight: bold;
font-size: 10px;
}
.style3 { font-size: 10px;
font-family: Tahoma;
width: 250px;
}
-->
</style>
</head>
<body>
<p>
<p><strong>Número do pedido:</strong><%=Request.Form("numpedido")%> </p>
<p>Detalhe do pedido: </p>
<p> </p>
<form ACTION="<%=MM_editAction%>" METHOD="POST" id="form1" name="form1">
<p> </p>
<%
While ((Repeat1__numRows <> 0) AND (NOT rsOrder.EOF))
%>
<table width="705" border="0">
<tr>
<td width="49"> </td>
<td width="278">Produto:
<input name="produtoid" type="text" id="produtoid" value="<%=(rsOrder.Fields.Item("ProductDetailID").Value)%>" /></td>
<td width="356">Quantidade :
<input name="qtidade" type="text" id="qtidade" value="<%=(rsOrder.Fields.Item("estoque_final").Value)%>" size="5" />
<input type="hidden" name="MM_recordId" value="<%= rsOrder.Fields.Item("ProductDetailID").Value %>" /></td>
</tr>
</table>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rsOrder.MoveNext()
Wend
%>
<p>
<input type="submit" name="Submit" value="Submit" />
</p>
<input type="hidden" name="MM_update" value="form1">
</form>
<p></p>
<p> </p>
<h5></h5></p>
<p> </p>
</body>
</html>
<%
rsOrder.Close()
Set rsOrder = Nothing
%>
Acredito que o problema é gerado porque o comando do update não consegue funcionar já que os campos gerados pelo repeat region tem o mesmo nome.
Não sei como criar nomes diferentes para os campos criados com o repeat region para que o update funcione corretamente. Se alguém souber por favor me ajude.
Pergunta
fabio_br
Bom dia
Estou tendo problemas para fazer um update quando o mesmo tem vários campos gerados por um repeat region. Quando tenho só um resultado consigo fazer o update, mas quando tenho vários dá erro.
Veja o código:
Acredito que o problema é gerado porque o comando do update não consegue funcionar já que os campos gerados pelo repeat region tem o mesmo nome.
Não sei como criar nomes diferentes para os campos criados com o repeat region para que o update funcione corretamente. Se alguém souber por favor me ajude.
Sem mais
Fábio
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.