Ir para conteúdo

POWERED BY:

Arquivado

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

Ulisses Arrais

Update de Varios registros

Recommended Posts

O problema foi resolvido, demorou mas resolveu! Depois de muita pesquisa descobri que quando se faz um update de varios registros no Access o Array de dados tem que estar alinhado com o DB senão o Update fica rodando e não encontra o indice para funcionar. Estou postando os dois codigo para mostrar o que foi feito:


Esse codigo gera o form p/alteração:

 

<%
'Relação dos produtos da categoria selecionada
 Dim intRecId, HidRecId, varClie
'Recupera o codigo da categoria selecionada
 varClie = Trim(Request.Form("pesquisa"))
' Define variaveis e chama dados do DB
 Dim Recordset1
 Dim Recordset1_numRows, strConnection
 strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("prod0711.mdb") & ";Persist Security Info=False"
 Set Recordset1 = Server.CreateObject("ADODB.Recordset")
 Recordset1.ActiveConnection = strConnection
 Recordset1.Source = "SELECT cod_produto, produto, vrl_unitario FROM produtos WHERE cod_categoria = " & varClie & " "
 Recordset1.CursorType = 0
 Recordset1.CursorLocation = 2
 Recordset1.LockType = 1
 Recordset1.Open()
 Recordset1_numRows = 0
%>
<%
' Montando o Form
 Dim Repeat1__numRows
 Dim Repeat1__index
 Repeat1__numRows = -1
 Repeat1__index = 0
 Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<html>
<head>
<title>Updating</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function RecUpdate(cod_produto){
 var ThisID = "*" + (cod_produto) + "*"
 if (document.form1.hidRecIDs.value == ""){  
  document.form1.hidRecIDs.value = (ThisID) 
 }
 if (document.form1.hidRecIDs.value != ""){   
  var str = document.form1.hidRecIDs.value; 
  var pos = str.indexOf(ThisID);    
  if (pos == -1) {        
   document.form1.hidRecIDs.value = document.form1.hidRecIDs.value + ", " + (ThisID) 
  }            
 }             
}
//-->
</script>
</head>
<body>
<br />
<form name="form1" method="post" action="pagina5.asp">
 <div align="center">
   <table width="500" border="0" cellpadding="1" cellspacing="6" bgcolor="#F0F0F0">
     <tr bgcolor="#D6D6D6">
       <td width="37"><div align="center"><strong>Codigo</strong></div></td>
       <td width="217"><div align="center"><strong>Produto</strong></div></td>
       <td width="226"><div align="center"><strong>Preço</strong></div></td>
       </tr>
     <%
  While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
  %>
        <% intRecID =(Recordset1.Fields.Item("cod_produto").Value)%>
        <tr>
         <td nowrap><%= intRecID %><input name="hidRecID<%= intRecID %>" type="hidden" value="<%= intRecID %>" size="5"></td>
         <td nowrap><input name="txtText<%= intRecID %>" type="text" onChange="RecUpdate('<%= intRecID %>')" value="<%=(Recordset1.Fields.Item("produto").Value)%>" size="100"></td>
         <td nowrap><input name="txtNum<%= intRecID %>" type="text" onChange="RecUpdate('<%= intRecID %>')" value="<%=(Recordset1.Fields.Item("vrl_unitario").Value)%>" size="20"></td>
        </tr>
        <%
   Repeat1__index=Repeat1__index+1
   Repeat1__numRows=Repeat1__numRows-1
   Recordset1.MoveNext()
  Wend
  %>
     </table>
   <br />
   <input name="hidRecIDs" type="text" size="40">
   <=== Id´s que serão alterados!<br />
   <br />
   <input type="submit" name="Submit" value="Atualizar">
  </div>
</form>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>

 

E esse recupera o array e faz o update:

 

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim intRecIDs, arrRecIDs, intCount, strText, intNum, strMessage, strConnection, commUpdate
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("prod0711.mdb") & ";Persist Security Info=False"
If Request("Submit") <> "" Then
' remove os * para preparar o Array
 intRecIDs = Replace(Request("hidRecIDs"), "*", "")
' Cria o Array utilizando o ID do Produto  
 arrRecIDs = Split(intRecIDs, ", ")
' Preenchendo o Array 
 For intCount = 0 to Ubound(arrRecIDs)      
  strText = Replace(Request("txtText" & arrRecIDs(intCount)), "'", "''")
  intNum  = Replace(Request("txtNum" & arrRecIDs(intCount)), "'", "''")
' Faz o Update com os dados do Array  
  set commUpdate = Server.CreateObject("ADODB.Command")
  commUpdate.ActiveConnection = strConnection
  commUpdate.CommandText = "UPDATE produtos SET produto = '" & strText & "', vrl_unitario = " & intNum & " WHERE cod_produto = " & arrRecIDs(intCount)
  commUpdate.CommandType = 1
  commUpdate.CommandTimeout = 0
  commUpdate.Prepared = true
  commUpdate.Execute()
 Next
' Retorna a quantidade de registros atualizados
 strMessage = intCount & " Registro(s) Alterado(s)"
 Response.Redirect("pagina5.asp?Message=" & strMessage)
End If
%>
<html>
<body>
<%= Request.QueryString("Message") %>
</body>
</html>

 

Espero que esse codigo posso ajudar mais mais pessoas com esse problema!

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.