none
Contador em Asp RRS feed

  • 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 function

    function 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 function

    function 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 function

    function 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 function

    function 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 function

    function 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) then

     call newUsr( dthoje, intSessionId )
     Count_usrOnline = Count_usrOnline + 1

    else

     ''- 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) then

      call newUsr( dthoje, intSessionId )
      Count_usrOnline = Count_usrOnline + 1

     end 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&nbsp;nº&nbsp;<%=(Count_usrOnline)%></center></b></td></tr>
      </table>
     </body>
    </html>

    terça-feira, 22 de junho de 2010 19:09

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
    quinta-feira, 24 de junho de 2010 14:09
  • 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
    quinta-feira, 24 de junho de 2010 23:02

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/

    quarta-feira, 23 de junho de 2010 00:22
  • 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 function

    function 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 function

    function 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 function

    function 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 function

    function 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 function

    function 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) then

     call newUsr( dthoje, intSessionId )
     Count_usrOnline = Count_usrOnline + 1

    else

     ''- 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) then

      call newUsr( dthoje, intSessionId )
      Count_usrOnline = Count_usrOnline + 1

     end 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&nbsp;nº&nbsp;<%=(Count_usrOnline)%></center></b></td></tr>
      </table>
     </body>
    </html>

    quarta-feira, 23 de junho de 2010 14:23
  • 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
    quarta-feira, 23 de junho de 2010 15:44
  • Como posso fazer uma string de conexão com um BD que está hospedado em localweb?

     

    Obrigada pela ajuda Rafa.

    quarta-feira, 23 de junho de 2010 17:56
  • 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
    • Marcado como Resposta Dai13 quarta-feira, 30 de junho de 2010 15:50
    • Não Marcado como Resposta Dai13 quarta-feira, 30 de junho de 2010 15:50
    quarta-feira, 23 de junho de 2010 18:30
  • 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

    quinta-feira, 24 de junho de 2010 10:45
  • 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
    quinta-feira, 24 de junho de 2010 14:09
  • 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
    quinta-feira, 24 de junho de 2010 23:02