O componente Ad Rotator cria um objecto AdRotator, que automatiza a alternãncia de imagens publicitárias numa página Web. Sempre que um utilizador abre ou recarrega a página, o componente AdRotator, apresenta um anúncio novo, baseado num ficheiro que especificar num ficheiro de agenda.
Comecemos por criar as seguintes linhas de código, guardando-o como rodar.asp
Criemos um outro ficheiro com o seguinte código, ao qual chamamos texto.txt
 
Ambos os ficheiros foram gravados em c:\inetpub\wwwroot. Accionamos o nosso já conhecido PWM e o que observamos é o seguinte:
 
 
 
Estas imagens vão alternando, cada vez que chamamos o PWM ou fazemos Refresh (F5)
 
Propriedades:
  • Border - Especifica o tamanho do limite existente em redor do anúncio
  • Clickable -Especifica se o anúncio é ou não uma hiperligação
  • TargetFrame - Especifica o nome da frame em que o anúncio deve ser apresentado
Métodos:
  • GetAdvertisement - Obtem as especificações relativas ao próximo anúncio agendado a partir do ficheiro de dados.
Se estás a criar uma aplicação baseada na Web, é provavel que essa aplicação venha a ter formulários, e que requeira algum tipo de Base de dados. O ADO (ActiveX Data Objects) fornece-te um conjunto de ferramentas poderosas para aceder e manipular origens de dados.
 
Consulta Simples : Ilustra como podes utilizar o ADO e o ASP em conjunto para efectuar consultas simples a Base de Dados. Iremos observar como obter um pequeno conjunto de registo a partir de uma Base de dados em Microsoft Access.
Vamos observar o seguinte código, que guardamos como "simples.asp"
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>Simples Query ADO </TITLE>
</HEAD>
<BODY BGCOLOR="White" topmargin="10" leftmargin="10">
<!-- Mostra cabeçalho-->
<font size="4" face="Arial, Helvetica">
<b>Simples Query ADO com ASP</b></font><br>

<hr size="1" color="#000000">

Contactos com a Base de Data Autores :<br><br>
<%
Dim oConn
Dim oRs
Dim filePath
Dim Index


' Identifica o caminho da Base de dados
filePath = Server.MapPath("authors.mdb")


' Cria ADO Connection Component para conectar
' com a Base de Dados

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath


' Executa a SQL query e guarda os resultados
' num recordset

Set oRs = oConn.Execute("SELECT * From authors")
%>


<TABLE border = 1>
<%
Do while (Not oRs.eof) %>
<tr>
<% For Index=0 to (oRs.fields.count-1) %>
<TD VAlign=top><% = oRs(Index)%></TD>
<% Next %>
</tr>

<% oRs.MoveNext
Loop
%>

</TABLE>

<%
oRs.close
oConn.close
%>

</BODY>
</HTML>
 
 
Acionando o nosso já conhecido PWM, e obteremos qualquer coisa como a imagem de cima.
Obs: A Base de dados que serviu para este teste, é a Autores.Mdb

Limitar os resultados da Consulta, num Ambiente Internet é frequentemente utilizado. O exemplo seguinte mostra como limitar o numero de linhas devolvidas.
 
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<!--METADATA TYPE="typelib"
uuid="00000205-0000-0010-8000-00AA006D2EA4" -->
<HTML>
<HEAD>
<TITLE>Limitar linhas da Base de dados</TITLE>
</HEAD>
<BODY BGCOLOR="White" topmargin="10" leftmargin="10">
<!-- Display Header -->

<font size="4" face="Arial, Helvetica">
<b>Limitar linhas da Base de dados</b></font><br>

<hr size="1" color="#000000">

Contactos com a Base de dados Autores:<br><br>
<%
Dim oConn
Dim oRs
Dim curDir
Dim Index


' Caminho da Base de dados

curDir = Server.MapPath("authors.mdb")

' Criar ADO Connection Component para conectar
' com a Base de dados

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir

' Cria um ADO Recordset Component

Set oRs = Server.CreateObject("ADODB.Recordset")
Set oRs.ActiveConnection = oConn

' Coloca o comprimento do página do Recordset
' para mostrar somente 10 linhas

oRs.PageSize = 10

' Obtem o recordset

oRs.Source = "SELECT * FROM authors"
oRs.CursorType = adOpenStatic

' Abre Recordset

oRs.Open
%>

<TABLE border = 1>
<%
Dim RecordCount
RecordCount = 0

Do while ((Not oRs.eof) And (RecordCount < oRs.PageSize)) %>

<tr>
<% For Index=0 to (oRs.fields.count-1) %>
<TD VAlign=top><% = oRs(Index)%></TD>
<% Next %>
</tr>

<%
RecordCount = RecordCount + 1
oRs.MoveNext
Loop
%>

</TABLE>
<%
oRs.close
oConn.close
%>

</BODY>
</HTML>

O resultado será o seguinte:
 
Experimenta alterar a linha 49 pela seguinte: acrescentando somente ( order by autor ASC)
Set oRs = oConn.Execute("SELECT * From authors order by autor ASC")
Volta a correr o PWM e vê o que acontece.

Consulta Deslocável :
Quando se concebe uma aplicação, para a Internet, pretende-se limitar a quantidade de informação que uma consulta a uma Base de dados devolve a um Browser do cliente.
O exemplo seguinte, demonstra, como limitar o numero de linhas de cada vez, mas permite que o utilizador realize a totalidade da consulta.
<% @LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<!--METADATA TYPE="typelib"
uuid="00000205-0000-0010-8000-00AA006D2EA4" -->
<HTML>
<HEAD>
<TITLE>MultiScrolling </TITLE>
</HEAD>
<BODY BGCOLOR="White" topmargin="10" leftmargin="10">

<!-- Display Header -->
<font size="4" face="Arial, Helvetica">
<b>Navegar Pela Base de Dados</b></font><br>

<hr size="1" color="#000000">

Contactos com a Base de dados Autores:<br><br>

<%
Dim oConn
Dim oRs
Dim filePath
Dim Mv
Dim PageNo
Dim j
Dim i


' O caminho da Base de dados

filePath = Server.MapPath("authors.mdb")


' Criar um ADO Connection Component para ligar
' com a bBase de Dados
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath

' Criar ADO Recordset Component

Set oRs = Server.CreateObject("ADODB.Recordset")


' Determina que numero de página está em scrolling

Mv = Request("Mv")
If Request("PageNo") = "" Then
PageNo = 1
Else
PageNo = Request("PageNo")
End If


' Setup Query Recordset (4 registos por página)

oRs.Open "SELECT * FROM Authors", oConn, adOpenStatic
oRs.PageSize = 4

' Guarda o numero de página

If Mv = "Page Up" or Mv = "Page Down" Then
Select Case Mv
Case "Page Up"
If PageNo > 1 Then
PageNo = PageNo - 1
Else
PageNo = 1
End If
Case "Page Down"
If oRs.AbsolutePage < oRs.PageCount Then
PageNo = PageNo + 1
Else
PageNo = oRs.PageCount
End If
Case Else
PageNo = 1
End Select
End If
oRs.AbsolutePage = PageNo
%>

<!-- Desenha a tabela de contactos -->

<TABLE BORDER=1>
<% For j = 1 to oRs.PageSize %>
<TR>
<% For i = 0 to oRs.Fields.Count - 1 %>
<TD VALIGN=TOP><%= oRs(i) %></TD>
<% Next %>
</TR>

<%
oRs.MoveNext

' Não tente imprimir o registo EOF.
If oRs.EOF Then
Exit For
End If
Next %>
</TABLE>


<!-- Exemplo do controlo de navegação de Scrolling -->
<Form Action=MultiScrolling_VBScript.asp Method="POST">
<Input Type="Hidden" Name="PageNo" Value="<%= PageNo %>">
<!-- Only show appropriate buttons -->
<% If PageNo < oRs.PageCount Then %>
<INPUT TYPE="Submit" Name="Mv" Value="Page Down">
<% End If %>

<% If PageNo > 1 Then %>
<INPUT TYPE="Submit" Name="Mv" Value="Page Up">
<% End If %>

</Form>
</BODY>
</HTML>
Para que o processo funcione, necessitamos
de uma segunda página com o seguinte código:
<% @LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<!--METADATA TYPE="typelib"
uuid="00000205-0000-0010-8000-00AA006D2EA4" -->
<HTML>
<HEAD>
<TITLE>MultiScrolling Database Sample</TITLE>
</HEAD>
<BODY BGCOLOR="White" topmargin="10" leftmargin="10">

<!-- Display Header -->
<font size="4" face="Arial, Helvetica">
<b>MultiScrolling Database Sample</b></font><br>

<hr size="1" color="#000000">

Contacts within the Authors Database:<br><br>

<%
Dim oConn
Dim oRs
Dim filePath
Dim Mv
Dim PageNo
Dim j
Dim i


' Map authors database to physical path

filePath = Server.MapPath("authors.mdb")


' Create ADO Connection Component to connect with
' sample database
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath

' Create ADO Recordset Component

Set oRs = Server.CreateObject("ADODB.Recordset")


' Determine what PageNumber the scrolling currently is on

Mv = Request("Mv")
If Request("PageNo") = "" Then
PageNo = 1
Else
PageNo = Request("PageNo")
End If


' Setup Query Recordset (4 records per page)

oRs.Open "SELECT * FROM Authors", oConn, adOpenStatic
oRs.PageSize = 4

' Adjust PageNumber as Appropriate

If Mv = "Page Up" or Mv = "Page Down" Then
Select Case Mv
Case "Page Up"
If PageNo > 1 Then
PageNo = PageNo - 1
Else
PageNo = 1
End If
Case "Page Down"
If oRs.AbsolutePage < oRs.PageCount Then
PageNo = PageNo + 1
Else
PageNo = oRs.PageCount
End If
Case Else
PageNo = 1
End Select
End If

oRs.AbsolutePage = PageNo
%>

<!-- Draw Table of Contacts in DB -->

<TABLE BORDER=1>
<% For j = 1 to oRs.PageSize %>
<TR>
<% For i = 0 to oRs.Fields.Count - 1 %>
<TD VALIGN=TOP><%= oRs(i) %></TD>
<% Next %>
</TR>

<%
oRs.MoveNext

' Don't try to print the EOF record.
If oRs.EOF Then
Exit For
End If
Next %>
</TABLE>


<!-- Scrolling Navigation Control for Sample -->
<Form Action=MultiScrolling_VBScript.asp Method="POST">
<Input Type="Hidden" Name="PageNo" Value="<%= PageNo %>">
<!-- Only show appropriate buttons -->
<% If PageNo < oRs.PageCount Then %>
<INPUT TYPE="Submit" Name="Mv" Value="Page Down">
<% End If %>

<% If PageNo > 1 Then %>
<INPUT TYPE="Submit" Name="Mv" Value="Page Up">
<% End If %>

</Form>
</BODY>
</HTML>
Os resultados são como os exemplos que se seguem:
 

 Conectividade com Base de Dados-Inserir Dados
O passo que se segue, é inserir dados na nossa Base de Dados AUTHORS, com uma única tabela (Authors) e com 4 campos:
  • SEQUENT- Chave numérica de criação automática
  • NR_ID - Numero de Autor
  • NOME - Nome do Autor
  • ANONASC - Ano de nascimento do Autror
Para isso digitámos o seguinte código:
 
<%@LANGUAGE = vBScript %>
<% OPTION EXPLICIT %>
<HTML>
<BODY>
<%
Dim oconn
Dim filepath
Dim Ors
DIM SQLStr
%>
<%
filepath=Server.MapPath("authors.mdb")
Set oconn = Server.CreateObject("ADODB.CONNECTION")
oconn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
set ors=Server.CreateObject("ADODB.Recordset")
%>
<div align="center">
<center>
<table border="1" width="440" bgcolor="#00CCFF">
<tr>
<td width="100%"><font face="Arial"><b><CENTER>AUTORES - INSERIR NOVOS REGISTOS</b></font></CENTER><br><br>
</center>
<table border="1" width="96%">
<tr>
<FORM ACTION="ins.asp" METHOD="POST">

<center>
<table border="1" width="400">
<tr>
<td width="100"><font face="Arial">Numero :</font></TD>
<TD><input type="text" name="numero" size="5"> </td>
</tr>
<tr>
<td width="100"><font face="Arial">Nome :</font></TD>
<TD><input type="text" name="nome" size="20"></td>
</tr>
<tr>
<td width="100"><font face="Arial">Ano :</font></TD>
<TD><input type="text" name="data" size="4"> </td>
</tr>
</table>
<input type="submit" name="inser" value="INSERIR">
</center>
</div>

<%
if request.form("inser")<>"" then
if (request.form("numero")<>"" and request.form("nome")<>"" and request.form("data")<>"") then
inserir
end if
end if
%>
</FORM>
</td>
</tr>
</table>
</table>
</div>

<%Sub inserir()%><%
on error resume next
SQLStr = "insert into authors (NR_ID, AUTOR, ANONASC) "
SQLStr = SQLStr & "VALUES('" & Server.HTMLEncode(request.form("numero")) & "', '"
SQLStr = SQLStr & Server.HTMLEncode(request.form("nome")) & "', '" & Server.HTMLEncode(request.form("data")) & "')"
oconn.execute SQLStr
%>
<%End Sub%>
</BODY>
</HTML>
O resultado quando accionamos o PWM é a imagem que se segue, e sempre que preenchermos os 3 campos e clicarmos em inserir, teremos criado um novo registo na Tabela.

Conectividade com Base de Dados-Consutar / Anular

Este tutorial apesar de um pouco extenso tenta abordar 3 situações:
  • Consultar a Base de dados Author pelo campo NOME, bastando escrever alguns caracteres que constem desse mesmo nome
  • Chamar o registo desejado
  • Actualizar os campos actualizaveis (numero, nome e data de nascimento)
  • Apagar um registo da base de Dados
Comecemos por vos mostrar, e sequencia de resultados deste tutorial, seguido do código aplicado, ao qual demos o nome dePROC.ASP
No 1º paço, se clicarmos no botão "PROCURAR" com a caixa de texto em branco, visualizaremos todo o conteudo da base de dados
A 2ª imagem é o resultado da Procura:
A 3ª imagem resulta da consulta solicitada quando clicamos no Link Detalhes, Todos os campos do registos são alteráveis com excepção da chave principal, que é atribuida automaticamente, com o nome de "sequencia"
Por defeito a ComboBox tem o opção actualizar, mas podemos alterá-la para apagar o respectivo registo ao clicarmos em "EXECUTAR A ACÇÃO", conforme ilustra a 4ª imagem
Segue o código que deu origem a tudo isto:
 
<%@LANGUAGE="VBScript"%>
<%
Dim u
session("act")=""
session("sequencial") = ""%>
<%Sub Listar()
filepath=Server.MapPath("authors.mdb")
Set conn = Server.CreateObject("ADODB.CONNECTION")
conn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
set rs=Server.CreateObject("ADODB.Recordset")
SQLINST = "SELECT * FROM authors WHERE autor like '%" & Request.Form("nome") & "%'"
rs.open SQLINST, conn
%>
<table border="1" width="590" cellpadding="0" cellspacing="0">
<tr>
<td width="11%" align="center"><Font face="ARIAL" Size="2"><b>SEQ</b></Font></td>
<td width="22%" align="center"><b>NUMERO</b></td>
<td width="55%" align="center"><b>NOME</b></td>
<td width="12%" align="center"><b>ANO NASC</b></td>
</tr>
</table>
<%
u=0
while not rs.EOF%>
<form action="proc.asp?accao=dados" method="POST">
<table border="2" width="650" cellpadding="0" cellspacing="0">
<tr>
<td width="10%" align="center"><%=(rs.fields.item("sequen").value)%></td>
<td width="20%" align="center"><%=(rs.Fields.item("nr_id").value)%></td>
<td width="50%" align="center"><%=(rs.Fields.item("autor").value)%></td>
<td width="10%" align="center"><%=(rs.Fields.item("anonasc").value)%></td>
<td width="*"> <div align="center"><A HREF="proc.asp?accao=<%= MM_KeepNone & MM_joinChar(MM_KeepNone) & "sequencial=" & rs.fields.item("SEQUEN").value%>">Detalhes</a></div>
</td>
</tr>
</table>
<%u=u+1%>
<% rs.MoveNext
wend
rs.close%>
<BR>Foram encontrados <%response.write u%> Registos
<BR>
<br><a href="proc.asp">Nova procura</a>
</form>
<%End Sub%>
<%Sub procura%>
<form action="proc.asp?accao=procura" method="POST">
<ALIGN="center"> NOME DO AUTOR : <input type="text" name="nome" size="22">
<input type="submit" value="Procurar">
</form>
<%End Sub%>
<%select case request.querystring("accao")
case "procura" listar
case "valor" accao
case "" procura
case else valor
end select%>

<%
Function MM_joinChar(firstItem)
If (firstItem <> "") Then
MM_joinChar = "&"
Else
MM_joinChar = ""
End If
End Function
%>

<%sub valor%>
<form action="proc.asp?accao=valor" method="post">
<%
MMColParam=Request.QueryString("accao")%>
<%
Dim ins
Dim MMColParam
Dim numero
Dim comp
ins=0
numero=0
comp=0
ins=instr(1, MMColParam, "=")
comp=Len(MMColParam)
comp=comp - ins
comp=Cint(comp)
numero=right(MMColParam, comp)
numero=Cint(numero)%>

<%
filepath=Server.MapPath("authors.mdb")
Set conn = Server.CreateObject("ADODB.CONNECTION")
conn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
set rs=Server.CreateObject("ADODB.Recordset")
SQLINST = "SELECT * FROM Authors where sequen=" & numero
rs.open SQLINST, conn
%>
<%
session("seq")=rs ("sequen")
session("nom")=rs ("autor")
session("num")=rs ("nr_id")
session("ano")=rs ("anonasc")
rs.close
%>
<table width="450" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="137">
<div align="left">Sequencia</div>
</td>
<td width="313">
<div align="left"><%=session("seq")%></div>
</td>
</tr>
<tr>
<td width="137">
<div align="left">Numero</div>
</td>
<td width="*">
<div align="left"><input type="text" name="num" value="<%=session("num")%>"></div>
</td>
</tr>
<tr>
<td width="137">
<div align="left">Nome</div>
</td>
<td width="*">
<div align="left"><input type="text" name="nom" value="<%=session("nom")%>"></div>
</td>
</tr>
<tr>
<td width="137">
<div align="left">Ano Nascimento</div>
</td>
<td width="*">
<div align="left"><input type="text" name="ano" value="<%=session("ano")%>"></div>
</td>
</tr>
</table>
<br>
Acção a tomar ?: <Select Name="accaoatomar">
<OPTION VALUE "1" selected>ACTUALIZAR</OPTION>
<OPTION value "2">APAGAR</OPTION>
</Select>
<br>
<br><input type="submit" value="Executar a Acção"><br>
<br>
<A HREF="proc.asp">Página Principal</a>
<br>
</form>
<%end sub%>

<%sub apagar()
numero = session("seq")
filepath=Server.MapPath("authors.mdb")
Set conn = Server.CreateObject("ADODB.CONNECTION")
conn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
set rs=Server.CreateObject("ADODB.Recordset")
SQLINST="delete from authors where sequen =" & numero
conn.execute (SQLINST)
response.redirect("proc.asp")
%>
<%end sub%>

<%sub accao()
select case request.form("accaoatomar")
case "APAGAR" apagar
case else actualizar
end select%>
<%end sub%>
<%sub actualizar()
numero = session("seq")
filepath=Server.MapPath("authors.mdb")
Set conn = Server.CreateObject("ADODB.CONNECTION")
conn.open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
set rs=Server.CreateObject("ADODB.Recordset")

SQLINST = "update authors set autor ='" & Server.HTMLEncode(request.form("nom")) & "' where sequen=" & numero
rs.Open SQLINST, conn
SQLINST = "update authors set nr_id ='" & Server.HTMLEncode(request.form("num")) & "' where sequen=" & numero
rs.Open SQLINST, conn
SQLINST = "update authors set anonasc ='" & Server.HTMLEncode(request.form("ano")) & "' where sequen=" & numero
rs.Open SQLINST, conn

response.redirect ("proc.asp")
%>
<%end sub%>
Anonymous Anonymous Anonymous

0 comentários:

Postar um comentário

:a   :b   :c   :d   :e   :f   :g   :h   :i   :j   :k   :l   :m   :n   :o   :p   :q   :r   :s   :t

Tudo para design