ASP - Active Server Pages
índice
O texto publicado foi encaminhado por um usuário do site por meio do canal colaborativo Monografias. Brasil Escola não se responsabiliza pelo conteúdo do artigo publicado, que é de total responsabilidade do autor . Para acessar os textos produzidos pelo site, acesse: https://www.brasilescola.com.
ASP - ACTIVE SERVER PAGES
· O que é
· Vantagens do ASP
· Itens a vertificar no servidor
· Perguntas comuns sobre ASP
· Tutorial de ASP
0.1. O que é
As ASP (Active Server Pages - Páginas de Servidor Ativas) são um ambiente para programação por scripts no servidor, que você pode usar para criar páginas dinâmicas, interativas e de alta performance. Como as páginas ASP, os scripts rodam no servidor e não no cliente. É o próprio servidor que transforma os scripts em HTML padrão, fazendo com que qualquer browser do mercado seja capaz de acessar um site que usa ASP.
Entre os recursos que podem ser implementados via ASP, podemos citar:
· Programação em VBScript ou JScript
· Acesso a banco de dados
· Sessões (persistência de informações no servidor)
ASP surgiu juntamente com o lançamento do Internet Information Server 3.0. Esta é uma solução Microsoft, que exige que o seu servidor precisa rodar um sistema operacional da Microsoft (Windows 95 ou NT). Os seguintes servidores suportam o uso de páginas ASP:
· Microsoft Internet Information Server versão 3.0 no Windows NT Server
· Microsoft Peer Web Services versão 3.0 no Windows NT Workstation
· Microsoft Personal Web Server no Windows 95 ou Windows 98
A grande vantagem, porém, é que existe esta exigência apenas do lado do servidor. No lado do cliente, você pode utilizar qualquer browser, mesmo os que não suportam VBScript (como os da Netscape).
0.2. Vantagens do ASP
· Independência do browser: ASP pode rodar páginas complexas no servidor e enviar somente os resultados para o cliente.
· Páginas x Bancos de Dados: Permite visualizar, atualizar e adicionar informações nos servidores SQL
· Segurança do código fonte: Como o Servidor retorna somente o resultado html, o código fonte (lógica) fica preservada.
· Linguagens: O ASP pode utilizar de comandos em VBScript, JavaScript e Html.
0.3. Itens a verificar no seu servidor
Para utilizar ASP em suas homepages, você precisa atender aos requisitos acima. Uma situação ideal é utilizar o Microsoft FrontPage 98 ou o Microsoft Visual InterDev (parte do Microsoft Visual Studio) para editar as páginas, mas isso não é necessário. Você pode chegar lá apenas usando o Notepad.
Antes de mais nada:
· Certifique-se que o computador que hospedará as páginas roda Windows NT Server, Windows NT Workstation, Windows 95 ou Windows 98.
· Certifique-se que você possui o Microsoft Internet Information Server (IIS), o Peer Web Services (PWS) ou o Personal Web Server (PWS, também) instalado neste computador. O Windows NT 4.0 vem com a versão 2.0 do IIS, que não é suficiente. Procure na Internet (http://www.microsoft.com/iis) o IIS versão 3 ou 4.
· Se você pretende usar os recursos de acesso a bancos de dados, certifique-se os dados estão acessíveis através de ODBC. Você precisará de um driver de ODBC instalado e funcionado no servidor. Se você optou por usar o Access, instale uma versão 7.0 (95) ou superior no Servidor. Isto garantirá a presença do driver ODBC e facilitará a criação dos seus bancos de dados. Se você preferir utilizar o SQL Server, garanta que o driver ODBC está instalado.
· Se você pretende usar os recursos de acesso a bancos de dados, verifique a existência de uma "Fonte de Dados" ODBC para este banco de dados. Isto é feito usando a opção "ODBC" do "Painel de Controle" do Windows. Se for usar o SQL Server, crie um usuário com direito para acessar este banco de dados.
· Crie um diretório para guardar as páginas ASP no seu servidor. Inclua este diretório na lista do IIS/PWS, dando direito de "Execute/Execução". As páginas ASP só podem ser rodadas a partir de um diretório com o direito de "Execução". Não habilite a opção de "Read/Leitura", para aumentar sua segurança neste diretório.
Garantidos os itens acima, você pode criar sua primeira página ASP.
Perguntas comuns sobre ASP
Que linguagens script são suportas pelas ASP?
Que browsers suportam ASP?
As páginas ASP são capazes de guardar estados?
Sim. Aplicações ASP podem armazenar dados que são mantidos durante toda uma sessão. Desta forma, um usuário pode fornecer seu nome somente uma vez em uma página e as demais páginas podem obter este dado automaticamente. Este recurso é ideal para aplicações de venda pela Internet.
As páginas ASP oferecem segurança?
Sim. O recurso ASP é parte integrante do IIS (Internet Information Server), que tem sua segurança integrada com o Windows NT Server. É fácil restringir o acesso a páginas ASP usando os esquemas de autenticação do IIS (senha básica da Web, senha do NT ou certificados de cliente). É ainda possível dar segurança aos dados transmitidos usando SSL.
Que bancos de dados podem ser acessados usando ASP?
Uma aplicação ASP pode ser usada com qualquer banco de dados compatível com ODBC. Isto inclui dados do Access, Microsoft SQL Server, Oracle, Sybase, Informix, DB2, entre outros.
ASP é melhor que CGI?
ASP lhe dá todos os recursos de aplicações CGI de uma forma mais fácil e mais robusta. Com ASP, é bem mais fácil criar conexões entre o browser e os dados em formatos normalmente incompatíveis com HTML, como bancos de dados. ASP é mais robusto por não criar um processo no servidor para cada pedido do usuário, como acontece com o CGI. Usando ASP ao invés de CGI, um servidor pode atender a um grande número de pedidos de usuários de forma mais rápida e usando menos memória. Além disso, criar páginas ASP é em geral muito mais fácil do que criar aplicações CGI.
ASP é melhor do que Perl?
Perl é apenas uma linguagem script e não uma ferramenta de desenvolvimento. Usando ASP, você tem objetos predefinidos para criar aplicações complexas, como os que permitem o acesso a bancos de dados ou o uso de sessões. Além do mais, ASP pode utilizar Perl como linguagem script, se você desejar, usando plug-ins ActiveX de terceiros.
· Funções para simplificar programas
· Subrotinas para simplificar programas
· Content Rotator para variar uma informação toda vez que alguém visitar a página.
· Strings explica algumas funções básicas de manipulação de strings.
· Rotina de Erro para tratar alguns inconvenientes
· Dicas para "Debugar" para ajudar na solução de problemas
Dicas para "Debugar"
O script abaixo é uma forma geral de debugar problemas.
1 <TITLE>dbg.asp</TITLE>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 Response.Write("<P>VARIAVEIS DO FORMULARIO:<br>")
6 Response.Write("-------------------------------<br>")
7 For Each Key in Request.Form
8 Response.Write( Key & " = " & Request.Form(Key) & "<br>")
9 Next
10
11 Response.Write("<P>VARIAVEIS QUERY STRING:<br>")
12 Response.Write("------------------------------<br>")
13 For Each Key in Request.QueryString
14 Response.Write( Key & " = " & Request.QueryString(Key) & "<br>")
15 Next
16
17 Response.Write("<P>VARIAVEIS TIPO COOKIE:<br>")
18 Response.Write("-----------------------------<br>")
19 For Each Key in Request.Cookies
20 Response.Write( Key & " = " & Request.Cookies(Key) & "<br>")
21 Next
22
23 Response.Write("<P>VARIAVEIS DE SERVIDOR:<br>")
24 Response.Write("-----------------------------<br>")
25 For Each Key in Request.ServerVariables
26 Response.Write( Key & " = " & Request.ServerVariables(Key) & "<br>")
27 Next
28 %>
29 </BODY>
30 </HTML>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 Response.Write("<P>VARIAVEIS DO FORMULARIO:<br>")
6 Response.Write("-------------------------------<br>")
7 For Each Key in Request.Form
8 Response.Write( Key & " = " & Request.Form(Key) & "<br>")
9 Next
10
11 Response.Write("<P>VARIAVEIS QUERY STRING:<br>")
12 Response.Write("------------------------------<br>")
13 For Each Key in Request.QueryString
14 Response.Write( Key & " = " & Request.QueryString(Key) & "<br>")
15 Next
16
17 Response.Write("<P>VARIAVEIS TIPO COOKIE:<br>")
18 Response.Write("-----------------------------<br>")
19 For Each Key in Request.Cookies
20 Response.Write( Key & " = " & Request.Cookies(Key) & "<br>")
21 Next
22
23 Response.Write("<P>VARIAVEIS DE SERVIDOR:<br>")
24 Response.Write("-----------------------------<br>")
25 For Each Key in Request.ServerVariables
26 Response.Write( Key & " = " & Request.ServerVariables(Key) & "<br>")
27 Next
28 %>
29 </BODY>
30 </HTML>
Rotina de Erro
Esta página demonstra uma rotina básica para tentar interpretar alguns erros que podem ser de script ou de banco de dados. Aconselho sempre usar esse tipo de rotina em todos os arquivos ASP que fazem acesso a Banco de Dados. E espero que ele nunca seja executado em seus programas...
<% on error resume next
...
Set Conn = Server.CreateObject("ADODB.Connection")
...
SQLstmt = "..."
Set RS = Conn.Execute(SQLStmt)
If err.number>0 then%>
Ocorreram Erros no Script:<P>
Número do erro=<%=err.number%><P>
Decrição do erro=<%=err.description%><P>
Help Context=<%=err.helpcontext%><P>"
Help Path=<%=err.helppath%><P>
Native Error=<%=err.nativeerror%><P>
Source=<%=err.source%><P>
SQLState=<%=err.sqlstate%><P>
<%else%>
Nenhum problema aconteceu!<p>
<%end if
IF conn.errors.count> 0 then%>
Ocorreram erros com o Database<P><%=SQLstmt%><P>
<%for counter= 0 to conn.errors.count%>
Erro #<%=conn.errors(counter).number%><P>
Descrição -><%=conn.errors(counter).description%><p>
<%next
else%>
Nenhum erro com o Database
<%end if
Conn.Close%>
...
Set Conn = Server.CreateObject("ADODB.Connection")
...
SQLstmt = "..."
Set RS = Conn.Execute(SQLStmt)
If err.number>0 then%>
Ocorreram Erros no Script:<P>
Número do erro=<%=err.number%><P>
Decrição do erro=<%=err.description%><P>
Help Context=<%=err.helpcontext%><P>"
Help Path=<%=err.helppath%><P>
Native Error=<%=err.nativeerror%><P>
Source=<%=err.source%><P>
SQLState=<%=err.sqlstate%><P>
<%else%>
Nenhum problema aconteceu!<p>
<%end if
IF conn.errors.count> 0 then%>
Ocorreram erros com o Database<P><%=SQLstmt%><P>
<%for counter= 0 to conn.errors.count%>
Erro #<%=conn.errors(counter).number%><P>
Descrição -><%=conn.errors(counter).description%><p>
<%next
else%>
Nenhum erro com o Database
<%end if
Conn.Close%>
Funções
O exemplo abaixo é de uma função que recebe um número (mês) e converte para o valor em extenso (nome). A declaração de funções segue o esquema abaixo. Como dissemos anteriormente, é bom ter um arquivo Include com todas as funções usadas por um determinado sistema ou página, semelhante aos módulos do VB.
1 <%functions.asp
2 Public Function MesExtenso (mes)
3 Select Case mes
4 Case 1
5 MesExtenso = "Janeiro"
6 Case 2
7 MesExtenso = "Fevereiro"
8 Case 3
9 MesExtenso = "Março"
10 Case 4
11 MesExtenso = "Abril"
12 Case 5
13 MesExtenso = "Maio"
14 Case 6
15 MesExtenso = "Junho"
16 Case 7
17 MesExtenso = "Julho"
18 Case 8
19 MesExtenso = "Agosto"
20 Case 9
21 MesExtenso = "Setembro"
22 Case 10
23 MesExtenso = "Outubro"
24 Case 11
25 MesExtenso = "Novembro"
26 Case 12
27 MesExtenso = "Dezembro"
28 End Select
29 End Function
2 Public Function MesExtenso (mes)
3 Select Case mes
4 Case 1
5 MesExtenso = "Janeiro"
6 Case 2
7 MesExtenso = "Fevereiro"
8 Case 3
9 MesExtenso = "Março"
10 Case 4
11 MesExtenso = "Abril"
12 Case 5
13 MesExtenso = "Maio"
14 Case 6
15 MesExtenso = "Junho"
16 Case 7
17 MesExtenso = "Julho"
18 Case 8
19 MesExtenso = "Agosto"
20 Case 9
21 MesExtenso = "Setembro"
22 Case 10
23 MesExtenso = "Outubro"
24 Case 11
25 MesExtenso = "Novembro"
26 Case 12
27 MesExtenso = "Dezembro"
28 End Select
29 End Function
Content Rotator
Esta página demonstra a funcionalidade do componente Content Rotator. O script é simples.
1 <HTML>
2 <HEAD>
3 <TITLE>cr.asp</TITLE>
4 </HEAD>
5 <body bgcolor="#FFFFFF">
6 <%
7 Set Dica = Server.CreateObject("IISSample.ContentRotator")
8 response.write "Este é o meu conselho:<P>"
9 response.write Dica.ChooseContent("/dicas/dicas.txt")
10 %>
11 </BODY>
12 </HTML>
2 <HEAD>
3 <TITLE>cr.asp</TITLE>
4 </HEAD>
5 <body bgcolor="#FFFFFF">
6 <%
7 Set Dica = Server.CreateObject("IISSample.ContentRotator")
8 response.write "Este é o meu conselho:<P>"
9 response.write Dica.ChooseContent("/dicas/dicas.txt")
10 %>
11 </BODY>
12 </HTML>
O arquivo Dicas.txt pode se parecer com o seguinte:
1 %%#3
2 Cante sempre que estiver tomando banho.
3 %%#3
4 <font size="2">Planeje o seu dia logo no início da manhã.</font>
5 %%#3
6 <font size="4">Tenha pelo menos 8 horas de sono por dia!</font>
2 Cante sempre que estiver tomando banho.
3 %%#3
4 <font size="2">Planeje o seu dia logo no início da manhã.</font>
5 %%#3
6 <font size="4">Tenha pelo menos 8 horas de sono por dia!</font>
Funções para String
As funções para String são muito úteis para passar dados para ASCII, formatar saídas complexas e entradas para formulários, por exemplo. O seguinte script é só uma amostra da função MID. A maioria das funções de formatação de string utilizadas no VB podem ser usadas aqui no ASP. Mais abaixo existem alguns exemplos.
1 <title>strings.asp</title>
2 <body bgcolor="#FFFFFF">
3 <% Dim teste
4 teste="Hello. How are you today Student."
5 response.write ("teste=" & teste)
6 response.write ("mid(teste,1,5)=" & mid(teste,1,5))
7 %>
8 </body>
2 <body bgcolor="#FFFFFF">
3 <% Dim teste
4 teste="Hello. How are you today Student."
5 response.write ("teste=" & teste)
6 response.write ("mid(teste,1,5)=" & mid(teste,1,5))
7 %>
8 </body>
Outras funções do VBScript
Asc, AscB, AscW, Chr, ChrB, ChrW, Filter, Instr, InStrB, InstrRev, Join, Len, LenB, LCase, UCase, Left, LeftB, Mid, MidB, Right, RightB, Replace, Space, Split, StrComp, String, StrReverse, LTrim, RTrim, Trim
Subrotinas
Subrotinas servem basicamente para poupar a repetição de tarefas. O exemplo abaixo ilustra uma simples subrotina para formatar uma string. Lembrando que as subrotinas também podem ficar nos arquivos tipo Include.
1 <%response.buffer=false%>
2 <html><head>
3 <title>subs.asp</title></head>
4 <body bgcolor="#FFFFFF">
5 <br><br>
6 Fazer uma conexão com o banco de dados de contratado, por exemplo.
7 Montar um recordset com o nro do contratado e outras informações quaisquer.
8 Dim NroContratado
9 Nrocontratado = RS("NroContratado")
10 ZerosAEsquerda NroContratado, 8
11 Response.write NroContratado
12
13 ' Acrescenta zeros a esquerda da string até um tamanho máximo para a string
14 '
15 Public Sub ZerosAEsquerda (ByRef strString, intTamString)
16 If IsNull(strString) Then
17 strString = String(intTamString, "0")
18 Else
19 strString = String(intTamString - Len(strString), "0") & strString
20 End If
21 End Sub
22 </body></html>
2 <html><head>
3 <title>subs.asp</title></head>
4 <body bgcolor="#FFFFFF">
5 <br><br>
6 Fazer uma conexão com o banco de dados de contratado, por exemplo.
7 Montar um recordset com o nro do contratado e outras informações quaisquer.
8 Dim NroContratado
9 Nrocontratado = RS("NroContratado")
10 ZerosAEsquerda NroContratado, 8
11 Response.write NroContratado
12
13 ' Acrescenta zeros a esquerda da string até um tamanho máximo para a string
14 '
15 Public Sub ZerosAEsquerda (ByRef strString, intTamString)
16 If IsNull(strString) Then
17 strString = String(intTamString, "0")
18 Else
19 strString = String(intTamString - Len(strString), "0") & strString
20 End If
21 End Sub
22 </body></html>
Funções de Browser (Browser Capabilites)
O script abaixo demonstra a maioria das propriedades usadas do componente Browser Capabilites.
1 <html><head>
2 <TITLE>asp_browser.htm</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <% Set bc = Server.CreateObject("MSWC.BrowserType") %>
5 Browser Name: <%= bc.browser %><p>
6 Browser Version: <%= bc.version %><p>
7
8 <% if (bc.frames = TRUE) then %>
9 Você pode usar frames<p>
10 <% else %>
11 Você não pode usar frames<p>
12 <% end if %>
13 <% if (bc.tables = TRUE) then %>
14 Você pode usar tabelas<p>
15 <% else %>
16 Você não pode usar tabelas<p>
17 <% end if %>
18 <% if (bc.BackgroundSounds = TRUE)then %>
19 Você me permite tocar músicas<p>
20 <% else %>
21 Você não colocou músicas no código<p>
22 <% end if %>
23
24 <% if (bc.vbscript = TRUE) then %>
25 Você pode rodar script da linguagem VBscript<p>
26 <% else %>
27 Você não pode rodar script da linguagem VBscript<p>
28 <% end if %>
29
30 <% if (bc.javascript = TRUE) then %>
31 Você pode rodar script da linguagem JScript<p>
32 <% else %>
33 Você não pode rodar script da linguagem JScript<p>
34 <% end if %>
35 </BODY>
36 </HTML>
2 <TITLE>asp_browser.htm</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <% Set bc = Server.CreateObject("MSWC.BrowserType") %>
5 Browser Name: <%= bc.browser %><p>
6 Browser Version: <%= bc.version %><p>
7
8 <% if (bc.frames = TRUE) then %>
9 Você pode usar frames<p>
10 <% else %>
11 Você não pode usar frames<p>
12 <% end if %>
13 <% if (bc.tables = TRUE) then %>
14 Você pode usar tabelas<p>
15 <% else %>
16 Você não pode usar tabelas<p>
17 <% end if %>
18 <% if (bc.BackgroundSounds = TRUE)then %>
19 Você me permite tocar músicas<p>
20 <% else %>
21 Você não colocou músicas no código<p>
22 <% end if %>
23
24 <% if (bc.vbscript = TRUE) then %>
25 Você pode rodar script da linguagem VBscript<p>
26 <% else %>
27 Você não pode rodar script da linguagem VBscript<p>
28 <% end if %>
29
30 <% if (bc.javascript = TRUE) then %>
31 Você pode rodar script da linguagem JScript<p>
32 <% else %>
33 Você não pode rodar script da linguagem JScript<p>
34 <% end if %>
35 </BODY>
36 </HTML>
Select Case
Usando IF-THEN pode ser incômodo e propenso a ter erros de programação e lentidão na execução. Uma construção mais eficiente é o SELECT CASE que utiliza uma variável com várias condições.
1 <html><head>
2 <TITLE>asp_case.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <form action="caserespond.asp" method=get>
5 Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
6 Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
7 <INPUT TYPE=submit><p><INPUT TYPE=reset>
8 </form></body></html>
2 <TITLE>asp_case.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <form action="caserespond.asp" method=get>
5 Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
6 Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
7 <INPUT TYPE=submit><p><INPUT TYPE=reset>
8 </form></body></html>
Este é o select case que determinará o que significa cada input do usuário.
1 <html><head>
2 <TITLE>caserespond.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <%
5 fname=request.querystring("Firstname")
6 lname=request.querystring("Lastname")
7 salary=request.querystring("Salary")
8 %>
9 Nice to Meet You <%=fname%> <%=lname%><p>
10 <%If fname="" then%>
11 Sorry we are not on a first name basis...<p>
12 <%end if
13 select case lcase(lname)
14 case "washington","adams"
15 response.write "The first president has same last name<p>"
16 case "jefferson"
17 response.write "The third president has same last name<p>"
18 case "lincoln"
19 response.write "The sixteenth president has same last name<p>"
20 end select%>
21 </body></html>
2 <TITLE>caserespond.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <%
5 fname=request.querystring("Firstname")
6 lname=request.querystring("Lastname")
7 salary=request.querystring("Salary")
8 %>
9 Nice to Meet You <%=fname%> <%=lname%><p>
10 <%If fname="" then%>
11 Sorry we are not on a first name basis...<p>
12 <%end if
13 select case lcase(lname)
14 case "washington","adams"
15 response.write "The first president has same last name<p>"
16 case "jefferson"
17 response.write "The third president has same last name<p>"
18 case "lincoln"
19 response.write "The sixteenth president has same last name<p>"
20 end select%>
21 </body></html>
Select Case - Exemplo 2
Usando IF-THEN pode ser incômodo e propenso a ter erros de programação e lentidão na execução. Uma construção mais eficiente é o SELECT CASE que utiliza uma variável com várias condições.
1 <html><head>
2 <TITLE>asp_case2.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <form action="case2respond.asp" method=get>
5 Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
6 Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
7 Your Title
8 <INPUT TYPE="Radio" name="Title" VALUE="employee">Entry Level
9 <INPUT TYPE="Radio" name="Title" VALUE="temp" CHECKED>Temporary Employee
10 <INPUT TYPE="Radio" name="Title" VALUE="manager">Management Candidate
11 <INPUT TYPE="Radio" name="Title" VALUE="executive">Executive
12 <INPUT TYPE="Radio" name="Title" VALUE="vice-prez">The Vice President of...
13 <INPUT TYPE="Radio" name="Title" VALUE="CEO">The Boss<p>
14 <INPUT TYPE=submit><p><INPUT TYPE=reset>
15 </form></body></html>
2 <TITLE>asp_case2.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <form action="case2respond.asp" method=get>
5 Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
6 Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
7 Your Title
8 <INPUT TYPE="Radio" name="Title" VALUE="employee">Entry Level
9 <INPUT TYPE="Radio" name="Title" VALUE="temp" CHECKED>Temporary Employee
10 <INPUT TYPE="Radio" name="Title" VALUE="manager">Management Candidate
11 <INPUT TYPE="Radio" name="Title" VALUE="executive">Executive
12 <INPUT TYPE="Radio" name="Title" VALUE="vice-prez">The Vice President of...
13 <INPUT TYPE="Radio" name="Title" VALUE="CEO">The Boss<p>
14 <INPUT TYPE=submit><p><INPUT TYPE=reset>
15 </form></body></html>
Este é o select case que determinará o que significa cada input do usuário.
1 <html><head>
2 <TITLE>case2respond.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <%fname=request.querystring("Firstname")
5 lname=request.querystring("Lastname")
6 title=request.querystring("title")
7 response.write "Nice to Hire You " & fname & " " & lname & "<p>"
8 Select Case lcase(Title)
9 case "employee","temp"
10 response.write("The washroom is in the hall")
11 case "manager","executive"
12 response.write("Here is your key to the Executive washroom")
13 case "CEO", "vice-prez"
14 response.write("The maid will attend to your private washroom")
15 End Select%>
16 </body></html>
2 <TITLE>case2respond.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <%fname=request.querystring("Firstname")
5 lname=request.querystring("Lastname")
6 title=request.querystring("title")
7 response.write "Nice to Hire You " & fname & " " & lname & "<p>"
8 Select Case lcase(Title)
9 case "employee","temp"
10 response.write("The washroom is in the hall")
11 case "manager","executive"
12 response.write("Here is your key to the Executive washroom")
13 case "CEO", "vice-prez"
14 response.write("The maid will attend to your private washroom")
15 End Select%>
16 </body></html>
Banco de Dados na WEB
Banco de Dados é a razão para muitos desenvolvedores utilizar o ASP e abaixo está colocado exemplos e formatos típicos para manipular dados.
· Abrindo Databases via DSN e sem DSN
· Mostrando tabelas através de consultas SQL
· List Boxes preenchidas através de banco de dados
· Adicionando Registros para um Database com o comando SQL insert Into
· Adicionando Registros para um Database com o método ADO add new
· Exemplo Completo inclui o display de tabelas vinculadas a um formulário que rodam scripts que atualizam registros.
· Atualizando registros em um Database
Exemplo Completo
1a. Parte
1a. Parte
Vamos analisar 3 exemplos de script.
O primeiro exemplo (1a. parte) mostra uma tabela parecida com o exemplo de tabelas que foi visto anteriormente, com exceção dos links que aparecerão nas colunas iniciais. Clicando em um dos links o segundo exemplo será chamado e receberá um ID como parâmetro. No segundo exemplo será permitido alterar as informações e após clicar no botão Submit, o exemplo 3 será chamado para processar as informações e atualizá-las no banco em SQL. Vamos por partes...
O primeiro exemplo (1a. parte) mostra uma tabela parecida com o exemplo de tabelas que foi visto anteriormente, com exceção dos links que aparecerão nas colunas iniciais. Clicando em um dos links o segundo exemplo será chamado e receberá um ID como parâmetro. No segundo exemplo será permitido alterar as informações e após clicar no botão Submit, o exemplo 3 será chamado para processar as informações e atualizá-las no banco em SQL. Vamos por partes...
Exemplo 1
1 <html>
2 <head>
3 <title>dbfull1.asp</title>
4 </head>
5 <body bgcolor="#FFFFFF">
6 <body bgcolor="#FFFFFF">
7 <%
8 ' Conexão com o banco
9 set conntemp=server.createobject("adodb.connection")
10 conntemp.open "Estudante","Estudante","magic"
11
12 set rstemp=conntemp.execute("select * from autores where AU_ID<100")
13 qtde_campos=rstemp.fields.count -1
14 %>
15 <table border="1">
16 <tr>
17 <td valign="top">---</td>
18 <% 'Preenche a primeira linha com o nome dos campos
19 for i=0 to qtde_campos %>
20 <td><b><%=rstemp(i).name %></b></td>
21 <% next %>
22 </tr>
23 <% ' Preenche a tabela com os registros do banco
24 do while not rstemp.eof %>
25 <tr>
26 <td valign="top"><a HREF="dbfull2.asp?str_ID=<%=rstemp("AU_ID")%>">Editar</a></td>
27 <% for i = 0 to qtde_campos%>
28 <td valign="top"><% = rstemp.fields(i).value %></td>
29 <% next %>
30 </tr>
31 <% rstemp.movenext
32 loop
33 conntemp.close%>
34 </table>
35 </body>
36 </html>
2 <head>
3 <title>dbfull1.asp</title>
4 </head>
5 <body bgcolor="#FFFFFF">
6 <body bgcolor="#FFFFFF">
7 <%
8 ' Conexão com o banco
9 set conntemp=server.createobject("adodb.connection")
10 conntemp.open "Estudante","Estudante","magic"
11
12 set rstemp=conntemp.execute("select * from autores where AU_ID<100")
13 qtde_campos=rstemp.fields.count -1
14 %>
15 <table border="1">
16 <tr>
17 <td valign="top">---</td>
18 <% 'Preenche a primeira linha com o nome dos campos
19 for i=0 to qtde_campos %>
20 <td><b><%=rstemp(i).name %></b></td>
21 <% next %>
22 </tr>
23 <% ' Preenche a tabela com os registros do banco
24 do while not rstemp.eof %>
25 <tr>
26 <td valign="top"><a HREF="dbfull2.asp?str_ID=<%=rstemp("AU_ID")%>">Editar</a></td>
27 <% for i = 0 to qtde_campos%>
28 <td valign="top"><% = rstemp.fields(i).value %></td>
29 <% next %>
30 </tr>
31 <% rstemp.movenext
32 loop
33 conntemp.close%>
34 </table>
35 </body>
36 </html>
Exemplo 2 (2a. Parte)
1 <html>
2 <head>
3 <title>dbfull2.asp</title>
4 </head>
5 <body bgcolor="#FFFFFF">
6 </body>
7 </html>
8 <html>
9 <% ' Conecta com o banco e pega o valor do str_ID permitindo a edicao do registro
10 set conntemp=server.createobject("adodb.connection")
11 conntemp.open "Estudante","Estudante","magic"
12
13 ID=request.querystring("str_ID")
14 sqltemp="select * from autores where AU_ID=" & ID
15 set rstemp=conntemp.execute(sqltemp)
16 atual_ID=rstemp("AU_ID")
17 atual_nome=rstemp("autor")
18 atual_ano_nasc=rstemp("ano_nasc")
19 %>
20 <body>
21 <form name="meu_autor" action="dbfull3.asp" method="GET">
22 <p>ID: <input type="TEXT" name="id" value="<%=atual_id%>"></p>
23 <p> Nome do autor: <input type="TEXT" name="nome" value="<%=atual_nome%>"></p>
24 <p> Ano de Nascimento: <input type="TEXT" name="ano" value="<%=atual_ano_nasc%>"></p>
25 <p> <input type="SUBMIT"> </p>
26 </form>
27 </body>
2 <head>
3 <title>dbfull2.asp</title>
4 </head>
5 <body bgcolor="#FFFFFF">
6 </body>
7 </html>
8 <html>
9 <% ' Conecta com o banco e pega o valor do str_ID permitindo a edicao do registro
10 set conntemp=server.createobject("adodb.connection")
11 conntemp.open "Estudante","Estudante","magic"
12
13 ID=request.querystring("str_ID")
14 sqltemp="select * from autores where AU_ID=" & ID
15 set rstemp=conntemp.execute(sqltemp)
16 atual_ID=rstemp("AU_ID")
17 atual_nome=rstemp("autor")
18 atual_ano_nasc=rstemp("ano_nasc")
19 %>
20 <body>
21 <form name="meu_autor" action="dbfull3.asp" method="GET">
22 <p>ID: <input type="TEXT" name="id" value="<%=atual_id%>"></p>
23 <p> Nome do autor: <input type="TEXT" name="nome" value="<%=atual_nome%>"></p>
24 <p> Ano de Nascimento: <input type="TEXT" name="ano" value="<%=atual_ano_nasc%>"></p>
25 <p> <input type="SUBMIT"> </p>
26 </form>
27 </body>
Exemplo 3 (3a. Parte)
1 <HTML><HEAD>
2 <TITLE>dbfull3.asp</TITLE>
3 <body bgcolor="#FFFFFF"></HEAD>
4 <%
5 on error resume next
6 au_nome=request.querystring("nome")
7 ' Corrige os apóstrofos
8 au_nome=Replace(au_nome, "'", "''")
9
10 au_ano=request.querystring("ano")
11 au_ID=request.querystring("ID")
12 Set Conn = Server.CreateObject("ADODB.Connection")
13 conn.open "Estudante","Estudante","magic"
14
15 SQLstmt = "UPDATE autores "
16 SQLStmt = SQLstmt & "SET autor='" & au_nome & "',"
17 SQLstmt = SQLstmt & "ano_nasc=" & au_ano
18 SQLStmt = SQLStmt & " WHERE AU_ID=" & au_ID
19 Set RS = Conn.Execute(SQLStmt)
20 If err.number>0 then
21 response.write "Ocorreram erros no script:" & "<P>"
22 response.write "Número=" & err.number & "<P>"
23 response.write "Descrição=" & err.description & "<P>"
24 response.write "Help Context=" & err.helpcontext & "<P>"
25 response.write "Help Path=" & err.helppath & "<P>"
26 response.write "Native Error=" & err.nativeerror & "<P>"
27 response.write "Source=" & err.source & "<P>"
28 response.write "SQLState=" & err.sqlstate & "<P>"
29 else
30 response.write "Nenhum problema aconteceu!" & "<P>"
31 end if
32 IF conn.errors.count> 0 then
33 response.write "Ocorreram erros com o banco de dados" & "<P>"
34 response.write SQLstmt & "<P>"
35 for counter= 0 to conn.errors.count
36 response.write "Número do erro:" & conn.errors(counter).number & "<P>"
37 response.write "Descrição --> " & conn.errors(counter).description & "<P>"
38 next
39 else
40 response.write "Parece que tudo está ok. O Autor foi atualizado!" & "<P>"
41 end if
42 Conn.Close
43 %>
44 </BODY>
45 </HTML>
2 <TITLE>dbfull3.asp</TITLE>
3 <body bgcolor="#FFFFFF"></HEAD>
4 <%
5 on error resume next
6 au_nome=request.querystring("nome")
7 ' Corrige os apóstrofos
8 au_nome=Replace(au_nome, "'", "''")
9
10 au_ano=request.querystring("ano")
11 au_ID=request.querystring("ID")
12 Set Conn = Server.CreateObject("ADODB.Connection")
13 conn.open "Estudante","Estudante","magic"
14
15 SQLstmt = "UPDATE autores "
16 SQLStmt = SQLstmt & "SET autor='" & au_nome & "',"
17 SQLstmt = SQLstmt & "ano_nasc=" & au_ano
18 SQLStmt = SQLStmt & " WHERE AU_ID=" & au_ID
19 Set RS = Conn.Execute(SQLStmt)
20 If err.number>0 then
21 response.write "Ocorreram erros no script:" & "<P>"
22 response.write "Número=" & err.number & "<P>"
23 response.write "Descrição=" & err.description & "<P>"
24 response.write "Help Context=" & err.helpcontext & "<P>"
25 response.write "Help Path=" & err.helppath & "<P>"
26 response.write "Native Error=" & err.nativeerror & "<P>"
27 response.write "Source=" & err.source & "<P>"
28 response.write "SQLState=" & err.sqlstate & "<P>"
29 else
30 response.write "Nenhum problema aconteceu!" & "<P>"
31 end if
32 IF conn.errors.count> 0 then
33 response.write "Ocorreram erros com o banco de dados" & "<P>"
34 response.write SQLstmt & "<P>"
35 for counter= 0 to conn.errors.count
36 response.write "Número do erro:" & conn.errors(counter).number & "<P>"
37 response.write "Descrição --> " & conn.errors(counter).description & "<P>"
38 next
39 else
40 response.write "Parece que tudo está ok. O Autor foi atualizado!" & "<P>"
41 end if
42 Conn.Close
43 %>
44 </BODY>
45 </HTML>
List Boxes
Esta página mostra a funcionalidade de mostrar uma list box através de uma consulta SQL. O exemplo abaixo é o mais simples possível. Existem outros tipos utilizando Múltiplas List Boxes e Modularidade. Os exemplos utilizam um DSN, mas você pode executá-los sem.
1 <html><head>
2 <TITLE>dblist.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <%
5 ' Conexão com o Database
6 set conntemp=server.createobject("adodb.connection")
7 ' DSN usuário senha
8 conntemp.open "Estudante","Estudante","magic"
9 set rstemp=conntemp.execute("select autor from autores where AU_ID<100")
10 %>
11 <Form>
12 <Select>
13 <% ' Loop para preencher os nomes
14 do while not rstemp.eof %>
15 <option> <%=RStemp(0)%> </option>
16 <% rstemp.movenext
17 loop
18 conntemp.close%>
19 </Select>
20 </form>
21 </BODY>
22 </HTML>
2 <TITLE>dblist.asp</TITLE>
3 </head><body bgcolor="#FFFFFF">
4 <%
5 ' Conexão com o Database
6 set conntemp=server.createobject("adodb.connection")
7 ' DSN usuário senha
8 conntemp.open "Estudante","Estudante","magic"
9 set rstemp=conntemp.execute("select autor from autores where AU_ID<100")
10 %>
11 <Form>
12 <Select>
13 <% ' Loop para preencher os nomes
14 do while not rstemp.eof %>
15 <option> <%=RStemp(0)%> </option>
16 <% rstemp.movenext
17 loop
18 conntemp.close%>
19 </Select>
20 </form>
21 </BODY>
22 </HTML>
Adicionando Registros com o método ADO Add New
1 <TITLE>dbnewADO.asp</TITLE>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 on error resume next
6 aunome=request.querystring("nome")
7 auano=request.querystring("ano")
8 auID=request.querystring("ID")
9 Set Conn = Server.CreateObject("ADODB.Connection")
10 ' DSN usuário senha
11 conn.open "Estudante","Estudante","magic"
12 Set RS = Server.CreateObject("ADODB.Recordset")
13 RS.Open "autores",Conn,3,3
14 RS.AddNew
15 RS("AU_ID")=auid
16 RS("autor") = aunome
17 RS("ano_nasc")= int(auano)
18 RS.Update
19 RS.Close
20 Conn.Close
21 If err.number>0 then
22 response.write "Ocorreram Erros:" & "<P>"
23 response.write "Número=" & err.number & "<P>"
24 response.write "Descrição=" & err.description & "<P>"
25 response.write "Help Context=" & err.helpcontext & "<P>"
26 response.write "Help Path=" & err.helppath & "<P>"
27 response.write "Native Error=" & err.nativeerror & "<P>"
28 response.write "Source=" & err.source & "<P>"
29 response.write "SQLState=" & err.sqlstate & "<P>"
30 else
31 response.write "Nenhum erro apareceu!" & "<P>"
32 end if
33 IF conn.errors.count> 0 then
34 response.write "Ocorreram erros no Database!" & "<P>"
35 for counter= 0 to conn.errors.count
36 response.write "Número " & conn.errors(counter).number & "<P>"
37 response.write "Descrição -> " & conn.errors(counter).description & "<P>"
38 next
39 else
40 response.write "Nenhum ocorreu no Database!" & "<P>"
41 end if
42 %>
43 </BODY>
44 </HTML>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 on error resume next
6 aunome=request.querystring("nome")
7 auano=request.querystring("ano")
8 auID=request.querystring("ID")
9 Set Conn = Server.CreateObject("ADODB.Connection")
10 ' DSN usuário senha
11 conn.open "Estudante","Estudante","magic"
12 Set RS = Server.CreateObject("ADODB.Recordset")
13 RS.Open "autores",Conn,3,3
14 RS.AddNew
15 RS("AU_ID")=auid
16 RS("autor") = aunome
17 RS("ano_nasc")= int(auano)
18 RS.Update
19 RS.Close
20 Conn.Close
21 If err.number>0 then
22 response.write "Ocorreram Erros:" & "<P>"
23 response.write "Número=" & err.number & "<P>"
24 response.write "Descrição=" & err.description & "<P>"
25 response.write "Help Context=" & err.helpcontext & "<P>"
26 response.write "Help Path=" & err.helppath & "<P>"
27 response.write "Native Error=" & err.nativeerror & "<P>"
28 response.write "Source=" & err.source & "<P>"
29 response.write "SQLState=" & err.sqlstate & "<P>"
30 else
31 response.write "Nenhum erro apareceu!" & "<P>"
32 end if
33 IF conn.errors.count> 0 then
34 response.write "Ocorreram erros no Database!" & "<P>"
35 for counter= 0 to conn.errors.count
36 response.write "Número " & conn.errors(counter).number & "<P>"
37 response.write "Descrição -> " & conn.errors(counter).description & "<P>"
38 next
39 else
40 response.write "Nenhum ocorreu no Database!" & "<P>"
41 end if
42 %>
43 </BODY>
44 </HTML>
Adicionando Registros com Statement SQL
Esta página demonstra como adicionar registros em um Database com um statement sql. Para melhor entender o exemplo, suponha que a página chamada seja: http://www.geap.com.br/tutorial_asp/asp_dbnewSQL.asp?nome="Alexandre Barreto"&id=9000&ano=1974
1 <TITLE>dbnewrecSQL.asp</TITLE>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 on error resume next
6 aunome=request.querystring("nome")
7 auano=request.querystring("ano")
8 auID=request.querystring("ID")
9 Set Conn = Server.CreateObject("ADODB.Connection")
10 ' DSN usuário senha
11 conn.open "Estudante","Estudante","magic"
12 SQLStmt = "INSERT INTO autors (AU_ID,autor,ano_nasc) "
13 SQLStmt = SQLStmt & "VALUES (" & auid
14 SQLStmt = SQLStmt & ",'" & aunome & "'"
15 SQLStmt = SQLStmt & "," & int(auano) & ")"
16 Set RS = Conn.Execute(SQLStmt)
17 If err.number>0 then
18 response.write "Ocorreram Erros:" & "<P>"
19 response.write "Erro Número=" & err.number & "<P>"
20 response.write "Descrição=" & err.description & "<P>"
21 response.write "Help Context=" & err.helpcontext & "<P>"
22 response.write "Help Path=" & err.helppath & "<P>"
23 response.write "Native Error=" & err.nativeerror & "<P>"
24 response.write "Source=" & err.source & "<P>"
25 response.write "SQLState=" & err.sqlstate & "<P>"
26 else
27 response.write "Não ocorreram erros!!" & "<P>"
28 end if
29 IF conn.errors.count> 0 then
30 response.write "Ocorreram erros no Database" & "<P>"
31 for counter= 0 to conn.errors.count
32 response.write "Número " & conn.errors(counter).number & "<P>"
33 response.write "Descrição -> " & conn.errors(counter).description & "<P>"
34 next
35 else
36 response.write "Não ocorreram erros no Database!" & "<P>"
37 end if
38 Conn.Close
39 %>
40 </BODY>
41 </HTML>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 on error resume next
6 aunome=request.querystring("nome")
7 auano=request.querystring("ano")
8 auID=request.querystring("ID")
9 Set Conn = Server.CreateObject("ADODB.Connection")
10 ' DSN usuário senha
11 conn.open "Estudante","Estudante","magic"
12 SQLStmt = "INSERT INTO autors (AU_ID,autor,ano_nasc) "
13 SQLStmt = SQLStmt & "VALUES (" & auid
14 SQLStmt = SQLStmt & ",'" & aunome & "'"
15 SQLStmt = SQLStmt & "," & int(auano) & ")"
16 Set RS = Conn.Execute(SQLStmt)
17 If err.number>0 then
18 response.write "Ocorreram Erros:" & "<P>"
19 response.write "Erro Número=" & err.number & "<P>"
20 response.write "Descrição=" & err.description & "<P>"
21 response.write "Help Context=" & err.helpcontext & "<P>"
22 response.write "Help Path=" & err.helppath & "<P>"
23 response.write "Native Error=" & err.nativeerror & "<P>"
24 response.write "Source=" & err.source & "<P>"
25 response.write "SQLState=" & err.sqlstate & "<P>"
26 else
27 response.write "Não ocorreram erros!!" & "<P>"
28 end if
29 IF conn.errors.count> 0 then
30 response.write "Ocorreram erros no Database" & "<P>"
31 for counter= 0 to conn.errors.count
32 response.write "Número " & conn.errors(counter).number & "<P>"
33 response.write "Descrição -> " & conn.errors(counter).description & "<P>"
34 next
35 else
36 response.write "Não ocorreram erros no Database!" & "<P>"
37 end if
38 Conn.Close
39 %>
40 </BODY>
41 </HTML>
Abrindo Databases
Qualquer script ASP que precisa conectar em um database, deve primeiramente abrí-lo no servidor. Para isso existem duas formas:
· uma conexão via DSN
· uma conexão sem DSN
Uma conexão via DSN requer que o Administrador do banco ou da rede, configure um DSN no servidor Internet/Intranet usando o Painel de Controle (ODBC 32 bits) ou utilize um componente ASP que implementado no seu script pode fazer mudanças na registry do servidor e criar o DSN necessário. Esses componentes são de terceiros e podem ser encontrados em sites especializados em ASP.
Conexões via DSN geralmente requerem um nome de DSN, um usuário e uma senha. Abaixo temos o código que abre um banco com DSN igual a "estudante", usuário igual a "estudante" e uma senha igual a "magic". Isso segue o mesmo procedimento realizado nos relatórios do sistema de pagamento.
1 set conntemp=server.createobject("adodb.connection")
2 conntemp.open "estudante","estudante","magic"
3 set rstemp=conntemp.execute("select * from autor")
2 conntemp.open "estudante","estudante","magic"
3 set rstemp=conntemp.execute("select * from autor")
O que acontece se não tivermos um DSN? Se você conhece o nome do arquivo (baseado em databases como Access, Paradox, FoxPro, etc.) ou o nome do Data Source (SQLserver por exemplo) tudo pode ser resolvido. Abaixo está uma maneira de abrir um Data Source sem um DSN. Note que você deve conhecer o path completo do arquivo no servidor, isto é, msapgt.mdb não é suficiente. É preciso ter "Z:\users\pagamento\msapgt.mdb". Existe uma função no ASP chamada server.mappath que pega um nome de arquivo e retorna o path completo do arquivo no servidor, mas não é muito segura.
1 set conntemp=server.createobject("adodb.connection")
2 cnpath="DBQ=" & server.mappath("sua_tabela.mdb")
3 conntemp.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath
4 set rstemp=conntemp.execute("select * from autor")
2 cnpath="DBQ=" & server.mappath("sua_tabela.mdb")
3 conntemp.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath
4 set rstemp=conntemp.execute("select * from autor")
Aqui estão os tipos mais comuns de nomes para drives ODBC que você pode precisar:
Para Access --> driver = {Microsoft Access Driver (*.mdb)};
Para SQL -----> driver = SQL Server;
Para SQL -----> driver = SQL Server;
Tabela com consulta SQL
Esta página demonstra a utilização de tabela construída a partir de uma consulta SQL.
1 <TITLE>dbtable.asp</TITLE>
2 <body bgcolor="#FFFFFF">
3 <%
4 ' Programa ASP que se comunica com um database
5 set conntemp=server.createobject("adodb.connection")
6 ' DSN, usuário e senha
7 conntemp.open "Student","student","magic"
8 set rstemp=conntemp.execute("select * from authors where AU_ID<100")
9 qtde_campos=rstemp.fields.count -1
10 %>
11 <table border=1>
12 <tr>
13 <% 'Coloca o cabeçalho de cada coluna com o nome do campo
14 for i=0 to qtde_campos %>
15 <td><b><%=rstemp(i).name %></B></TD>
16 <% next %>
17 </tr>
18 <% ' Preenche a tabela com os registros
19 do while not rstemp.eof %>
20 <tr>
21 <% for i = 0 to qtde_campos%>
22 <td valign=top><% = rstemp.fields(i).value %></td>
23 <% next %>
24 </tr>
25 <% rstemp.movenext
26 loop
27 conntemp.close%>
28 </table>
29 </BODY>
30 </HTML>
2 <body bgcolor="#FFFFFF">
3 <%
4 ' Programa ASP que se comunica com um database
5 set conntemp=server.createobject("adodb.connection")
6 ' DSN, usuário e senha
7 conntemp.open "Student","student","magic"
8 set rstemp=conntemp.execute("select * from authors where AU_ID<100")
9 qtde_campos=rstemp.fields.count -1
10 %>
11 <table border=1>
12 <tr>
13 <% 'Coloca o cabeçalho de cada coluna com o nome do campo
14 for i=0 to qtde_campos %>
15 <td><b><%=rstemp(i).name %></B></TD>
16 <% next %>
17 </tr>
18 <% ' Preenche a tabela com os registros
19 do while not rstemp.eof %>
20 <tr>
21 <% for i = 0 to qtde_campos%>
22 <td valign=top><% = rstemp.fields(i).value %></td>
23 <% next %>
24 </tr>
25 <% rstemp.movenext
26 loop
27 conntemp.close%>
28 </table>
29 </BODY>
30 </HTML>
Atualizando Registros
Esta página demonstra a funcionalidade de se atualizar registros em um database através de uma consulta SQL. Supomos que o arquivo ASP seja chamado da seguinte forma:
dbupdate.asp?nome=Alexandre&id=9000&ano=1901
dbupdate.asp?nome=Alexandre&id=9000&ano=1901
O script abaixo faz uma atualização no sql através do statement Update. É aconselhável que todas as inclusões, alterações e exclusões no sql seja feita através de Stored Procedures. Assim, fica mais fácil controlar permissões de execução e segurança ainda maior com relação aos códigos.
1 <TITLE>dbupdate.asp</TITLE>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 on error resume next
6 aunome=request.querystring("nome")
7 auano=request.querystring("ano")
8 auID=request.querystring("ID")
9 Set Conn = Server.CreateObject("ADODB.Connection")
10 conn.open "Estudante","Estudante","magic"
11
12 SQLstmt = "UPDATE autores "
13 SQLStmt = SQLstmt & "SET autor='" & aunome & "',"
14 SQLstmt = SQLstmt & "ano_nasc=" & auano
15 SQLStmt = SQLStmt & " WHERE AU_ID=" & auid
16 Set RS = Conn.Execute(SQLStmt)
17 If err.number>0 then
18 response.write "Ocorreram erros no Script:" & "<P>"
19 response.write "Número =" & err.number & "<P>"
20 response.write "Descrição =" & err.description & "<P>"
21 response.write "Help Context=" & err.helpcontext & "<P>"
22 response.write "Help Path=" & err.helppath & "<P>"
23 response.write "Native Error=" & err.nativeerror & "<P>"
24 response.write "Source=" & err.source & "<P>"
25 response.write "SQLState=" & err.sqlstate & "<P>"
26 else
27 response.write "Nenhum problema aconteceu!" & "<P>"
28 end if
29 IF conn.errors.count> 0 then
30 response.write "Ocorreram erros com o Database" & "<P>"
31 for counter= 0 to conn.errors.count
32 response.write "Número " & conn.errors(counter).number & "<P>"
33 response.write "Descrição -> " & conn.errors(counter).description & "<P>"
34 next
35 else
36 response.write "Tudo parece ok. O Autor foi atualizado!" & "<P>"
37 end if
38 Conn.Close
39 %>
40 </BODY>
41 </HTML>
2 <body bgcolor="#FFFFFF">
3 <HTML>
4 <%
5 on error resume next
6 aunome=request.querystring("nome")
7 auano=request.querystring("ano")
8 auID=request.querystring("ID")
9 Set Conn = Server.CreateObject("ADODB.Connection")
10 conn.open "Estudante","Estudante","magic"
11
12 SQLstmt = "UPDATE autores "
13 SQLStmt = SQLstmt & "SET autor='" & aunome & "',"
14 SQLstmt = SQLstmt & "ano_nasc=" & auano
15 SQLStmt = SQLStmt & " WHERE AU_ID=" & auid
16 Set RS = Conn.Execute(SQLStmt)
17 If err.number>0 then
18 response.write "Ocorreram erros no Script:" & "<P>"
19 response.write "Número =" & err.number & "<P>"
20 response.write "Descrição =" & err.description & "<P>"
21 response.write "Help Context=" & err.helpcontext & "<P>"
22 response.write "Help Path=" & err.helppath & "<P>"
23 response.write "Native Error=" & err.nativeerror & "<P>"
24 response.write "Source=" & err.source & "<P>"
25 response.write "SQLState=" & err.sqlstate & "<P>"
26 else
27 response.write "Nenhum problema aconteceu!" & "<P>"
28 end if
29 IF conn.errors.count> 0 then
30 response.write "Ocorreram erros com o Database" & "<P>"
31 for counter= 0 to conn.errors.count
32 response.write "Número " & conn.errors(counter).number & "<P>"
33 response.write "Descrição -> " & conn.errors(counter).description & "<P>"
34 next
35 else
36 response.write "Tudo parece ok. O Autor foi atualizado!" & "<P>"
37 end if
38 Conn.Close
39 %>
40 </BODY>
41 </HTML>
Do While
Para revisar, quando falamos de estruturas de controle significa instruções que fazem com que o programa rode em outra ordem que não seja a linha 1, linha 2, linha 3 etc.IF...Then e Select Case fazem com que linhas do código sejam executadas e outras não. Call e GoTo fazem com que o programa vá para outra localização no código. As estruturas de Loop fazem com que alguns comandos sejam repetidos. As estruturas de Loop possuem duas opções: For...Next e Do While ... Loop. Se você conhecer a quantidade de repetições que devem ser realizadas, utilize o comando FOR...NEXT, caso não saiba, utilize a estrutura Do While...Loop.
Todas as linhas de código dentro dos comandos DO WHILE e LOOP serão repetidas várias vezes até que o teste que vem depois do WHILE seja falso. Assim as repetições param e o programa passa para o código seguinte ao LOOP.
Sintaxe:
DO WHILE condição
linhas de código
LOOP
linhas de código
LOOP
Existe a possibilidade do Loop nunca acabar. Então se previna usando um IF para terminar, como:
contador=1
contador = contador +1
If contador>100 then
exit do
End If
contador = contador +1
If contador>100 then
exit do
End If
Exemplo 1:
1 <html><head>
2 <title>DoLoop2.asp</title>
3 <body bgcolor="#FFFFFF"></head>
4 <p>DoLoop2.asp Exemplo<br>
5 Faz com que o programa imprima somente a quantidade de meses.</p>
6 <p>
7 <P>
8 <%
9 contador = 1
10 mes_atual = month(now())
11 Do while contador < mes_atual + 1
12 response.write "Número do Mês = " & contador & " "
13 response.write "______________________________" & "<BR><br>"
14 If contador >13 then
15 exit do
16 end if
17 contador = contador+1
18 Loop
19 %>
20 <hr></body></html>
2 <title>DoLoop2.asp</title>
3 <body bgcolor="#FFFFFF"></head>
4 <p>DoLoop2.asp Exemplo<br>
5 Faz com que o programa imprima somente a quantidade de meses.</p>
6 <p>
7 <P>
8 <%
9 contador = 1
10 mes_atual = month(now())
11 Do while contador < mes_atual + 1
12 response.write "Número do Mês = " & contador & " "
13 response.write "______________________________" & "<BR><br>"
14 If contador >13 then
15 exit do
16 end if
17 contador = contador+1
18 Loop
19 %>
20 <hr></body></html>
Exemplo 2:
1 <html><head>
2 <title>DoLoop3.asp</title>
3 </head><body bgcolor="#FFFFFF">
4 <form action="DoLoopBack.asp" method = post>
5 <p>DoLoop3 Exemplo<br>
6 instead of form to print, make form for electronic submission</p>
7 <p></p>
8 <%
9 contador = 1
10 mes_atual = month(now())
11 Do while contador < mes_atual + 1
12 response.write "Número do mês " & contador & " "
13 TempTextField = "<input type = " & chr(34) & "text" & chr(34)
14 TempTextField = TempTextField & "name=" & chr(34) & contador & chr(34)
15 TempTextField = TempTextField & ">"
16 response.write TempTextField & "<br><br>"
17 If contador >13 then
18 exit do
19 end if
20 contador = contador+1
21 Loop
22 %>
23 <input type=submit>
24 </form><hr></body></html>
2 <title>DoLoop3.asp</title>
3 </head><body bgcolor="#FFFFFF">
4 <form action="DoLoopBack.asp" method = post>
5 <p>DoLoop3 Exemplo<br>
6 instead of form to print, make form for electronic submission</p>
7 <p></p>
8 <%
9 contador = 1
10 mes_atual = month(now())
11 Do while contador < mes_atual + 1
12 response.write "Número do mês " & contador & " "
13 TempTextField = "<input type = " & chr(34) & "text" & chr(34)
14 TempTextField = TempTextField & "name=" & chr(34) & contador & chr(34)
15 TempTextField = TempTextField & ">"
16 response.write TempTextField & "<br><br>"
17 If contador >13 then
18 exit do
19 end if
20 contador = contador+1
21 Loop
22 %>
23 <input type=submit>
24 </form><hr></body></html>
For Next
O Loop com o número inicial e vai até o número final. Como foi colocado anteriormente, o FOR...NEXT é para ser usado quando se sabe a quantidade de repetições que devem ser feitas.
Sintaxe:
For contador = inicio to fim
'linhas de código
Next
'linhas de código
Next
Para que seu loop não seja infinito você pode colocar um IF para pará-lo, como:
If contador>100 then
exit For
End If
exit For
End If
Exemplo:
1 <html><head>
2 <title>fornext.asp</title>
3 <body bgcolor="#FFFFFF"></head>
4
5 exemplo<br>Espere e veja o funcionamento do for...next<br>
6 <%for contador = 1 to 5
7 response.write "estamos no looping" & "<br>"
8 next%><hr>
9
10 exemplo 2<br>Você pode usar a variável contador no seu código<br>
11 <%for contador = 1 to 5
12 response.write "Agora o número de loops aparecem " & contador & "<br>"
13 next%><hr>
14
15 exemplo 3<br>Você pode dar passos maiores que 1<br>
16 <%for contador = 0 to 25 step 5
17 response.write "Agora o número do loop é: " & contador & "<br>"
18 next%><hr>
19
20 exemplo 4<br>Você não precisa começar do 1<br>
21 <%for contador = 25 to 50 step 5
22 response.write "Agora o número do loop é: " & contador & "<br>"
23 next%><hr>
24
25 exemplo 5<br>
26 (mude os passos para negativo e tenha certeza do início ser maior que o fim)<br>
27 <%for contador = 50 to 25 step -5
28 response.write "Agora o número do loop é: " & contador & "<br>"
29 next%><hr>
30 </body></html>
2 <title>fornext.asp</title>
3 <body bgcolor="#FFFFFF"></head>
4
5 exemplo<br>Espere e veja o funcionamento do for...next<br>
6 <%for contador = 1 to 5
7 response.write "estamos no looping" & "<br>"
8 next%><hr>
9
10 exemplo 2<br>Você pode usar a variável contador no seu código<br>
11 <%for contador = 1 to 5
12 response.write "Agora o número de loops aparecem " & contador & "<br>"
13 next%><hr>
14
15 exemplo 3<br>Você pode dar passos maiores que 1<br>
16 <%for contador = 0 to 25 step 5
17 response.write "Agora o número do loop é: " & contador & "<br>"
18 next%><hr>
19
20 exemplo 4<br>Você não precisa começar do 1<br>
21 <%for contador = 25 to 50 step 5
22 response.write "Agora o número do loop é: " & contador & "<br>"
23 next%><hr>
24
25 exemplo 5<br>
26 (mude os passos para negativo e tenha certeza do início ser maior que o fim)<br>
27 <%for contador = 50 to 25 step -5
28 response.write "Agora o número do loop é: " & contador & "<br>"
29 next%><hr>
30 </body></html>
Formatando Datas
A maneira mais fácil de demonstrar a formatação de datas é mostrar um código exemplo com várias permutações do comando.
FormatDateTime(Data[,Formato_do_nome])
A função FormatDateTime tem as seguintes partes:
Parte
|
Descrição
|
Data
|
Obrigatório.Data que será formatada
|
Formato_do_nome
|
Opcional. Valor numérico que indica o formato date/time que será usado. Se for omitido, o formado vbGeneralDate será usado.
|
Parâmetros
O argumento Formato_do_nome tem o seguinte domínio:
Constante
|
Valor
|
Descrição
|
vbGeneralDate
|
0
|
Mostra a data e/ou hora. Se houver uma data, mostrará como short date. Se for hora, mostrará como long time. Se houver data e hora ambas serão mostradas.
|
vbLongDate
|
1
|
Mostra a data usando o formato long date especificado nas Configurações Regionais do Painel de Controle
|
vbShortDate
|
2
|
Mostra a data usando o formato short date especificado nas Configurações Regionais do Painel de Controle.
|
vbLongTime
|
3
|
Mostra a hora usando o formato especificado nas Configurações Regionais do Painel de Controle.
|
vbShortTime
|
4
|
Mostra a hora usando o formato 24-horas (hh:mm).
|
1 <html><head>
2 <title>formatdates.asp</title>
3 </head><body bgcolor="#FFFFFF"><html>
4 <%'ASP que formata data
5 response.write "<hr>"
6 for counter=0 to 4
7 currentdate=now()
8 response.write "today is..." & "<br>"
9 response.write currentdate & "<P>"
10 select case counter
11 case 0
12 whichformat="vbgeneraldate"
13 case 1
14 whichformat="vblongdate"
15 case 2
16 whichformat="vbshortdate"
17 case 3
18 whichformat="vblongtime"
19 case 4
20 whichformat="vbshorttime"
21 end select
22 response.write "FormatDate(now()," & whichformat & ")="
23 response.write Formatdatetime(currentdate,counter) & "<P><HR>"
24 next%>
25 </body></html>
2 <title>formatdates.asp</title>
3 </head><body bgcolor="#FFFFFF"><html>
4 <%'ASP que formata data
5 response.write "<hr>"
6 for counter=0 to 4
7 currentdate=now()
8 response.write "today is..." & "<br>"
9 response.write currentdate & "<P>"
10 select case counter
11 case 0
12 whichformat="vbgeneraldate"
13 case 1
14 whichformat="vblongdate"
15 case 2
16 whichformat="vbshortdate"
17 case 3
18 whichformat="vblongtime"
19 case 4
20 whichformat="vbshorttime"
21 end select
22 response.write "FormatDate(now()," & whichformat & ")="
23 response.write Formatdatetime(currentdate,counter) & "<P><HR>"
24 next%>
25 </body></html>
FormatNumber - Referência
Publicado por: Brasil Escola
O texto publicado foi encaminhado por um usuário do site por meio do canal colaborativo Monografias. Brasil Escola não se responsabiliza pelo conteúdo do artigo publicado, que é de total responsabilidade do autor . Para acessar os textos produzidos pelo site, acesse: https://www.brasilescola.com.