fabio_br 0 Denunciar post Postado Novembro 16, 2006 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
Ivan.Teles 23 Denunciar post Postado Novembro 16, 2006 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
fabio_br 0 Denunciar post Postado Novembro 17, 2006 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
fabio_br 0 Denunciar post Postado Novembro 18, 2006 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
Ivan.Teles 23 Denunciar post Postado Novembro 18, 2006 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
fabio_br 0 Denunciar post Postado Novembro 23, 2006 Ae vlwConsegui , vlw pelas dicas !!! Compartilhar este post Link para o post Compartilhar em outros sites