Ir para conteúdo

POWERED BY:

Arquivado

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

Allan Toshio

[Resolvido] Update em BD dentro de laço while

Recommended Posts

Fala Pessoal!

 

Gostaria de uma pequena ajuda aqui..

 

Seguinte, eu preciso de atualizar vários dados ao mesmo tempo, por isso estou tentando desta forma. Não conheço outra solução, portanto, se alguém souber algo que possa me ajudar por favor!

 

O que estou fazendo:

 

Set objRs = Server.CreateObject("ADODB.Recordset")
strQuery = "SELECT * FROM tabela ORDER BY numero asc"
objRs.open strQuery, objConn, 3, 3

while not objRs.EOF
	numero = objRs("numero")
	abc = "abc." + (numero)
	abc = Request.Form(abc)
	strQuery = "UPDATE tabela SET abc = '"&abc&"' WHERE numero = '"& numero &"'"
	Set ObjRs = objConn.Execute(strQuery)
	objRs.MoveNext
wend

 

Acontece que está inserindo normalmente no BD, mas apenas o primeiro campo. Depois dá esse erro na linha em negrito:

 

Microsoft OLE DB Provider for ODBC Drivers erro '80004005'

 

[Microsoft][Driver ODBC para Microsoft Access] A operação deve usar uma consulta atualizável.

 

Set ObjRs = objConn.Execute(strQuery)

 

 

Tem essa coisa toda doida de concatenação mas é pq o form de onde vem as informações tem os nomes variáveis. Não sei se essa é a forma correta de se fazer isso. Se houver uma maneira mais prática também, agradeço pela ajuda.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse tipo de erro é causado pela falta de permissão de ALteração na pasta onde está o BD.

 

Verifique isso..

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, esse erro era isso mesmo, faltava permissão...

 

Mas agora está dando esse erro:

 

ADODB.Recordset erro '800a0e78'

 

Operação não permitida quando o objeto está fechado.

 

objRs.MoveNext

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!! Depois de horas e horas, madrugada a dentro, achei uma solução!

 

 

Código antigo, com problema:

Set objRs = Server.CreateObject("ADODB.Recordset")
strQuery = "SELECT * FROM tabela ORDER BY numero asc"
objRs.open strQuery, objConn, 3, 3

while not objRs.EOF
	numero = objRs("numero")
	abc = "abc." + (numero)
	abc = Request.Form(abc)
	strQuery = "UPDATE tabela SET abc = '"&abc&"' WHERE numero = '"& numero &"'"
	Set ObjRs = objConn.Execute(strQuery)
	objRs.MoveNext
wend

 

Código novo, funcionando:

Set objRs = Server.CreateObject("ADODB.Recordset")
strQuery = "SELECT * FROM tabela ORDER BY numero asc"
objRs.open strQuery, objConn, 3, 3

while not objRs.EOF
	numero = objRs("numero")
	abc = "abc." + (numero)
	abc = Request.Form(abc)
	strQueryB = "UPDATE tabela SET abc = '"&abc&"' WHERE numero = '"& numero &"'"
	Set ObjRsB = objConn.Execute(strQueryB)
	objRs.MoveNext
wend

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.