Ir para conteúdo

POWERED BY:

Arquivado

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

rd111072

Update de vários registros

Recommended Posts

Boa tarde, moçada.

 

Estou tentando atualizar vários campos registros de uma vez, mas está dando erro:

 

Erro de tempo de execução do Microsoft VBScript erro '800a0009'

 

Subscrito fora do intervalo: '173'

 

/sis-vendedor/update_contatosdeC.asp, line 59

 

 

Essa e a linha 59: Response.write cod_contato(o)&"<BR>"

 

O código está assim:

 

<%

cod_cliente2 = Request.Querystring("cod_cliente")
nome_cliente2 = Request.Querystring("nome_cliente")
nome_contato = Request.Querystring("nome_contato")
cargo = Request.Querystring("cargo")
setor = Request.Querystring("setor")
email = Request.Querystring("email")
telefone = Request.Querystring("telefone")
celular = Request.Querystring("celular")
cod_contato = split(Request.Querystring("cod_contato"),",")
						   


b = cod_contato

v = 0
for i = 0 to lbound(b)
   if cint(b(i)) > cint(v) then
	   v = b(i)
   end if
next



u = 0
for e = 0 to ubound(b)
   if cint(b(e)) > cint(u) then
	   u = b(e)
   end if
next
Response.write(u)
						

For o = v To u

Response.write cod_contato(o)&"<BR>" 



sqlC = "Update Cliente_Contato Set eMail='"&email&"', NmPessoa='"&nome_contato&"', Cargo='"&cargo&"', Telefone='"&telefone&"', Setor='"&setor&"', Celular='"&celular&"' Where cdContato='"&cod_contato(o)&"'"
Response.write(sqlC)
response.End	   
set rsC = conexaoDB.execute(sqlC)
next
%>

Alguém sabe???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera essa linha

For o = v To u

 

para

For o = lBound(cod_contato) To uBound(cod_contato)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande hargon,

 

não funcionou. O response do sql deu isso:

 

Update Cliente_Contato Set eMail=', , , , ', NmPessoa='Fernando Saraiva, Simone Siqueira, Fabiano Abreu, Reynaldo Bastos, PATRICIA', Cargo=', , , , ', Telefone='2204-6663, 2204-6663, 2204-6663, 2204-6363, 2204-6663', Setor='diretoria, , , , ', Celular=', , , , ' Where cdContato='173'

 

Ou seja, só um valor em cdContato...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas nesse caso não foi pq você colocou response.end, aí só leu o FOR uma vez?

 

Qual mensagem de erro apresentada após a alteração que citei?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tirei o response.end

 

Agora deu:

 

Microsoft OLE DB Provider for ODBC Drivers erro '80040e57'

 

[Microsoft][ODBC SQL Server Driver]

String or binary data would be truncated. 

 

/sis-vendedor/update_contatosdeC.asp, line 68

 

Linha 68: set rsC = conexaoDB.execute(sqlC)

 

 

E o sql ficou igual, só com um valor em cdContato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, mudei todo o código e tentei adaptar de um que eu faço insert. Imaginei que pra fazer o UPdate seria o mesmo processo. Mas não:

 

Microsoft OLE DB Provider for ODBC Drivers erro '80040e07'

 

[Microsoft][ODBC SQL Server Driver]

Conversion failed when converting the varchar value '173, 174, 175, 176, 177' to data type int. 

 

/sis-vendedor/update_contatosdeC2.asp, line 48

 

linha 48: set rsC = conexaoDB.execute(sqlC)

 

A bagaça é essa aí:

<%
						   
cod_cliente2 = ""
nome_cliente2 = ""
nome_contato = ""
cargo = ""
setor = ""
email = ""
telefone = ""
celular = ""
cod_contato = ""
						   
for i = 173 to 177
						   
cod_cliente2 = Request.Form("cod_cliente"&i)
nome_cliente2 = Request.Form("nome_cliente"&i)	  
nome_contato = Request.Form("nome_contato"&i)
cargo = Request.Form("cargo"&i)
setor = Request.Form("setor"&i)
email = Request.Form("email"&i)
telefone = Request.Form("telefone"&i)
celular = Request.Form("celular"&i)
cod_contato = Request.Form("cod_contato"&i)
						   


sqlC = "Update Cliente_Contato Set eMail='"&email&"', NmPessoa='"&nome_contato&"', Cargo='"&cargo&"', Telefone='"&telefone&"', Setor='"&setor&"', Celular='"&celular&"' Where cdContato='"&cod_contato&"'"
Response.write(sqlC)
set rsC = conexaoDB.execute(sqlC)
next
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

escreve na tela o valor de sqlC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro acontece geralmente quando você faz uma das seguintes coisas:

tentativa de inserir uma data no Access com 'delimitadores;

tentativa de inserir uma data no SQL Server com # delimitadores;

tentativa de inserir uma data no Access ou o SQL Server sem delimitadores, ou

tentativa de inserir um dado malformada .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, calma lá !!!

 

Tão parecendo suporte técnico microsoft.... vamos ler o código antes....

 

O que tá acontecendo é que ele tá passando vários parâmetros concatenados em uma única variável, e tá tentando dar o update em cima dessa mesma variável....

 

Em suma, você está dizendo ao banco de dados algo assim:

 

Na tabela NOME_DA_TABELA coloque 'Erick' no campo nome se o cdContato for igual a '1,2,3,4,5'

Mas cdContato tem que ser 1 OU 2 OU 3 OU 4 OU 5

 

Então o problema está neste '1,2,3,4,5' que é a variável cod_contato da página.

 

O que você precisa fazer é quebrar essa variável:

 

codContatoS = Split(cod_contato,",")

E isto vai te retornar um Array.

 

Pra fazer o update você vai ter que rodar dentro desse array.

 

Como pelo que entendi, esta não é a única informação que vem concatenada (várias juntas numa mesma variável)

 

Eu te aconselho fazer o seguinte:

 

cod_cliente = split(request("cod_cliente"),",")
nome_cliente = split(request("nome_cliente"),",")
nome_contato = split(request("nome_contato"),",")
cargo = split(request("cargo"),",")
setor = split(request("setor"),",")
email = split(request("email"),",")
telefone = split(request("telefone"),",")
celular = split(request("celular"),",")
cod_contato = split(request("cod_contato"),",")

for x=0 to Ubound(cod_contato)
	sqlC = "Update Cliente_Contato Set eMail='"&email(x)&"', NmPessoa='"&nome_contato(x)&"', Cargo='"&cargo(x)&"', Telefone='"&telefone(x)&"', Setor='"&setor(x)&"', Celular='"&celular(x)&"' Where cdContato='"&cod_contato(x)&"'"
	Response.write(sqlC)
	'set rsC = conexaoDB.execute(sqlC) 'PRIMEIRO SEMPRE TESTE O CONTEÚDO DA VAR SQL, DEPOIS EXECUTE ELA NO BD, PRA EXECUTAR, TIRE O ' DO INICIO DESTA LINHA
next

Ai, se der erro, é porque está acontecendo o seguinte....

 

Voce esta passando 10 cod_contato, por exemplo, mas só está passando só 9 nome_cliente

O que acontece é que o array com o cod_contato terá uma posição a mais que o do nome_cliente, e aí vai dar erro na linha que monta o sql (sqlC) por causa do nome_cliente.

 

o nome_cliente, eu usei como exemplo, isto se aplica a todas as outras variaveis que nao a cod_contato

 

Espero ter ajudado, de-nos um retorno.....

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.