Ir para conteúdo

POWERED BY:

Arquivado

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

FabianoSouza

Erro em insert com LBound e UBound

Recommended Posts

Mensagem: Erro ao converter tipo de dados varchar em numeric.

 

Passo um array via ajax, que chega ao ASP deste jeito:

10,15,20,25,30 e assim por diante.

 

No ASP faço o seguinte tratamento

 

	  Dim a, varSlice,varStrInscricao, varLoop
	  a = Split(var_cod_serv_fornecedor,",")
	  For varLoop=LBound(a) to UBound(a)
	  varStrInscricao=Trim(a(varLoop))

Onde var_cod_serv_fornecedor é a variável para qual capturo o array passado via AJAX.

 

E finalmente o insert

 

	  Dim strSQL
	  strSQL = ""
	  strSQL = "INSERT INTO EVENTOS_FORNECE "
	  strSQL = strSQL &"(EventosForneceCodEvento, EventosForneceCodFornecedor, " 
	  strSQL = strSQL &" EventosCodServFornecedor, EventosForneceCodAutor, " 
	  strSQL = strSQL &" EventosForneceDataCad, EventosForneceIPCad)" 
	  strSQL = strSQL &" VALUES" 
	  strSQL = strSQL &" ('" & var_cod_item & "', '"& var_cod_fornecedor &"', " 
	  strSQL = strSQL &"  '" & varStrInscricao & "', '" & var_cod_autor &"', " 
	  strSQL = strSQL &"  getdate(), '" & var_ip & "')" 
	  MM_conexao_STRING.Execute(strSQL)
	  Next

Aparece a mensagem "Erro ao converter tipo de dados varchar em numeric."

 

Fiz o teste de trocar a variável varStrInscricao diretamente por um número. Aí o erro não ocorre.

 

Um help por caridade

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o Cint(sua _variável) para convertê-lo, se for usar para cálculo use CDbl

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xanburzum, testei o Cint(), mas não resolveu. Mas desconfio onde está o problema.
O código todo tem parte em AJAX e parte em ASP. Vou ter que postar ambos, pois não ao certo onde está o problema. Suspeito que seja no AJAX...

Parte AJAX

//************************************************************************function Eventos_GravaFornecedor(form){var var_ci = document.getElementById("cod_item_hidden").value;var var_cf = document.getElementById("cod_fornecedor").value;//O trecho abaixo é para pegar o ID dos checkbox, dentro de um loop,  que estiverem marcados.  var cod_servico_fornecedor ="";    for (var i = 0; i < form.elements.length; i++ ) {        if (form.elements[i].type == 'checkbox') {            if (form.elements[i].checked == true) {               cod_servico_fornecedor += form.elements[i].value.replace("/",",");				            }        }    }	var obj_grava_fornecedor = createXMLHTTP(); obj_grava_fornecedor.open("POST", "/App/DO/Backend/insert/eventoFornecedor.asp", true); obj_grava_fornecedor.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");obj_grava_fornecedor.onreadystatechange=function(){if (obj_grava_fornecedor.readyState==3){}elseif (obj_grava_fornecedor.readyState==4){ //document.getElementById("div_local").innerHTML = obj_grava_fornecedor.responseText;var checkResponse = obj_grava_fornecedor.responseText;if (checkResponse =="ok"){ abre("eventoFornecedor_lista.asp?id=" + var_ci, "GET", "modal_ajax")carrega_abaFornecedor();}else{	alert("Ocorreu um erro. Os dados não foram gravados.\n"+checkResponse)}}}obj_grava_fornecedor.send(encodeURI("cs="+var_cod_servico+"&ci="+var_ci+"&cf=" + var_cf+"&csf=" + cod_servico_fornecedor));}

O ASP (que roda um insert), é este.

<%	  'Intercepta erro	  On Error Resume Next	  	  'Declara variáveis	  Dim verifica_login, var_cod_servico, var_cod_item, var_cod_fornecedor, var_cod_serv_fornecedor	  Dim var_cod_autor, var_ip	  'Verifica Session	  verifica_login = IsEmpty(Session("autentica"))	  'If verifica_login = False Then	  	  'Recupera valores do formulário ou string e atribui a variáveis	  var_cod_servico = TrataString(Request.Form("cs"))	  var_cod_item = TrataString(Request.Form("ci"))	  var_cod_fornecedor = TrataString(Request.Form("cf"))	  var_cod_serv_fornecedor = Request.Form("csf")	  var_cod_autor = Session("autentica") 	  var_ip = Request.ServerVariables("REMOTE_ADDR")	  	  'Delimita valores recebidos em lote--------------------------------------------------------------	  Dim varLoop, a, varSlice,varStrInscricao	  a = Split(var_cod_serv_fornecedor,",")	  For varLoop=LBound(a) to UBound(a)	  varStrInscricao=Trim(a(varLoop))	  	  'Grava valores das variáveis no banco de dados	  Dim strSQL	  strSQL = ""	  strSQL = "INSERT INTO EVENTOS_FORNECE "	  strSQL = strSQL &"(EventosForneceCodEvento, EventosForneceCodFornecedor, " 	  strSQL = strSQL &" EventosCodServFornecedor, EventosForneceCodAutor, " 	  strSQL = strSQL &" EventosForneceDataCad, EventosForneceIPCad)" 	  strSQL = strSQL &" VALUES" 	  strSQL = strSQL &" ('" & var_cod_item & "', '"& var_cod_fornecedor &"', " 	  strSQL = strSQL &"  '" & varStrInscricao & "', '" & var_cod_autor &"', " 	  strSQL = strSQL &"  getdate(), '" & var_ip & "')" 	  MM_conexao_STRING.Execute(strSQL)	  Next	   	  'Fecha conexão	  MM_conexao_STRING.Close	  	  'Destrói conexão	  Set MM_conexao_STRING = Nothing 	  'Trata eventual erro	  Dim caminho , nomepagina, caminhofisico	  If Err.Number <>0 Then	  	  Response.Write err.description 	 ' Response.Clear()	  Else	  Response.write "ok"  	  End if	  On Error GoTo 0	  'Else	  'End if%>

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual linha ele gera o erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum, descobri que o problema é no javascript, não no ASP. O array está pegando uma barra junto com os valores, isso dá erro na hora de rodar o insert. Grato.

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.