Usuário com melhor resposta
Contador em Asp

Pergunta
-
Boa tarde!!!
Gostaria de saber se alguem poderia me ajudar a achar o erro desse contador que não aparece na tela do site. Segue Codigo do contador:
<%
''= =======================================================
''= VARIAVEIS GLOABAIS
DB_ = "..\databases\dbOnLine.mdb"
T_USRONLINE = "T_VISITAONLINE"Set db = Server.CreateObject ("ADODB.Connection")
db.open CurrentDB( DB_ )intSessionId = Session.SessionID
''= =======================================================
''= FUNCOES
function getIP()
''- -------------------------------------------------------
getIP = Request.ServerVariables("REMOTE_ADDR")
end functionfunction dt_YYYYMMDD( pDt )
''- -------------------------------------------------------
dim result
result = year(pDt)
if (month(pDt)<10) then
result = result & "0" & month(pDt)
else
result = result & month(pDt)
end if
if (day(pDt)<10) then
result = result & "0" & day(pDt)
else
result = result & day(pDt)
end if
dt_YYYYMMDD = result
end functionfunction CurrentDB( pDatabasename )
''- -------------------------------------------------------
dim r, path
path = request.servervariables("APPL_PHYSICAL_PATH")
r = "Driver={Microsoft Access Driver (*.mdb)};"
r = r & "DBQ=" & path & pDatabasename
r = r & p
CurrentDB = r
end functionfunction CountUsr( pDT )
''- -------------------------------------------------------
dim sql, result, temp
result = 0
sql = ""
sql = sql & " select sum(visitas) "
sql = sql & " from " & T_USRONLINE
''- sql = sql & " where dthoje = '" & pDT & "'"
''- response.write "<br>CountUsr : " &sql
set r = db.execute(sql)
if not r.eof then
temp = r(0)
if not (isnull(temp) or isempty(temp) or (temp="")) then result = r(0)
end if
set r = nothing
''- response.write "<br>CountUsr : " &pDT & " n="&result
CountUsr = result
end functionfunction UsrExists( pDT, pID )
''- -------------------------------------------------------
dim sql, result, temp
result = 0
sql = ""
sql = sql & " select count(*) "
sql = sql & " from " & T_USRONLINE
sql = sql & " where idUsr = '" & pID & "'"
sql = sql & " and dthoje = '" & pDT & "'"
''- response.write "<br>UsrExists ["&pID&"]"
set r = db.execute(sql)
if not r.eof then
temp = r(0)
if not (isnull(temp) or isempty(temp) or (temp="")) then result = r(0)
end if
set r = nothing
UsrExists = result
end functionfunction newUsr( pDT, pID )
''- -------------------------------------------------------
sql = ""
sql = sql & " insert into " & T_USRONLINE & " ("
sql = sql & " idUsr, dthoje, ip, visitas"
sql = sql & " ) values ("
sql = sql & "'" & pID & "'"
sql = sql & ",'" & pDT & "'"
sql = sql & ",'" & getIP() & "'"
sql = sql & ",1"
sql = sql & ")"
db.execute( sql )
end function''= =======================================================
''= PROGRAMA''- quantidade de visitantes online na data de hoje
dthoje = dt_YYYYMMDD( now )Count_usrOnline = CountUsr( dthoje )
''- se a nao existir usuarios na data entao grava
if (cdbl(Count_usrOnline) = 0) thencall newUsr( dthoje, intSessionId )
Count_usrOnline = Count_usrOnline + 1else
''- verifica se já esta na tabela
found = UsrExists( dthoje, intSessionId )
''- response.write "<br>["&found&"]"
''- caso nao tenha localizado o id entao soma o contador de acessoa
if (found = 0) thencall newUsr( dthoje, intSessionId )
Count_usrOnline = Count_usrOnline + 1end if
end if
db.close()
set db = nothing''- IMAGEM CONTENDO OS NUMEROS
dim numero(10)
numero(0)="img/0.bmp"
numero(1)="img/1.bmp"
numero(2)="img/2.bmp"
numero(3)="img/3.bmp"
numero(4)="img/4.bmp"
numero(5)="img/5.bmp"
numero(6)="img/6.bmp"
numero(7)="img/7.bmp"
numero(8)="img/8.bmp"
numero(9)="img/9.bmp"longitud = len(Count_usrOnline)
hasta = 6-longitud
%><!--<table height=23 border=0 align="center" cellpadding=0 cellspacing=0 style='font-family:arial;font-size:10px;font-weight:bold;'>
<tr><td align=center height=5>Visitante Nº</td></tr>
<tr><td><table border=0 align="center" cellpadding=0 cellspacing=0>
<tr><%
For i=1 to hasta
response.write "<td width=15 height=18 valign=top><img width=15 height=18 src='"&numero(0)&"'></td>"
next
For i=1 to longitud
num = mid(Count_usrOnline, i, 1)
response.write "<td width=15 height=18 valign=top>"
response.write "<img width=15 height=18 src='"&numero(num)&"'></td>"
next
%>
</tr>
</table>
</td>
</tr>
</table>
-->
<html>
<head><meta http-equiv="refresh" content="9"></head>
<body topmargin=0 cellspacing=0 cellpadding=0 bgcolor="#e3eaf4">
<table align=center width="100%" border="0" cellpadding="0" cellspacing="0"
style="font-family:verdana;font-size:10px;color:#000">
<tr><td><b><center>Visitante nº <%=(Count_usrOnline)%></center></b></td></tr>
</table>
</body>
</html>
Respostas
-
Dai, procure nos fórums da LocaWeb sobre strings de conexão deles. Geralmente estes provedores de hospedagem fornecem códigos prontos sobre estas funções.
Rafael Santos
MSN: rafasantos86@hotmail.com
E-mail: rsdsantos@gmail.com
Pequeno Gafanhoto- Marcado como Resposta Dai13 quarta-feira, 30 de junho de 2010 15:50
-
Olá,
Primeiramente na locaweb seu banco de dados (arquivo .mdb ou .accdb) deve ficar dentro da pasta "dados" do seu ftp. A string vai depender da sua versão do MS Access.
Se for .accdb use:
ConnString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\home\SEU_LOGIN_DE_FTP\dados\bancoAccess.accdb;Persist Security Info=False;"
Se for .mdb use:
ConnString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\home\SEU_LOGIN_DE_FTP\dados\bancoAccess.mdb;Persist Security Info=False;"
Espero ter ajudado, ao menos um pouco.
[]s
PS: Se o post foi útil, por favor classifique-o.
Carlos Monteiro - MCP ASP.Net C#- Editado Carlos Monteiro quarta-feira, 30 de junho de 2010 04:42 formatacao
- Marcado como Resposta Dai13 quarta-feira, 30 de junho de 2010 15:50
Todas as Respostas
-
Gera algum erro?
Se não gerar, depure cada chamada da função, da primeira linha de código até a última chamada da função - <%=(Count_usrOnline)%>, com response.write e response.end();
Mas vou te falar... eu trocaria ISSO TUDO aí por um Application. Recomendo: http://imasters.uol.com.br/noticia/789/asp/quantas_pessoas_estao_online_no_site/
-
Obrigada Rafa... mas preciso de que ele grave o numero de acessos no banco. e dá dando erro na linha 8. Da o seguinte erro:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Not a valid password.
/visitantes/visitaonline.asp, line 8
Segue o Codigo Novamente
<%
''= =======================================================
''= VARIAVEIS GLOABAIS
DB_ = "..\databases\dbonline.mdb"
T_USRONLINE = "T_VISITAONLINE"Set db = Server.CreateObject ("ADODB.Connection")
db.open CurrentDB( DB_ )intSessionId = Session.SessionID
''= =======================================================
''= FUNCOES
function getIP()
''- -------------------------------------------------------
getIP = Request.ServerVariables("REMOTE_ADDR")
end functionfunction dt_YYYYMMDD( pDt )
''- -------------------------------------------------------
dim result
result = year(pDt)
if (month(pDt)<10) then
result = result & "0" & month(pDt)
else
result = result & month(pDt)
end if
if (day(pDt)<10) then
result = result & "0" & day(pDt)
else
result = result & day(pDt)
end if
dt_YYYYMMDD = result
end functionfunction CurrentDB( pDatabasename )
''- -------------------------------------------------------
dim r, path
path = request.servervariables("APPL_PHYSICAL_PATH")
r = "Driver={Microsoft Access Driver (*.mdb)};"
r = r & "DBQ=" & path & pDatabasename
r = r & p
CurrentDB = r
end functionfunction CountUsr( pDT )
''- -------------------------------------------------------
dim sql, result, temp
result = 0
sql = ""
sql = sql & " select sum(visitas) "
sql = sql & " from " & T_USRONLINE
''- sql = sql & " where dthoje = '" & pDT & "'"
''- response.write "<br>CountUsr : " &sql
set r = db.execute(sql)
if not r.eof then
temp = r(0)
if not (isnull(temp) or isempty(temp) or (temp="")) then result = r(0)
end if
set r = nothing
''- response.write "<br>CountUsr : " &pDT & " n="&result
CountUsr = result
end functionfunction UsrExists( pDT, pID )
''- -------------------------------------------------------
dim sql, result, temp
result = 0
sql = ""
sql = sql & " select count(*) "
sql = sql & " from " & T_USRONLINE
sql = sql & " where idUsr = '" & pID & "'"
sql = sql & " and dthoje = '" & pDT & "'"
''- response.write "<br>UsrExists ["&pID&"]"
set r = db.execute(sql)
if not r.eof then
temp = r(0)
if not (isnull(temp) or isempty(temp) or (temp="")) then result = r(0)
end if
set r = nothing
UsrExists = result
end functionfunction newUsr( pDT, pID )
''- -------------------------------------------------------
sql = ""
sql = sql & " insert into " & T_USRONLINE & " ("
sql = sql & " idUsr, dthoje, ip, visitas"
sql = sql & " ) values ("
sql = sql & "'" & pID & "'"
sql = sql & ",'" & pDT & "'"
sql = sql & ",'" & getIP() & "'"
sql = sql & ",1"
sql = sql & ")"
db.execute( sql )
end function''= =======================================================
''= PROGRAMA''- quantidade de visitantes online na data de hoje
dthoje = dt_YYYYMMDD( now )Count_usrOnline = CountUsr( dthoje )
''- se a nao existir usuarios na data entao grava
if (cdbl(Count_usrOnline) = 0) thencall newUsr( dthoje, intSessionId )
Count_usrOnline = Count_usrOnline + 1else
''- verifica se já esta na tabela
found = UsrExists( dthoje, intSessionId )
''- response.write "<br>["&found&"]"
''- caso nao tenha localizado o id entao soma o contador de acessoa
if (found = 0) thencall newUsr( dthoje, intSessionId )
Count_usrOnline = Count_usrOnline + 1end if
end if
db.close()
set db = nothing''- IMAGEM CONTENDO OS NUMEROS
dim numero(10)
numero(0)="img/0.bmp"
numero(1)="img/1.bmp"
numero(2)="img/2.bmp"
numero(3)="img/3.bmp"
numero(4)="img/4.bmp"
numero(5)="img/5.bmp"
numero(6)="img/6.bmp"
numero(7)="img/7.bmp"
numero(8)="img/8.bmp"
numero(9)="img/9.bmp"longitud = len(Count_usrOnline)
hasta = 6-longitud
%><!--<table height=23 border=0 align="center" cellpadding=0 cellspacing=0 style='font-family:arial;font-size:10px;font-weight:bold;'>
<tr><td align=center height=5>Visitante Nº</td></tr>
<tr><td><table border=0 align="center" cellpadding=0 cellspacing=0>
<tr><%
For i=1 to hasta
response.write "<td width=15 height=18 valign=top><img width=15 height=18 src='"&numero(0)&"'></td>"
next
For i=1 to longitud
num = mid(Count_usrOnline, i, 1)
response.write "<td width=15 height=18 valign=top>"
response.write "<img width=15 height=18 src='"&numero(num)&"'></td>"
next
%>
</tr>
</table>
</td>
</tr>
</table>
-->
<html>
<head><meta http-equiv="refresh" content="9"></head>
<body topmargin=0 cellspacing=0 cellpadding=0 bgcolor="#e3eaf4">
<table align=center width="100%" border="0" cellpadding="0" cellspacing="0"
style="font-family:verdana;font-size:10px;color:#000">
<tr><td><b><center>Visitante nº <%=(Count_usrOnline)%></center></b></td></tr>
</table>
</body>
</html> -
Então o erro não é no código e sim na string de acesso ao banco de dados... tá dizendo que a senha não é válida... verifique o login e senha de acesso ao banco. Se não for isto, tente trocar a string de conexão.
Rafael Santos
MSN: rafasantos86@hotmail.com
E-mail: rsdsantos@gmail.com
Apenas um Pequeno Gafanhoto -
-
Você diz LocaWeb? http:www.locaweb.com.br ??? Então tem uma aplicação em um servidor e está querendo acessar o banco em outro servidor? Se for isso, é um pouco complexo. Tem que ver se o servidor do BD possui uma porta aberta para este tipo de conexão e se o firewall permite. Você terá que ver junto ao provedor de hospedagem do banco de dados como fazer para se logar em um banco que está hospedado nele. Eles terão que lhe informar tudo certinho.
Rafael Santos
MSN: rafasantos86@hotmail.com
E-mail: rsdsantos@gmail.com
Pequeno Gafanhoto -
Sim , mas todas as aplicações estão na localweb. mas não sei como fazer a string de conexão com o banco lá. Pois a conexão que tem dá erro falando que o arquivo não foi encontrado.
E o contador não aparece na tela.
Obrigada mais uma vez Rafael
-
Dai, procure nos fórums da LocaWeb sobre strings de conexão deles. Geralmente estes provedores de hospedagem fornecem códigos prontos sobre estas funções.
Rafael Santos
MSN: rafasantos86@hotmail.com
E-mail: rsdsantos@gmail.com
Pequeno Gafanhoto- Marcado como Resposta Dai13 quarta-feira, 30 de junho de 2010 15:50
-
Olá,
Primeiramente na locaweb seu banco de dados (arquivo .mdb ou .accdb) deve ficar dentro da pasta "dados" do seu ftp. A string vai depender da sua versão do MS Access.
Se for .accdb use:
ConnString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\home\SEU_LOGIN_DE_FTP\dados\bancoAccess.accdb;Persist Security Info=False;"
Se for .mdb use:
ConnString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\home\SEU_LOGIN_DE_FTP\dados\bancoAccess.mdb;Persist Security Info=False;"
Espero ter ajudado, ao menos um pouco.
[]s
PS: Se o post foi útil, por favor classifique-o.
Carlos Monteiro - MCP ASP.Net C#- Editado Carlos Monteiro quarta-feira, 30 de junho de 2010 04:42 formatacao
- Marcado como Resposta Dai13 quarta-feira, 30 de junho de 2010 15:50