Guest Preto Postado Dezembro 15, 2004 Denunciar Share Postado Dezembro 15, 2004 Bom dia pessoal,Estou dando manutenção em um sistema em ASP e esta dando o seguinte erro:Microsoft VBScript runtime error '800a0009' Subscript out of range: '[number:1]' /XXX/xxxxxx/funcoes.asp, line 220 e não estou conseguindo resolver o problema pois nunca tinha pegado um erro sessa forma.Segue o codigo:<!--#include file="feb_adm_adovbs.inc" --><!--#include file="../../../../../dba/feb_connect.asp" --><%dim DB 'Utilizada p/ objeto DataBasedim RS 'Utilizada p/ objeto RecordSetdim adoComd 'Utilizada p/ objeto Proceduredim sSQL 'Utilizada p/ objeto sql'------------------------------------------------------------------------------public sub OpenDataBase set DB = Server.CreateObject("ADODB.Connection") DB.Open Session("FEB_ConnectionString")end sub'------------------------------------------------------------------------------public sub OpenRecordSet(wSql, wCursorT, wCursorL, wPaginar) Set RS = Server.CreateObject("ADODB.Recordset") RS.ActiveConnection = DB if cInt("0" & wPaginar ) > 0 then RS.CursorType = 3 RS.CursorLocation = 3 RS.CacheSize = cInt("0" & wPaginar ) RS.PageSize = cInt("0" & wPaginar ) else RS.CacheSize = 100 RS.CursorType = wCursorT RS.CursorLocation = wCursorL end if' response.write RS.wSql' response.end RS.Open wSqlend sub'------------------------------------------------------------------------------public sub CloseDataBase DB.Close Set DB = nothingend sub'------------------------------------------------------------------------------public sub CloseRecordSet 'response.write RS.State 'response.end if RS.State = adStateOpen then RS.Close Set RS = nothing end ifend sub'------------------------------------------------------------------------------'------------------------------------------------------------------------------public sub ChamaProc( sPRO ) Set adoComd = Server.CreateObject("ADODB.Command") adoComd.ActiveConnection = DB adoComd.CommandText = sPRO adoComd.CommandType = adCmdText adoComd.prepared = trueend sub'---------------------------------------------------------------------------------------------'Nome...........: ExecutaProc'Descricao......: Executa uma procedure SQL, cujo comando já esteja criado. Se houver erro,' redireciona para uma página de erro.' O parâmetro de saída da procedure SQL deve ter o nome out_RETORNO'Parametros.....: adoComd - Comando a ser executado.' sPaginaErro - Página de erro.'---------------------------------------------------------------------------------------------public function ExecutaProc(adoComd,sPaginaErro) dim iResultado on error resume next err.clear adoComd.Execute if err.number <> 0 then Response.Redirect(sPaginaErro & "?param1=" & server.URLEncode(sMsgErroDB())) end if iResultado = cint(adoComd.Parameters("out_RETORNO")) if iResultado = 0 then Response.Redirect(sPaginaErro & "?param1=" & server.URLEncode( sMsgErroDB() & " - Erro ao executar a operação na base de dados.")) end if on error goto 0end functionpublic function ExecutaSQL(sSQL,sPaginaErro) dim iresultado on error resume next err.clear DB.Execute sSQL if err.number <> 0 then 'response.write err.number & "-" & err.description & "aqui" Response.Redirect(sPaginaErro & "?param1=" & server.URLEncode(sMsgErroDB())) end if on error goto 0end function'Extrai o conteúdo de uma mensagem de erro definida em stored procedures do database.'Utiliza a variável adoComd (adodb.connection)public function sMsgErroDB() dim msgErro dim sMensagem for vcount = 0 to DB.errors.count-1 sMensagem = sMensagem & "<p>" & DB.errors.item(vcount).number & " - " & DB.errors.item(vcount).description & "</p>" next sMsgErroDB = sMensagem DB.errors.clearend functionpublic function emArray(aArray,alvo) dim i dim elemento i = 0 for each elemento in aArray if elemento = alvo then emArray = i exit function end if i = i + 1 next emArray = -1end function'Inclusão da planta Taubatépublic function NomePlanta(pCode) select case pCode case "FI05A" NomePlanta = pCode & " - SBC Cars" case "FI05E" NomePlanta = pCode & " - SBC Trucks" case "FI05D" NomePlanta = pCode & " - Taubaté" case "BCMLA" NomePlanta = pCode & " - Camaçari" case "FI05C" NomePlanta = pCode & " - SBC Body" case "FI05E" NomePlanta = pCode & " - SBC Trucks" case "FI05N" NomePlanta = pCode & " - SBC CKD" case "FI2VA" NomePlanta = pCode & " - CKD Camaçari" case else NomePlanta = "" end selectend function'------------------------------------------------------------------------------public function FormatNum(pValor, pRegiao, pNumDecimais) '**************************************************************************************************' '* Descrição....: Formata número com separador de milhar e decimal de acordo com a Região *' '* Utiliza para substituir a FormataNumero() *' '* Parâmetros...: pValor - Valor a ser formatado *' '* pRegiao - Regional Settings a ser utilizado para formatação *' '* pNumDecimais - Número de casas decimais que serão retornadas *' '* Autor/Data...: André Luiz - 20/06/2002 *' '* Atualizações.: *' '**************************************************************************************************' dim v_Decimal, v_Separador, v_Split, v_Loop, v_Format if left(pValor,1) = "." or left(pValor,1) = "," then pValor = "0" & pValor select case pRegiao case "BR" 'Formata número no padrão brasileiro (portugues) v_Decimal = "," v_Separador = "" case "US" 'Formata número no padrão americano v_Decimal = "." v_Separador = "" end select if len(trim(" " & pValor)) = 0 then v_Format = "0" if CInt(pNumDecimais) > 0 then v_Format = v_Format & v_Decimal & String(CInt(pNumDecimais), "0") end if FormatNum = v_Format exit function end if 'Prepara número para formatação (verifica se há ponto decimal e retira os separadores) pValor = Replace(trim(pValor), ",", ".") if instr(pValor, ".") <= 0 then 'Não Existe ponto decimal' pValor = pValor & "." & String(CInt(pNumDecimais), "0") end if pValor = Replace(pValor, ",", "") 'Formata número' v_Split = Split(pValor, ".") if len(trim(" " & v_Split(1))) > CInt(pNumDecimais) then 'Número precisa ser arrendondado pValor = Replace(Round((CLng(v_Split(0) & v_Split(1)) / CLng("1" & String(len(trim(" " & v_Split(1))), "0"))), CInt(pNumDecimais)), ",", ".") v_Split = "" v_Split = Split(pValor, ".") end if for v_Loop = Len(v_Split(0)) to 1 Step -3 if v_Loop <= 3 then v_Format = Left(v_Split(0), v_Loop) & v_Format else v_Format = v_Separador & Mid(v_Split(0), v_Loop - 2, 3) & v_Format end If next if CInt(pNumDecimais) > 0 then 'Coloca o ponto decimal (de acordo com a Região) if len(trim(" " & v_Split(1))) = CInt("0" & pNumDecimais) then v_Format = v_Format & v_Decimal & v_Split(1) else v_Format = v_Format & v_Decimal & v_Split(1) & String(CInt(pNumDecimais) - len(trim(" " & v_Split(1))), "0") end if end if FormatNum = v_Formatend function'------------------------------------------------------------------------------%>Agradeço a todos.Preto ( DENNYS) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Deividy Postado Dezembro 15, 2004 Denunciar Share Postado Dezembro 15, 2004 o que tem nessa linha? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cyberalexxx Postado Dezembro 15, 2004 Denunciar Share Postado Dezembro 15, 2004 Pode ser que você esteja tentando ler uma informação fora do intervalo de uma array, posta o código ai pra gente poder ver. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dark0 Postado Dezembro 15, 2004 Denunciar Share Postado Dezembro 15, 2004 amigo, é raro qualquer um lhe indicar um possível erro, sem ver o devido codigo.poste o trecho do codigo que esta ocasionando o erro Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Preto
Bom dia pessoal,
Estou dando manutenção em um sistema em ASP e esta dando o seguinte erro:
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number:1]'
/XXX/xxxxxx/funcoes.asp, line 220
e não estou conseguindo resolver o problema pois nunca tinha pegado um erro sessa forma.
Segue o codigo:
<!--#include file="feb_adm_adovbs.inc" -->
<!--#include file="../../../../../dba/feb_connect.asp" -->
<%
dim DB 'Utilizada p/ objeto DataBase
dim RS 'Utilizada p/ objeto RecordSet
dim adoComd 'Utilizada p/ objeto Procedure
dim sSQL 'Utilizada p/ objeto sql
'------------------------------------------------------------------------------
public sub OpenDataBase
set DB = Server.CreateObject("ADODB.Connection")
DB.Open Session("FEB_ConnectionString")
end sub
'------------------------------------------------------------------------------
public sub OpenRecordSet(wSql, wCursorT, wCursorL, wPaginar)
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = DB
if cInt("0" & wPaginar ) > 0 then
RS.CursorType = 3
RS.CursorLocation = 3
RS.CacheSize = cInt("0" & wPaginar )
RS.PageSize = cInt("0" & wPaginar )
else
RS.CacheSize = 100
RS.CursorType = wCursorT
RS.CursorLocation = wCursorL
end if
' response.write RS.wSql
' response.end
RS.Open wSql
end sub
'------------------------------------------------------------------------------
public sub CloseDataBase
DB.Close
Set DB = nothing
end sub
'------------------------------------------------------------------------------
public sub CloseRecordSet
'response.write RS.State
'response.end
if RS.State = adStateOpen then
RS.Close
Set RS = nothing
end if
end sub
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
public sub ChamaProc( sPRO )
Set adoComd = Server.CreateObject("ADODB.Command")
adoComd.ActiveConnection = DB
adoComd.CommandText = sPRO
adoComd.CommandType = adCmdText
adoComd.prepared = true
end sub
'---------------------------------------------------------------------------------------------
'Nome...........: ExecutaProc
'Descricao......: Executa uma procedure SQL, cujo comando já esteja criado. Se houver erro,
' redireciona para uma página de erro.
' O parâmetro de saída da procedure SQL deve ter o nome out_RETORNO
'Parametros.....: adoComd - Comando a ser executado.
' sPaginaErro - Página de erro.
'---------------------------------------------------------------------------------------------
public function ExecutaProc(adoComd,sPaginaErro)
dim iResultado
on error resume next
err.clear
adoComd.Execute
if err.number <> 0 then
Response.Redirect(sPaginaErro & "?param1=" & server.URLEncode(sMsgErroDB()))
end if
iResultado = cint(adoComd.Parameters("out_RETORNO"))
if iResultado = 0 then
Response.Redirect(sPaginaErro & "?param1=" & server.URLEncode( sMsgErroDB() & " - Erro ao executar a operação na base de dados."))
end if
on error goto 0
end function
public function ExecutaSQL(sSQL,sPaginaErro)
dim iresultado
on error resume next
err.clear
DB.Execute sSQL
if err.number <> 0 then
'response.write err.number & "-" & err.description & "aqui"
Response.Redirect(sPaginaErro & "?param1=" & server.URLEncode(sMsgErroDB()))
end if
on error goto 0
end function
'Extrai o conteúdo de uma mensagem de erro definida em stored procedures do database.
'Utiliza a variável adoComd (adodb.connection)
public function sMsgErroDB()
dim msgErro
dim sMensagem
for vcount = 0 to DB.errors.count-1
sMensagem = sMensagem & "<p>" & DB.errors.item(vcount).number & " - " & DB.errors.item(vcount).description & "</p>"
next
sMsgErroDB = sMensagem
DB.errors.clear
end function
public function emArray(aArray,alvo)
dim i
dim elemento
i = 0
for each elemento in aArray
if elemento = alvo then
emArray = i
exit function
end if
i = i + 1
next
emArray = -1
end function
'Inclusão da planta Taubaté
public function NomePlanta(pCode)
select case pCode
case "FI05A"
NomePlanta = pCode & " - SBC Cars"
case "FI05E"
NomePlanta = pCode & " - SBC Trucks"
case "FI05D"
NomePlanta = pCode & " - Taubaté"
case "BCMLA"
NomePlanta = pCode & " - Camaçari"
case "FI05C"
NomePlanta = pCode & " - SBC Body"
case "FI05E"
NomePlanta = pCode & " - SBC Trucks"
case "FI05N"
NomePlanta = pCode & " - SBC CKD"
case "FI2VA"
NomePlanta = pCode & " - CKD Camaçari"
case else
NomePlanta = ""
end select
end function
'------------------------------------------------------------------------------
public function FormatNum(pValor, pRegiao, pNumDecimais)
'**************************************************************************************************'
'* Descrição....: Formata número com separador de milhar e decimal de acordo com a Região *'
'* Utiliza para substituir a FormataNumero() *'
'* Parâmetros...: pValor - Valor a ser formatado *'
'* pRegiao - Regional Settings a ser utilizado para formatação *'
'* pNumDecimais - Número de casas decimais que serão retornadas *'
'* Autor/Data...: André Luiz - 20/06/2002 *'
'* Atualizações.: *'
'**************************************************************************************************'
dim v_Decimal, v_Separador, v_Split, v_Loop, v_Format
if left(pValor,1) = "." or left(pValor,1) = "," then pValor = "0" & pValor
select case pRegiao
case "BR" 'Formata número no padrão brasileiro (portugues)
v_Decimal = ","
v_Separador = ""
case "US" 'Formata número no padrão americano
v_Decimal = "."
v_Separador = ""
end select
if len(trim(" " & pValor)) = 0 then
v_Format = "0"
if CInt(pNumDecimais) > 0 then
v_Format = v_Format & v_Decimal & String(CInt(pNumDecimais), "0")
end if
FormatNum = v_Format
exit function
end if
'Prepara número para formatação (verifica se há ponto decimal e retira os separadores)
pValor = Replace(trim(pValor), ",", ".")
if instr(pValor, ".") <= 0 then 'Não Existe ponto decimal'
pValor = pValor & "." & String(CInt(pNumDecimais), "0")
end if
pValor = Replace(pValor, ",", "")
'Formata número'
v_Split = Split(pValor, ".")
if len(trim(" " & v_Split(1))) > CInt(pNumDecimais) then 'Número precisa ser arrendondado
pValor = Replace(Round((CLng(v_Split(0) & v_Split(1)) / CLng("1" & String(len(trim(" " & v_Split(1))), "0"))), CInt(pNumDecimais)), ",", ".")
v_Split = ""
v_Split = Split(pValor, ".")
end if
for v_Loop = Len(v_Split(0)) to 1 Step -3
if v_Loop <= 3 then
v_Format = Left(v_Split(0), v_Loop) & v_Format
else
v_Format = v_Separador & Mid(v_Split(0), v_Loop - 2, 3) & v_Format
end If
next
if CInt(pNumDecimais) > 0 then 'Coloca o ponto decimal (de acordo com a Região)
if len(trim(" " & v_Split(1))) = CInt("0" & pNumDecimais) then
v_Format = v_Format & v_Decimal & v_Split(1)
else
v_Format = v_Format & v_Decimal & v_Split(1) & String(CInt(pNumDecimais) - len(trim(" " & v_Split(1))), "0")
end if
end if
FormatNum = v_Format
end function
'------------------------------------------------------------------------------
%>
Agradeço a todos.
Preto ( DENNYS)
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.