Ir para conteúdo

POWERED BY:

Arquivado

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

jcdesigner

Amigos, tá quase lá

Recommended Posts

Amigos, tá quase lá, juntando o que eu tinha e mais algumas dicas cheguei até aqui, mas dá o seguinte erro:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

 

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'COUNT(*)acesso'.

/cont.asp, line 9

 

 

<%set lojaDB = Server.CreateObject("ADODB.Connection")lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")lojaDB.openDim usuario usuario = request.form ("usuario")sql = "SELECT COUNT(*)acesso FROM clientes WHERE usuario='"&usuario&"'"set tabTemp = Nothingset tabTemp = lojaDB.execute(sql)if tabTemp("acesso") > 0 thensql = "INSERT INTO clientes(acesso)VALUES(1)"set tabTemp = Nothingset tabTemp = lojaDB.execute(sql)elsesql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"&usuario&"'"set tabTemp = Nothingset tabTemp = lojaDB.execute(sql)end if%>
alguém ai tem mais alguma dica para poder rodar este contador de usuario individual.

Pra quem não leu os outros posts, trata-se de um contador individual , que registrará em um BD os acessos que cada usuario previamente cadastrado no BD realizou, atraves da página de Login, que acessa a página que tem este contador (Eu o estou chamando através do método "IncludeFile")

 

Bem acho que assim fica mais fácil da galera dar uma ajudinha.

 

Detalhe no BD a tabela clientes já está com a colunas acesso(que contara os acessos) de cada usuario no formato número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, acabei de usar as dicas que me passaram, o erro sumiu mas o contador não está incrementando no BD. O que pode ser. O código está assi agora:

 

cont.asp

 

<%

set lojaDB = Server.CreateObject("ADODB.Connection")

lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")

lojaDB.open

Dim usuario

usuario = request.form ("usuario")

sql = "SELECT COUNT(*) as acesso FROM clientes WHERE usuario='"&usuario&"'"

set tabTemp = Nothing

set tabTemp = lojaDB.execute(sql)

if tabTemp("acesso") > 0 then

sql = "INSERT INTO clientes(acesso)VALUES(1)"

set tabTemp = Nothing

set tabTemp = lojaDB.execute(sql)

else

sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"&usuario&"'"

set tabTemp = Nothing

set tabTemp = lojaDB.execute(sql)

end if

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem um campo do bd que já está somado os acessos? Se sim, você não precisa do count(). Aparentemente pode ser isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, acabei de usar as dicas que me passaram, o erro sumiu mas o contador não está incrementando no BD. O que pode ser. O código está assi agora:

 

cont.asp

 

<%

set lojaDB = Server.CreateObject("ADODB.Connection")

lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")

lojaDB.open

Dim usuario

usuario = request.form ("usuario")

sql = "SELECT COUNT(*) as acesso FROM clientes WHERE usuario='"&usuario&"'"

set tabTemp = Nothing

set tabTemp = lojaDB.execute(sql)

if tabTemp("acesso") > 0 then

sql = "INSERT INTO clientes(acesso)VALUES(1)"

set tabTemp = Nothing

set tabTemp = lojaDB.execute(sql)

else

sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"&usuario&"'"

set tabTemp = Nothing

set tabTemp = lojaDB.execute(sql)

end if

%>

sql = "SELECT COUNT(*) as acesso FROM clientes WHERE usuario='"&usuario&"'"set tabTemp = Nothingset tabTemp = lojaDB.execute(sql)response.write "<BR>SQL count: " & sql &"<BR>"if tabTemp("acesso") > 0 then     sql = "INSERT INTO clientes(acesso,usuario)VALUES(1,'"&usuario&"')"     set tabTemp = Nothing     set tabTemp = lojaDB.execute(sql)else     sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"&usuario&"'"     set tabTemp = Nothing     set tabTemp = lojaDB.execute(sql)end ifresponse.write "<BR>SQL update/insert: " & sql &"<BR>"
qq coisa posta aki o RESPOSTA SE NAUM FUNCIONAR...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo(Valeu a força) mas apesar de reformular um pouco a sua dica(apenas removi as tags de html) pois a página que chama o script não terão estes dados visíveis, estes dados apenas atualizarão o contador (nomeado de : acesso) em meu BD.

 

Aconteceu o mesmo de antes não deu erro, mas não acrescentou +1 a tabela 'acesso' que é a tabela que guardará os acessos de cada usuario. Realmente não sei onde é que pode estar errado ????

 

Existiria como fazer isso através de cookies ??? incrementando os valores do bd cada vez que for realizado o acesso por cada um dos usuarios ?

 

 

<%set lojaDB = Server.CreateObject("ADODB.Connection")lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")lojaDB.openDim usuario Dim acessoDim sqlDim contadorusuario = request.form("usuario")sql = "SELECT COUNT(*) as acesso FROM clientes WHERE usuario='"&usuario&"'"set tabTemp = Nothingset tabTemp = lojaDB.execute(sql)if tabTemp("acesso") > 0 then    sql = "INSERT INTO clientes(acesso,usuario)VALUES(1,'"&usuario&"')"    set tabTemp = Nothing    set tabTemp = lojaDB.execute(sql)else    sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"&usuario&"'"    set tabTemp = Nothing    set tabTemp = lojaDB.execute(sql)end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta os response.write q foram colocados... para q leia entenda o pq do erro, ok....vai ser de grande ajuda pra entender o q se passa... :o

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste, fiz alterações de cabeça, por isso pode ser que algo não role de 1ª

<%set lojaDB = Server.CreateObject("ADODB.Connection")

lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")

lojaDB.open

Dim usuario, acesso, sql, contador

usuario = request.form("usuario")

 

sql = "SELECT acesso FROM clientes WHERE usuario='"& usuario &"';" 'Não é nescessário o Count, uma vez que na tabela já existe campo com o total de acessos

set tabTemp = lojaDB.execute(sql)

if tabTemp.eof then

sql = "INSERT INTO clientes(acesso,usuario)VALUES(1,'"& usuario &"');"

lojaDB.execute(sql)

else

sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"& usuario &"';"

lojaDB.execute(sql)

Acessos = tabTemp("acessos")

end if

 

tabTemp.Close

lojaDB.Close

Set tabTemp = Nothing

Set lojaDB = Nothing

 

Response.Write Acessos%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigao, usei a sua sugestão(corrigi apenas o plural no nome 'acessos' que não existia) é dá o seguinte erro na página que chama o script:

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

 

[Microsoft][Driver ODBC para Microsoft Access] O campo 'clientes.usuario' não pode ser uma seqüência de caracteres de comprimento nulo.

 

/forlamp/cont.asp, line 12

 

Na página que chama o script 'index.asp' (está dentro de um diretório chamado LOJA) eu o chamo(script) através de um includeFile. Na página de login tem apenas um form com dois campos 'usuario' e 'senha'.

 

No BD tem a tabela clientes onde temos:

 

ID USUARIO SENHA NOME EMAIL ACESSO

01 JOAO ***** JOAO JOAO@.. 0

02 MARIA ***** MARIA MARIA@.. 0

 

 

E se eu alterar o código para:

 

<%

set lojaDB = Server.CreateObject("ADODB.Connection")

lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")

lojaDB.open

Dim usuario, acesso, sql, contador

usuario = request.form("usuario")

 

sql = "SELECT acesso FROM clientes WHERE usuario='"& usuario &"';" 'Não é nescessário o Count, uma vez que na tabela já existe campo com o total de acessos

set tabTemp = lojaDB.execute(sql)

if tabTemp.eof then

sql = "INSERT INTO clientes(acesso)VALUES(1);"

lojaDB.execute(sql)

else

sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"& usuario &"';"

lojaDB.execute(sql)

Acessos = tabTemp("acesso")

end if

 

tabTemp.Close

lojaDB.Close

Set tabTemp = Nothing

Set lojaDB = Nothing

 

Response.Write Acesso

%>

 

Os erros somem , mas ai ao invés de incrementar o valor no campo acesso do BD, ele cria um novo ID, assim:

 

ID USUARIO SENHA NOME EMAIL ACESSO

01 JOAO ***** JOAO JOAO@.. 0

02 MARIA ***** MARIA MARIA@.. 0

03 1

 

 

Acho que estamos próximos de uma solução, mas ainda não entendi por que não tá somando o valor a um usuario existente na Tabela dentro do campo 'acesso'.

 

Desde já agradeço todos aqueles que estão colaborando e venham a colaborar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é que não está chegando para seu request o "usuario". Como você está fazendo no login? é junto com esse do contador? você pode fazer direto o login e o contador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na página login não tem nada além de um form com os campos usuario e senha, que se efeutado com sucesso vai para a pagina index.asp do diretorio \loja , e é na página index.asp que chamo o script cont.asp através do IncludeFile.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Manda sua página de login, não form, a página que processa o login que adaptamos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Página que faz o login:

 

<%@LANGUAGE="vb script:history.go(-1);">Retornar</a></td>

</tr></table>

</body>

</html>

 

 

Onde topo.inc é o script com a conexão com o BD.

 

 

<%

Dim lojaDB

set lojaDB = Server.CreateObject("ADODB.Connection")

lojaDB.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & server.MapPath("../loja.mdb")

lojaDB.open

%>

 

<STYLE TYPE='text/css'>

a.buttonStyle {

color :#000000;

font-weight :normal;

font-size :12pt;

font-family :Arial, Helvetica, sans-serif;

text-decoration :none;

background-color :#FFCC00;

height : auto;

width :150px;

border :thin solid;

border-color:#FFCC00;

}

a.buttonStyle:hover {

color :#003399;

text-decoration :none;

background-color :#FF6600;

border: thin outset;

border-color: #FFFFFF #000000 #000000 #FFFFFF;

cursor:hand;

}

</STYLE>

<body topmargin="0" leftmargin="0">

<table width="100%" height="80" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFCC00">

<tr>

<td width="71%" background="topo.gif"> </td>

<td width="29%" bgcolor="#FFCC00"><form action=listaprod.asp method=query>

<strong><font color="#CC0000" size="2" face="Arial, Helvetica, sans-serif"><a href="./status.asp">Acompanhar

seus pedidos</a></font></strong>

</form>

<strong></strong></td>

</tr>

</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera Valeu a todos pela ajuda.

 

Fiz uma das opções de um dos amigos e deu certo

Como funcionou:

 

Removi os includes e coloquei o script na propria página de login, ao inves

de colocar na página que abre após o acesso. Deu certo desta forma.

 

Agradeço a todos http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Um abraço

 

Joao Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque a parte inicial, que você marcou com Azul, por esse:

<!--#include file="Connections/lojaDB.asp" -->
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("usuario"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization="nivel"
MM_redirectLoginSuccess="loja/index.asp"
MM_redirectLoginFailed="cadastro.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_lojaDB_STRING
MM_rsUser.Source = "SELECT usuario, senha, Acesso"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = MM_rsUser.Source & " FROM clientes WHERE usuario='" & Replace(MM_valUsername,"'","''") &"' AND senha='" & Replace(Request.Form("senha"),"'","''") & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then 
 ' username and password match - this is a valid user
 Session("MM_Username") = MM_valUsername

 sql = "UPDATE clientes SET acesso = acesso + 1 WHERE usuario='"& Replace(MM_valUsername,"'","''") &"' AND senha='"& Replace(Request.Form("senha"),"'","''") &"';"
 lojaDB.execute(sql)
 Session("Acessos") = MM_rsUser("acesso")

 If (MM_fldUserAuthorization <> "") Then
	 Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)
 Else
	 Session("MM_UserAuthorization") = ""
 End If
 if CStr(Request.QueryString("accessdenied")) <> "" And false Then
	 MM_redirectLoginSuccess = Request.QueryString("accessdenied")
 End If
 MM_rsUser.Close
 Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>

Esse code só conta a visita de usuários cadastrados, e armazena o valor na session

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.