Ir para conteúdo

POWERED BY:

Arquivado

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

Leandro D.

SMTP, IIS 7.5 e JMail

Recommended Posts

Ajax e asp tem alguns exemplos no laboratório de scripts, dá uma olhada lá que tem alguns exemplos bastante praticos e funcionais.

 

Quanto a consulta com intervalo de tempo, isso pode ser feito usando um java script que dê o refresh na página.

Se o que precisa é uma consulta feita pelo servidor, terá de ver se o seu servidor oferece agendamento de tarefas e tals, senão terás de pensar noutra solução, pois o asp em si, não fará nada pré-programado e sem ter uma página aberta que contenha os comandos necessários para que seja efetuada determinada ação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax e asp tem alguns exemplos no laboratório de scripts, dá uma olhada lá que tem alguns exemplos bastante praticos e funcionais.

 

Quanto a consulta com intervalo de tempo, isso pode ser feito usando um java script que dê o refresh na página.

Se o que precisa é uma consulta feita pelo servidor, terá de ver se o seu servidor oferece agendamento de tarefas e tals, senão terás de pensar noutra solução, pois o asp em si, não fará nada pré-programado e sem ter uma página aberta que contenha os comandos necessários para que seja efetuada determinada ação.

Vinicius, eu tenho em mente o que eu queria fazer, porém não sei como e se tem jeito. Como informei, sei o básico do básico em ASP.

 

Tenho um banco de dados onde o usuários enviam um mensagem para outro usuário na página user_msg.asp, a mensagem fica gravada no bd com um campo chamado lida onde o valor pode ser 0 para não lida e 1 para lida. Há uma página user_index.asp (painel principal) onde o usuário entra assim que se logar e no painel eu queria colocar algo indicando "Mensagens: 0". Eu queria que uma consulta fosse executada num intervalo de tempo onde procurasse no bd mensagens com o valor 0 para aquele determinado usuário, somasse a quantidade de registros com 0 e retornasse o valor na página user_index.asp atualizando o "Mensagens: 0" sem que haja o refresh da página. Será que isto é possível? Gostaria de receber um exemplo para estudar. O xanburzum disse que tem um exemplo, estou esperando ele me mandar, se você puder ajudar também eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acabei de enviar pra você, mandei dois exemplos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acabei de enviar pra você, mandei dois exemplos.

Valeu xanburzum, acabei de receber aqui na empresa. Irei estudar em casa mais a noite, qualquer coisa eu te mando um email ou posto aqui, falou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode alterá-lo conforme sua necessidade, e precisando, posta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum, fui testar os arquivos que vieram compactados como ASP_1.rar e já deu um erro. Fui tentar me cadastrar para testar e deu este erro:

ADODB.Recordset erro '800a0bb9'

 

Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.

 

/Intranet/ASP_1/login.asp, linha 56

 

O código da linha 56 é a abaixo. A lina 56 é a que contem rs.ActiveConnection = Application("ConnectionString")

<%
	Else
		Dim ErrorCount
		Dim rs
		ErrorCount = 0
		Set rs = Server.CreateObject("ADODB.Recordset")
		rs.ActiveConnection = Application("ConnectionString")
		rs.Open "SELECT UserName FROM [userData] WHERE UserName = '" & Trim(Request.Form("UserName")) & "';"
		If Not rs.EOF Then ErrorCount = 1
		rs.Close%>

O que pode ser? Não alterei nada no código. Abri o arquivo mdb e adicionei um usuário só para testar o login e deu o mesmo erro na linha 153, veja abaixo o código com a linha, a 153 é a que contem rs.ActiveConnection = Application("ConnectionString")

  <%Else
		If Not(Trim(Request.Form("UserName")) = "") And Not(Trim(Request.Form("Password")) = "") Then
			Set rs = Server.CreateObject("ADODB.Recordset")
			rs.ActiveConnection = Application("ConnectionString")
			rs.CursorType = 2 'adOpenDynamic
			rs.Open "SELECT UserName, [Password], AccessLevel FROM [userData] WHERE UserName = '" & Trim(lCase(Request.Form("UserName"))) & "';" 
			If Not rs.EOF Then
				If rs("Password") = EncodeForSQL(Trim(Request.Form("Password"))) Then
					Session("UserName") = rs("UserName")
					Session("AccessLevel") = rs("AccessLevel")
					rs.Close
					If Session("AccessLevel") = "User" Then
						Response.Redirect "index.asp"
					Else
						Response.Redirect "admin.asp?Action=Menu"
					End If
				Else
					Session("ErrorMessage") = "The Password you entered was incorrect!"
					Response.Redirect "login.asp?Action=Login"
				End If
			Else
				Session("ErrorMessage") = "The Username you entered could not be found!"
				Response.Redirect "login.asp?Action=Login"
			End IF
		Else
			Session("ErrorMessage")="One or more Fields was left blank."
			Response.Redirect "login.asp?Action=Login"
		End If
    End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta sua string de conexao....

os direitos administrativos estão setados no bd...

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta sua string de conexao....

os direitos administrativos estão setados no bd...

Cara, do jeito que veio eu tentei usar, eu não mexi em nada, só coloquei a pasta no C:\Inetpub\wwwroot e testei e deu este erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta sua string de conexao....

os direitos administrativos estão setados no bd...

Cara, do jeito que veio eu tentei usar, eu não mexi em nada, só coloquei a pasta no C:\Inetpub\wwwroot e testei e deu este erro.

 

Como você pegou o código dele, o caminho do banco de dados pode ser diferente ou as credenciais utilizadas para acesso no servidor de banco de dados podem estar diferentes.

 

Dê uma checada nisso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como esta sua string de conexao....

os direitos administrativos estão setados no bd...

Cara, do jeito que veio eu tentei usar, eu não mexi em nada, só coloquei a pasta no C:\Inetpub\wwwroot e testei e deu este erro.

 

Como você pegou o código dele, o caminho do banco de dados pode ser diferente ou as credenciais utilizadas para acesso no servidor de banco de dados podem estar diferentes.

 

Dê uma checada nisso.

 

Marrabel e xanburzum, o problema era no caminho do arquivo mdb mesmo, e o nome da tabela que contem os posts. Porém quando tento adicionar um post e clico no botão, dá outro erro no INSERT INTO, veja abaixo o erro:

Tipo de erro:

Microsoft JET Database Engine (0x80040E14)

Erro de sintaxe na instrução INSERT INTO.

/Intranet/ASP_1/index.asp, line 215

 

Tá aparecendo aquele ponto junto com o INTO, mas olha a parte onde tem a linha 215.

<%
	Else
		Set cn = Server.CreateObject("ADODB.Connection")
		cn.ConnectionString = Application("ConnectionString")
		cn.Open
		If cLng(Request.QueryString("ReplyToID")) <> 0 Then
			cn.Execute "INSERT INTO [" & Trim(cfgBoardName) & "] ([userName], [Caption], [Post], [Link], [LinkURL], [ThreadID], [ReplyToID], [PostLevel], [sendEmail]) " _
					& "VALUES ('" & Session("UserName") & "','" & RemoveBadElements(Request.Form("Caption")) & "','" & RemoveBadElements(Request.Form("Post")) & "','" & RemoveBadElements(Request.Form("Link")) & "','" & RemoveBadElements(Request.Form("LinkURL")) & "'," _
					& cLng(Request.QueryString("ThreadID")) & "," & cLng(Request.QueryString("ReplyToID")) & "," & cLng(Request.QueryString("PostLevel")) + 1 & "," & Request.Form("SendEmail") & ");"
			cn.Execute "UPDATE [" & Trim(cfgBoardName) & "] SET Replies = Replies + 1 WHERE PostID = " & cLng(Request.QueryString("ReplyToID")) & ";"
		Else
			cn.Execute "INSERT INTO [" & Trim(cfgBoardName) & "] ([userName], [Caption], [Post], [Link], [LinkURL], [ThreadID], [sendEmail]) " _
					& "VALUES ('" & Session("UserName") & "','" & RemoveBadElements(Request.Form("Caption")) & "','" & RemoveBadElements(Request.Form("Post")) & "','" & RemoveBadElements(Request.Form("Link")) & "','" & RemoveBadElements(Request.Form("LinkURL")) & "'," _
					& cLng(Request.QueryString("ThreadID")) & "," & Request.Form("SendEmail") & ");"
End If		

A linha 215 é a depois do Else que começa com cn.Execute. Onde está este ponto??? Alguém pode me dar uma luz??? Eu gostei dste exemplo, adicionei manualmente um post no arquivo mdb e pedi para visulaizar, consegui até postar um reply, mas um novo post pela página dá este erro aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já viu se reunir tudo numa linha unica dá erro ?

 

As vezes a linha está quebrada e aparenta ser uma linha continua no editor, que o editor "quebrou" para melhor vizualização.

Vinicius, fiz o que você orientou. A linha ficou assim:

cn.Execute "INSERT INTO [" & Trim(cfgBoardName) & "] ([userName], [Caption], [Post], [Link], [LinkURL], [ThreadID], [sendEmail]) " & "VALUES ('" & Session("UserName") & "','" & RemoveBadElements(Request.Form("Caption")) & "','" & RemoveBadElements(Request.Form("Post")) & "','" & RemoveBadElements(Request.Form("Link")) & "','" & RemoveBadElements(Request.Form("LinkURL")) & "'," & cLng(Request.QueryString("ThreadID")) & "," & Request.Form("SendEmail") & ");"

Não sei se está certo, mas tinha umas "underlines" no fim de cada linha, eu apaguei e testei tudo numa linha só e deu o mesmo erro. O que pode ser?

 

Estava olhando o código e encontrei isto.

Application("ConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(".") & "\bd\Data.mdb;"

O que quer dizer aquele ponto no Server.MapPath? Eu apaguei e fiz um teste de cadastro de usuário. Cadastrou normal, porém para logar deu erro. Pensei que fosse este ponto que estaria dando erro no INSERT INTO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse erro Verifique a ortografia,veja se nao tem um nome de coluna Invalida. A coluna a qual você se refere na Base de Dados não foi encontrada.

 

dá um response.write na sua SQl, para ver o que esta sendo passado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E com as underlines ?

Testou para ver se dá erro ?

Se eu coloco as underlines dá Caractere inválido.

Galera, ainda não consegui funcionar este exemplo. Será que alguém não tem um exemplo mais simples, igual ao que eu disse em um post acima. Eu tenho uma página asp que verifica se há novas mensagens no bd e conta quantas tem usando um loop. Veja abaixo:

<%
Dim objConn, objRS, strQuery, st, user
st=0
user=Session("user")
Set objConn=Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=c:/Controle/banco_dados.mdb;Driver={Microsoft Access Driver (*.mdb)}"
strQuery="SELECT * FROM mensagens WHERE usuario='"&user&"' AND lida='"&st&"' ORDER BY data"
Set objRS=objConn.Execute(strQuery)
While not objRS.EOF
counter=counter+1
objRS.MoveNext
Wend
objRS.close
objConn.close
Set objRS=Nothing
Set objConn=Nothing
%>

Como eu faço para exibir este resultado na página principal do usuário sem dar refresh? Se eu coloco um response.write counter no fim da página acima e testo ela no browser, mostra o número de mensagens encontradas. Como mostrar isso na página principal? Igual o Facebook que aparece um número sobre o ícone de mensagem. Sei que vão dizer Ajax ou Jquery, mas não tenho idéia de como fazer para a página do usuário chamar a página asp que verifica. N a net só encontro coisas de Ajax com PHP ou Jquery com PHP e isso não me ajuda muito. Fico no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dependendo da situacaun melhor usar um contatdor normal ou a clausula count do SQL, pois se o seu bd for muito grande o recordcount do objeto recordset para apresentar queda de desempenho

e para usar o RecordCount , seu cursortype tem k ser recordset.CursorType = 3 (AdOpenDynamic)

 

exemplo:

<%
DIM mySQL, objRS
mySQL = "SELECT * FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mySQL, objConn

' Count how many records exist
DIM iRecordCount
iRecordCount = 0
DO WHILE NOT objRS.EOF
iRecordCount = iRecordCount + 1
objRS.MoveNext
Loop

' Display result
Response.Write "(" & iRecordCount & ")"

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing
%> 

 

SQL COUNT

 

<!--#INCLUDE VIRTUAL="/includes/connection.asp" -->

<%
DIM mySQL, objRS
mySQL = "SELECT Count(*) AS intTotal FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open recSQL, objConn

' Display result
Response.Write objRS("intTotal")

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

dependendo da situacaun melhor usar um contatdor normal ou a clausula count do SQL, pois se o seu bd for muito grande o recordcount do objeto recordset para apresentar queda de desempenho

e para usar o RecordCount , seu cursortype tem k ser recordset.CursorType = 3 (AdOpenDynamic)

 

exemplo:

<%
DIM mySQL, objRS
mySQL = "SELECT * FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mySQL, objConn

' Count how many records exist
DIM iRecordCount
iRecordCount = 0
DO WHILE NOT objRS.EOF
iRecordCount = iRecordCount + 1
objRS.MoveNext
Loop

' Display result
Response.Write "(" & iRecordCount & ")"

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing
%> 

 

SQL COUNT

 

<!--#INCLUDE VIRTUAL="/includes/connection.asp" -->

<%
DIM mySQL, objRS
mySQL = "SELECT Count(*) AS intTotal FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open recSQL, objConn

' Display result
Response.Write objRS("intTotal")

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing

E aí xanburzum, muito frio em Piracicaba, aqui em Santa Maria ta frio pakas. Valeu pela dicas com o count, mas o que eu quero é mostra este resultado em outra página e não na página que verifica. Tipo eu estou logado no sistema fazendo algum trabalho e outra pessoa do sistema me manda uma mensagem. Eu tenho um menu em uma div que contem a parte do usuário (logout, config da conta, imagem, etc), igual o painel superior aqui do fórum onde tem a nossa imagem, nome, link de sair e um indicador de notificações, eu queria mostrar o resultado neste menu. Tipo assim: Mensagem: 0 ou se tiver mensagens, Mensagem: 3. Eu queria ver se tem como fazer, através de javascript, Ajax ou jquery, chamar a página asp que verifica se tem mensagens e mostra o resultado na página em que estou, sem dar refresh. Tipo, o funcionário da produção me mandou uma mensagem com solicitação de compra, eu estou executando cadastros de clientes no sistema, depois de dois minutos (por exemplo), é feita a verificação de mensagem e encontra a mensagem do funcionário. No meu painel aparece Mensagem: 1, isso sem dar refresh e perder o que eu possa estar fazendo. Semelhante ao facebook, quando aparece o número no ícone de mensagem. Não sei se estou sendo claro, mas o que me falta e fazer isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagino que para fazer isso, ajax / jquery é possivel de usar, não sei o que seria melhor, um include com set interval para dar refresh nessa pagina, (que seria um bloco na pagina que chama o include) ou um set interval ao inves do on change normalmente usado, para executar a pagina que faz o sql buscando as mensagens ainda não lidas.

 

Infelizmente não tenho nenhum exemplo em mãos para postar aqui, mas acho que no jquery.com você deve achar algo nesse sentido.

 

Só repare que se o intervalo for muito curto, a página poderá ficar lenta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagino que para fazer isso, ajax / jquery é possivel de usar, não sei o que seria melhor, um include com set interval para dar refresh nessa pagina, (que seria um bloco na pagina que chama o include) ou um set interval ao inves do on change normalmente usado, para executar a pagina que faz o sql buscando as mensagens ainda não lidas.

 

Infelizmente não tenho nenhum exemplo em mãos para postar aqui, mas acho que no jquery.com você deve achar algo nesse sentido.

 

Só repare que se o intervalo for muito curto, a página poderá ficar lenta.

Valeu Vinicius, vou dar uma olhada depois, se você ou o xanburzum souber de uma exemplo para eu der uma olhada eu agradeço. Não sei como utilizar este set interval.

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.