Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pode parecer estranho, mas estou pedindo ajuda para ver se conseguem ver algo que não vejo nesse código, não consigo converter para inteiro um valor, é de um código de paginação que sempre usei, estou usando em outros lugares no mesmo site mas aqui não funciona...
dá erro de tipos incompatíveis (VBScript erro '800a000d), aqui:
cdblMat = pAtual - 1
veja que recupero pAtual como querystring logo no inicio, já tentei converter para númerico com Cint, FormatNumber, cdbl e Val, mas sempre o mesmo erro...
Eu chamo essa página passando o valor de pAtual através de uma função javascript, pesquisei sobre isso (mesmo funciionando em outros lugares) e não achei nada que dissesse que ele pode estar vindo num formato que não fosse apenas string.... Obrigado.
<%
textovideo = request.querystring("textovideo")
cod_cat = request.querystring("cod_cat")
pAtual = Request.querystring("pAtual")
if cod_cat = "" then
cod_cat = 0
end if
set cnprocura = Server.createobject("adodb.connection")
set rsprocura = Server.createobject("adodb.recordset")
cmdsql = "(select a.cod_videos, a.titulo, a.datapublicacao, a.horapublicacao, a.ativo, a.link, a.cod_categorias from videos a "
cmdsql = cmdsql & "where a.ativo = 'on' "
if cod_cat <> 0 then
cmdsql = cmdsql & "and a.cod_categorias = '"& cod_cat &"' "
end if
if textovideo <> "" then
cmdsql = cmdsql & "and a.titulo like '%"& textovideo &"%' "
end if
cmdsql = cmdsql & " ) "
cnprocura.open "driver=MySQL ODBC 3.51 Driver;DATABASE="& bancodedados&";SERVER=" & ip & ";UID=" & nomebd & ";PASSWORD=" & senhabd & ""
''' Total de registros por pagina
fimRegistros = 8
''' Total de links exibidos na tela
intMaxLinksNavegacao = 10
''' Define a pagina atual
If pAtual = "" then
pAtual = 1
End If
''' Diz ao MySQL o inicio do filtro de linhas.
''' Inicialmente vamos iniciar da linha Zero
cdblMat = pAtual - 1
intInicioPaginasRegistros = cdblMat * fimRegistrosestranho é o mesmo código que funciona em outros sites ?
algumas vezes isso pode ser por ter usado uma palavra-chave do engine VBS, mas como em outros funciona. apenas para teste de um CInt e depois verifique com o IsNumeric
pAtual = Request.querystring("pAtual")
pAtual_inteiro=CInt(pAtual)
Check = IsNumeric(pAtual_inteiro)
response.write(Check)
response.end()
Gustavo, pode ser um número como string qualquer ou vazio, por isto eu verifico vazio.
Xumburzun ele pagina normal outras páginas no mesmo site, a única diferença é que o código do patual vai pelo função js nesse com problema, vou tentar ver com isnuméric quando der, mas acho que ele nem vá passar pelo cint na linha anterior, obrigado.
Aconteceu isso mesmo, não passou no Cint, deu erro... e sem ele deu como falso, visto que é querystring, talvez seja mesmo algum problema relacionado com o JS, porque se ele vem com link direto não dá esse erro..
Eu imprimi com vartype e deu como string, e estranhmente, o cod_cat que eu recupero como querystring mesmo sem converter recuperou como integer... pelo que sei, apesar que recuper como querystring não transforma ela em string, tanto que nunca convertia... cod_cat também vem pelo JS mas la no JS em pego usando Getelementsbyid.value, enquanto o pAtual no nome da função (não sei o termo tecnico pra isso, rs)...
> function gridaVideos(cod_cat,pAtual) {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (document.getElementById("textovideo").value != null) {
textovideo = document.getElementById("textovideo").value;
}
//if (document.getElementById("pAtual").value != null) {
//pAtual = document.getElementById("pAtual").value;
// }
if (cod_cat == null && textovideo == "") {
xmlhttp.open("GET","gridvideos.asp",false);
//window.location.hash="topogrid";
xmlhttp.send();
} else {
xmlhttp.open("get","gridvideos.asp?cod_cat="+cod_cat+"&textovideo="+textovideo+"&pAtual="+pAtual+"",false);
xmlhttp.send();
textovideo = document.getElementById("textovideo").value = "";
}
if (xmlhttp.readyState != 200) {
document.getElementById("gridavideos").innerHTML = "Carregando...";
}
document.getElementById("gridavideos").innerHTML=xmlhttp.responseText;
window.location.hash="topogrid";
}
Não consigo ver lógica alguma nesse erro...
não querystring é apenas o método, ele não converte nada, faça um teste novamente, recupere pelo querystring e atribua a uma session e use essa variável session
Vejam só depois de penar um pouco descobri o erro, que na verdade não existia, analisei meu ASP e JS individualmente e não havia erro, contudo resolvi fazer um fluxograma (desenhei mesmo) com os dados sendo passados da uma pagina para o xmlhttprequest e depois ao ASP e achei um ponto a informação da variavel pAtual se perdia.
Aproveitando esse mesmo fluxograma, criei uma variável alternativa que é usada nos casos onde a outra se perdia (apenas para não ficar null) logo que nos casos onde ela é vazia pode ser 0 ou 1, isso existia nos dois codigos individualmente como disse, mas só verificava se eu estivesse neles ... Deu trabalho mas nesse ínterim descobri umas ferramentas novas para depurar meus códigos que noutro momento não teria ido atrás, já que alguns erros de JS não são exibidos quando são chamados via xmlhttprequest.
Obrigado.
o popular teste de mesa
Mas qual é o valor do atual logo após o request?