Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabio_br

Como faço um update de campos gerados pelo repeat region?

Recommended Posts

Bom diaEstou 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 qdo tenho vários dá erro.Veja o código:<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="Connections/catvi.asp" --><%Dim MM_editActionMM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)End If' boolean to abort record editDim MM_abortEditMM_abortEdit = false%><%' IIf implementationFunction MM_IIf(condition, ifTrue, ifFalse) If condition = "" Then MM_IIf = ifFalse Else MM_IIf = ifTrue End IfEnd 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 IfEnd If%><%Dim rsOrder__MMColParamrsOrder__MMColParam = "1"If (Request.Form("numpedido") <> "") Then rsOrder__MMColParam = Request.Form("numpedido")End If%><%Dim rsOrderDim rsOrder_cmdDim rsOrder_numRowsSet rsOrder_cmd = Server.CreateObject ("ADODB.Command")rsOrder_cmd.ActiveConnection = MM_catvi_STRINGrsOrder_cmd.CommandText = "SELECT OrderDetailsID, OrderID, estoque_final, ProductDetailID FROM orderDetails WHERE OrderID = ?" rsOrder_cmd.Prepared = truersOrder_cmd.Parameters.Append rsOrder_cmd.CreateParameter("param1", 5, 1, -1, rsOrder__MMColParam) ' adDoubleSet rsOrder = rsOrder_cmd.ExecutersOrder_numRows = 0%><%Dim Repeat1__numRowsDim Repeat1__indexRepeat1__numRows = -1Repeat1__index = 0rsOrder_numRows = rsOrder_numRows + Repeat1__numRows%><%Dim estoque__numRowsDim estoque__indexestoque__numRows = -1estoque__index = 0rsOrder_numRows = rsOrder_numRows + estoque__numRows%><%Dim MM_paramName %><%' *** Go To Record and Move To Record: create strings for maintaining URL and Form parametersDim MM_keepNoneDim MM_keepURLDim MM_keepFormDim MM_keepBothDim MM_removeListDim MM_itemDim MM_nextItem' create the list of parameters which should not be maintainedMM_removeList = "&index="If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="End IfMM_keepURL=""MM_keepForm=""MM_keepBoth=""MM_keepNone=""' add the URL parameters to the MM_keepURL stringFor 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 IfNext' add the Form variables to the MM_keepForm stringFor 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 IfNext' create the Form + URL string and remove the intial '&' from each of the stringsMM_keepBoth = MM_keepURL & MM_keepFormIf (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)End IfIf (MM_keepURL <> "") Then MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)End IfIf (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)End If' a utility function used for adding additional parameters to these stringsFunction MM_joinChar(firstItem) If (firstItem <> "") Then MM_joinChar = "&" Else MM_joinChar = "" End IfEnd Function%><%Dim numprodidnumprodid = (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 naum 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara do jeito que está ai ele vai dar update em em todos os produtos que estão dentro do loop, retornando o erro. tenta colocar um botão para cada registro para q quando clicar em atualizar ele passar so um ID.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei um tuturial que parece que ira servir, ele usa um contador e depois monta o comando do update usando ele de uma olhada:<%@LANGUAGE="VBSCRIPT"%><!--#include file="Connections/catvi.asp" --><%Response.Buffer = TrueDim iCountiCount = Request.Form("Count")Dim strLink, strIDDim strSQLDim Command1set Command1 = Server.CreateObject("ADODB.Connection")Command1.ConnectionString = MM_catvi_STRINGCommand1.OpenDim iLoopFor iLoop = 0 to iCountstrLink = Request.Form("qtidade")strID = Request(iLoop & ".ID")strSQL = "UPDATE Estoque SET Estoque = '" & strLink & "'" &_" WHERE ProductDetailID = " & strIDCommand1.Execute strSQLNextCommand1.CloseSet Command1 = NothingAté aproveitando a interação uma coisa que está dando erro aqui é na hora do update tenho o erro de mysmath data.Até sei onde é mas não sei resolver, no tuturial o código é:For iLoop = 0 to iCountstrLink = Request(iLoop & ".Link")strID = Request(iLoop & ".ID")strSQL = "UPDATE dbo.YourTable SET sCatName = '" & strLink & "'" &_" WHERE SCAT = " & strIDonde ScatName é uma variavel de texto aí ele usa as comas assim: '" & strLink & "'" no meu código:For iLoop = 0 to iCountstrLink = Request.Form("qtidade")strID = Request(iLoop & ".ID")strSQL = "UPDATE Estoque SET Estoque = '" & strLink & "'" &_" WHERE ProductDetailID = " & strIDa variavel Estoque é um número integer teria que alterar as comas dela mas não sei como elas deveriam ficar !!!Se puder ajudarAgradeceria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor alguem ajude a pelo menos me mostrar onde está o erro aqui:

 

For iLoop = 0 to iCount

strLink = Request.Form("qtidade")

strID = Request(iLoop & ".ID")

strSQL = "UPDATE Estoque SET Estoque = '" & strLink & "'" &_

" WHERE ProductDetailID = " & strID

 

a variavel Estoque é um número integer teria que alterar as comas dela mas não sei como elas deveriam ficar !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara a melhor maneira, é você atualizar um por um.

na sua lista cria um link alterar e passa para uma página o id como referencia

 

ex: alterar.asp?id=<%= rs("id") %>

 

e na pagina alterar você recupera o ID e faz o update somente nesse registro.

 

UPDATE table SET campo = '"& var &"' WHERE id = "& id &"

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.