Ir para conteúdo

POWERED BY:

Arquivado

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

shumi

Subscrito fora do intervalo: 'I'

Recommended Posts

Galera,beleza?Estou fazendo um script e to quebrando a cabeça aqui, pois ta dando o erro:

Erro de tempo de execução do Microsoft VBScript erro '800a0009' Subscrito fora do intervalo: 'I' /sis/ponto_extra_valida.asp, line 45

Veja como esta:
<%set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MaPpath("dbsistema.mdb")Conexcao.openIf NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifestabelecimento = Request.Form("estabelecimento")data = Request.Form("data")produto = Request.Form("produto")tipo_ponto_extra = Request.Form("tipo_ponto_extra")encarte= Request.Form("encarte")cod = Request.form("cod")produto_con = Request.Form("produto_con")tipo_ponto_extra_con = Request.Form("tipo_ponto_extra_con")encarte_con= Request.Form("encarte_con")acao = Request.form("acao")Response.Expires = 0produtoo = Split(produto,",")tipo_ponto_extraa = SPLIT(tipo_ponto_extra,",")encartee = SPLIT(encarte,",")produto_conn = SPLIT(produto_con,",")tipo_ponto_extra_conn = SPLIT(tipo_ponto_extra_con,",")encarte_conn = SPLIT(encarte_con,",")FOR I = LBOUND(produtoo) TO UBOUND(produtoo)	SQL = "SELECT cliente from dados where acao= '"& acao &"'"	Set UmRS = conexcao.execute(SQL)	If not UmRS.EOF Then	sSQL = "INSERT INTO ponto_extra(cliente,acao,estabelecimento,data,produto,tipo_ponto_extra,encarte) VALUES ('"& UmRS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produtoo(I) &"','"& tipo_ponto_extraa(I) &"','"& encartee(I) &"')"   	Conexcao.Execute sSQL,intRetorno	End if		SQL = "SELECT cliente from dados where acao= '"& acao &"'"	Set RS = conexcao.execute(SQL)	If not RS.EOF Then	sSQL = "INSERT INTO ponto_extra_concorrente(cliente,acao,estabelecimento,data,produto_con,tipo_ponto_extra_con,encarte_con) VALUES ('"& RS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produto_conn(I) &"','"& tipo_ponto_extra_conn(I) &"','"& encarte_conn(I) &"')"	Conexcao.Execute sSQL,intRetorno	end IF	Nextsql2 = "select * from dados where campanha='" & cod &"'"Set rs2=Conexcao.Execute(sql2)If rs2("frentes") = True Then	Response.Redirect("frentes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("degustado") = True Then	Response.Redirect("degustado.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("observacoes") = True Then	Response.Redirect("observacoes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)set RS=nothingEnd IfConexcao.closeSet Conexcao=nothing%>
Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu tentei ler seu codigo, mas naum entendi muita coisa naum... :rolleyes:

 

mas assim, qd dah este erro:

 

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

 

Subscrito fora do intervalo: 'I'

 

quer dizer que você quer utilizar um item de um array que naum existe:

exemplo:

 

você te um array com 10 itens

e você tenta acessar o 11 item

 

aí ele da este erro!

 

reveja a sua lógica, às vezes os erros são tão bestas q a gente nem vê!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas é isso mesmo que você falou, pois se preencho tudo não da erro, mas se não preencho tudo dá erro...Como seria esse if???valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas beleza?

é assim???

e no final do script onde você escreveu sql depois do else???

veja que eu tenho 2 insert...

 

 

If InStr(produto,",") > 0 Thenprodutoo = Split(produto,",")tipo_ponto_extraa = SPLIT(tipo_ponto_extra,",")encartee = SPLIT(encarte,",")produto_conn = SPLIT(produto_con,",")tipo_ponto_extra_conn = SPLIT(tipo_ponto_extra_con,",")encarte_conn = SPLIT(encarte_con,",")FOR I = LBOUND(tipo_ponto_extraa) TO UBOUND(tipo_ponto_extraa)	SQL = "SELECT cliente from dados where acao= '"& acao &"'"	Set UmRS = conexcao.execute(SQL)	If not UmRS.EOF Then	sSQL = "INSERT INTO ponto_extra(cliente,acao,estabelecimento,data,produto,tipo_ponto_extra,encarte) VALUES ('"& UmRS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produtoo(I) &"','"& tipo_ponto_extraa(I) &"','"& encartee(I) &"')"   	Conexcao.Execute sSQL,intRetorno	End if	SQL = "SELECT cliente from dados where acao= '"& acao &"'"	Set RS = conexcao.execute(SQL)	If not RS.EOF Then	sSQL = "INSERT INTO ponto_extra_concorrente(cliente,acao,estabelecimento,data,produto_con,tipo_ponto_extra_con,encarte_con) VALUES ('"& RS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produto_conn(I) &"','"& tipo_ponto_extra_conn(I) &"','"& encarte_conn(I) &"')"	Conexcao.Execute sSQL,intRetorno	end IF	NextelseSQLend if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lucas,Deixa eu te falar um detalhe importante.Eu faço o request de diversos campo e todos eles vem separados por virgula. e todos os campos veem preenchido, exeto o campo tipo_ponto_extra, encarte, tipo_ponto_extra_con e encarte_con.falo isso pois você colocou no comentario isso aqui:'aqui a gente poe pra ele executar a sql caso nao exista array' os dados q serão inseridos é do formulário. Ou seja, aqui você nao usa nada de array, split, vetor'ou seja os VALUES devem ser os nomes q você recuperou do campo do form...o que devo fazer nessa parte? já que todos os meus request´s vão vir com virgulas?Valeu carinha!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Lucas beleza?

Fiz as alterações, mas não escreveu no banco...

veja como fiz:

<%If InStr(produto,",") > 0 Thenprodutoo = Split(produto,",")tipo_ponto_extraa = SPLIT(tipo_ponto_extra,",")encartee = SPLIT(encarte,",")produto_conn = SPLIT(produto_con,",")tipo_ponto_extra_conn = SPLIT(tipo_ponto_extra_con,",")encarte_conn = SPLIT(encarte_con,",")FOR I = LBOUND(tipo_ponto_extraa) TO UBOUND(tipo_ponto_extraa)	SQL = "SELECT cliente from dados where acao= '"& acao &"'"	Set UmRS = conexcao.execute(SQL)	If not UmRS.EOF Then	sSQL = "INSERT INTO ponto_extra(cliente,acao,estabelecimento,data,produto,tipo_ponto_extra,encarte) VALUES ('"& UmRS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produtoo(I) &"','"& tipo_ponto_extraa(I) &"','"& encartee(I) &"','"& cod &"')"	   Conexcao.Execute sSQL,intRetornosSQL = "INSERT INTO ponto_extra(cliente,acao,estabelecimento,data,produto,tipo_ponto_extra,encarte,campanha) VALUES ('"& UmRS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produto &"','"& tipo_ponto_extra &"','"& encarte &"','"& cod &"')"	   Conexcao.Execute sSQL,intRetornoelse 'aqui a gente poe pra ele executar a sql caso nao exista array' os dados q serão inseridos é do formulário. Ou seja, aqui você nao usa nada de array, split, vetor'ou seja os VALUES devem ser os nomes q você recuperou do campo do form...End ifsql2 = "select * from dados where campanha='" & cod &"'"Set rs2=Conexcao.Execute(sql2)If rs2("frentes") = True Then	Response.Redirect("frentes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("degustado") = True Then	Response.Redirect("degustado.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("observacoes") = True Then	Response.Redirect("observacoes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)set RS=nothingEnd IfConexcao.closenextend ifSet Conexcao=nothing%>

O que fiz de errado maninho?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem poderia me dar uma ajuda aqui???

 

to quebrando a cabeça aqui, mas não consigo...

Não escreve de jeito nenhum no banco!

 

Veja como esta:

<%set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MaPpath("dbsistema.mdb")Conexcao.openIf NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifestabelecimento = Request.Form("estabelecimento")data = Request.Form("data")produto = Request.Form("produto")tipo_ponto_extra = Request.Form("tipo_ponto_extra")encarte= Request.Form("encarte")cod = Request.form("cod")produto_con = Request.Form("produto_con")tipo_ponto_extra_con = Request.Form("tipo_ponto_extra_con")encarte_con= Request.Form("encarte_con")acao = Request.form("acao")campanha = codResponse.Expires = 0If InStr(produto,",") > 0 Thenprodutoo = Split(produto,",")tipo_ponto_extraa = SPLIT(tipo_ponto_extra,",")encartee = SPLIT(encarte,",")produto_conn = SPLIT(produto_con,",")tipo_ponto_extra_conn = SPLIT(tipo_ponto_extra_con,",")encarte_conn = SPLIT(encarte_con,",")FOR I = LBOUND(tipo_ponto_extraa) TO UBOUND(tipo_ponto_extraa)	SQL = "SELECT cliente from dados where acao= '"& campanha &"'"	Set UmRS = conexcao.execute(SQL)	If not UmRS.EOF Then	sSQL = "INSERT INTO ponto_extra(cliente,acao,estabelecimento,data,produto,tipo_ponto_extra,encarte) VALUES ('"& UmRS("cliente") &"','"& acao &"','"& estabelecimento &"','"& data &"','"& produtoo(I) &"','"& tipo_ponto_extraa(I) &"','"& encartee(I) &"','"& campanha &"')"	   Conexcao.Execute sSQL,intRetornoelse 'aqui a gente poe pra ele executar a sql caso nao exista array' os dados q serão inseridos é do formulário. Ou seja, aqui você nao usa nada de array, split, vetor'ou seja os VALUES devem ser os nomes q você recuperou do campo do form...End ifsql2 = "select * from dados where campanha='" & cod &"'"Set rs2=Conexcao.Execute(sql2)If rs2("frentes") = True Then	Response.Redirect("frentes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("degustado") = True Then	Response.Redirect("degustado.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("observacoes") = True Then	Response.Redirect("observacoes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)set RS=nothingEnd IfConexcao.closenextend ifSet Conexcao=nothing%>

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

Sem eu usar o script que o Lucas me ensinou tb não escreve no banco e eu já refiz todo meu Insert e nada...

Por favor me ajudem! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Pq não consigo fazer escrever no DB ate sem o script do Lucas?

 

Veja como está

 

<%set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MaPpath("dbsistema.mdb")Conexcao.openIf NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifestabelecimento = Request.Form("estabelecimento")data = Request.Form("data")produto = Request.Form("produto")tipo_ponto_extra = Request.Form("tipo_ponto_extra")encarte= Request.Form("encarte")cod = Request.form("cod")produto_con = Request.Form("produto_con")tipo_ponto_extra_con = Request.Form("tipo_ponto_extra_con")encarte_con = Request.Form("encarte_con")acao = Request.form("acao")Response.Expires = 0produtoo = Split(produto,",")tipo_ponto_extrao = Split(tipo_ponto_extra,",")encarteo = Split(encarte,",")produto_cono = Split(produto_con,",")tipo_ponto_extra_cono = Split(tipo_ponto_extra_con,",")encarte_cono = Split(encarte_con,",")FOR I = LBOUND(tipo_ponto_extrao) TO UBOUND(tipo_ponto_extrao)	SQL = "SELECT cliente from dados where acao= '"& cod &"'"	Set UmRS = conexcao.execute(SQL)	If not UmRS.EOF Then	sSQL = "INSERT INTO ponto_extra(cliente,campanha,acao,estabelecimento,data,tipo_ponto_extra,produto,encarte) VALUES ('"& UmRS("cliente") &"','"& cod &"','"& acao &"','"& estabelecimento &"','"& data &"','"& tipo_ponto_extrao(I) &"','"& produtoo(I) &"','"& encarteo(I) &"')"	   Conexcao.Execute sSQL,intRetorno	end IF	   	SQL = "SELECT cliente from dados where acao= '"& cod &"'"	Set UmRS = conexcao.execute(SQL)	If not UmRS.EOF Then	sSQL = "INSERT INTO ponto_extra_concorrente(cliente,campanha,acao,estabelecimento,data,tipo_ponto_extra_con,produto_con,encarte_con) VALUES ('"& UmRS("cliente") &"','"& cod &"','"& acao &"','"& estabelecimento &"','"& data &"','"& tipo_ponto_extra_cono(I) &"','"& produto_cono(I) &"','"& encarte_cono(I) &"')"	   Conexcao.Execute sSQL,intRetorno	end IFsql2 = "select * from dados where campanha='" & cod &"'"Set rs2=Conexcao.Execute(sql2)If rs2("frentes") = True Then	Response.Redirect("frentes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("degustado") = True Then	Response.Redirect("degustado.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("observacoes") = True Then	Response.Redirect("observacoes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)end IFset RS=nothingConexcao.closeSet Conexcao=nothingNext%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

Consegui fazer escrever no banco!!!!

Mas se eu não preencho todos os campos da o erro Subscrito fora do intervalo I

Deixa eu explicar, sempre vou ter o produto, mas o tipo de ponto extra e o encarte não, ai queria descartar os dados que não tiverem encarte e ponto extra!

 

Como que posso fazer isso???

Veja meu script

<%set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MaPpath("dbsistema.mdb")Conexcao.openIf NOT (Session("logado")) ThenResponse.Redirect "index.asp"Response.EndEnd Ifestabelecimento = Request.Form("estabelecimento")data = Request.Form("data")produto = Request.Form("produto")tipo_ponto_extra = Request.Form("tipo_ponto_extra")encarte= Request.Form("encarte")cod = Request.form("cod")produto_con = Request.Form("produto_con")tipo_ponto_extra_con = Request.Form("tipo_ponto_extra_con")encarte_con = Request.Form("encarte_con")acao = Request.form("acao")Response.Expires = 0produtoo = Split(produto,",")tipo_ponto_extrao = Split(tipo_ponto_extra,",")encarteo = Split(encarte,",")produto_cono = Split(produto_con,",")tipo_ponto_extra_cono = Split(tipo_ponto_extra_con,",")encarte_cono = Split(encarte_con,",")FOR I = LBOUND(tipo_ponto_extrao) TO UBOUND(tipo_ponto_extrao)				SQL = "SELECT cliente from dados where campanha= '"& cod &"'"	Set RS = conexcao.execute(SQL)	If not RS.EOF Then	sSQL = "INSERT INTO ponto_extra(cliente,campanha,acao,estabelecimento,data,tipo_ponto_extra,produto,encarte) VALUES ('"& RS("cliente") &"','"& cod &"','"& acao &"','"& estabelecimento &"','"& data &"','"& tipo_ponto_extrao(I) &"','"& produtoo(I) &"','"& encarteo(I) &"')"	   Conexcao.Execute sSQL,intRetorno	end IF	   	SQL = "SELECT cliente from dados where acao= '"& cod &"'"	Set RS = conexcao.execute(SQL)	If not RS.EOF Then	sSQL = "INSERT INTO ponto_extra_concorrente(cliente,campanha,acao,estabelecimento,data,tipo_ponto_extra_con,produto_con,encarte_con) VALUES ('"& RS("cliente") &"','"& cod &"','"& acao &"','"& estabelecimento &"','"& data &"','"& tipo_ponto_extra_cono(I) &"','"& produto_cono(I) &"','"& encarte_cono(I) &"')"	   Conexcao.Execute sSQL,intRetorno	end IF	Nextsql2 = "select * from dados where campanha='" & cod &"'"Set rs2=Conexcao.Execute(sql2)If rs2("frentes") = True Then	Response.Redirect("frentes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("degustado") = True Then	Response.Redirect("degustado.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)ElseIf rs2("observacoes") = True Then	Response.Redirect("observacoes.asp?cod="& rs2("campanha") &"&estabelecimento="&estabelecimento&"&data="&data&"&acao="&acao)end IFset RS=nothingConexcao.closeSet Conexcao=nothing%>

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera da uma Mão ai!Como eu faço pra exclir valores nulos?Tem jeito de fazer isso?valeu

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.