Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DOC Página 1 de 87
Os Server objects são DLLs existentes no servidor, e podem ser acessadas via ASP.
Essas DLLs permitem que o ASP converse com servidores de envio de email (smtp), pop, bancos de dados, arquivos
texto, etc....Qualquer um que tenha conhecimentos de VB pode construir DLLs....
www.activeserverpages.com
Cal, ASP é uma linguagem similar a CGI e Coldfusion, só que roda na plataforma WINNT...ela gera paginas HTML
dinamicamente, a partir de dados em banco de dados, etc.
IIS significa Internet Information Server, e é o software que, ao ser instalado no WINNT, processa as rotinas ASP
O IIS é o servidor WEB da Microsoft. É atraves dele que conseguimos executar uma página em ASP ou
simplesmente carregar uma página HTML. Também é servidor de FTP
ASP é muito melhor. Java pode ser em um futuro mais remoto, mas por enquanto só ASP mesmo. Não quero me
arriscar com outras coisas. Talvez o PHP por causa do Linux... só que hoje é possivel rodar ASP em Linux tb.
Portanto...ASP
O que é um Objeto?
Acesso a bancos de dados. Acesso a arquivos texto. Envio de e-mail através de páginas
WEB. Essas e muitas outras funções do ASP tem como base os objetos (ou DLLs).
Aprofundando um pouco o conceito de ASP, podemos dizer que ASP é a junçao de HTML,
VBScript e acesso aos objects.
Ao acessar um banco de dados via ASP, na verdade, o que estamos fazendo é acessando
uma DLL no servidor. A chamada a essa DLL, assim como todas as rotinas de ASP são feitas
utilizando VBScript. Essa DLL, por sua vez acessa o banco de dados e gera a consulta. Essa
consulta é lida pelo ASP através de VBScript e gera uma tabela em HTML. Essa tabela HTML
é, então, enviada ao Browser. Assim como o acesso a dados, o acesso aos arquivos texto
também é feito dessa forma, bem como o envio de emails. No envio de e-mails, uma DLL
que tem acesso ao servidor SMTP é acionada e passa a este os dados pertinentes ao e-mail
que será enviado.
Tal forma de acesso às várias ferramentas do servidor é baseada no modelo COM
(Componente Object Model), o que permite que o ASP tenha um caráter de linguagem com
grande capacidade de expansão. Como exemplo, cito DLLs que fazem codificação de dados,
DLLs que enviam FAX com dados de um formulário preenchido na WEB (esta DLL faz a
conexão entre os dados enviados via formulário e uma placa FAX/MODEM do servidor, que
disca o número do FAX e envia tais dados), DLLs que interagem com o sistema de
identificação de usuários do NT (login), DLLs que geram gráficos no formato jpg, DLLs que
acessam o servidor POP para visualização de e-mails via HTTP e mais uma infinidade de
aplicações.
O comando Server.Createobject("nomedadll.nomedaprocedure") é utilizada para criar a
conexão com a DLL. A partir daí, os dados utilizados como parâmetro devem seguir o
conjunto de comandos que cada DLL disponibiliza. No caso do acesso aos bancos de dados,
movenext, movefirst e execute são alguns dos comandos disponibilizados.
As DLLs não precisam ser criadas pela Microsoft. Existem várias empresas que criam DLLs e
comercializam. Entre elas, a ServerObjects (www.serverobjects.com) e a SoftArtisans
(www.softartisans.com).
Além de Consultas, Existe também sintaxe para inserção de dados numa tabela, como
segue:
sintaxe: "insert into tabela (campo1,campo2,campo3,...) values
('valor1','valor2','valor3',...)"
Veja os exemplos a seguir:
"Insert into cadastro (nome, email, estado, idade) values
('Fernando','webmaster@aspbrasil.com.br','SP',23)" - insere na tabela Cadastro os
valores dos campos nome, email, estado, idade.
Note que o valor 23 não está delimitado por aspas. Por se tratar de um campo numérico, no
Banco de dados, este não fica delimitado por aspas.
Abaixo, Exemplo Prático com a string de inserção de dados:
Estrutura do Banco de Dados:
nome do banco de dados: teste.mdb
path do banco de dados: c:\teste
nome da conexao ODBC: TESTE_ODBC
tabela a ser consultada: agenda
campos da tabela agenda: nome, email, cidade, estado, idade
<%
sqlstmt = "Insert into cadastro (nome, email, estado, idade) values
('Fernando','webmaster@aspbrasil.com.br','SP',23)"
Set conn = server.createobject("adodb.connection") 'abre a conexão com o banco
de dados
conn.open "nome_da_ligacao_ODBC" 'avisa qual banco de dados será utilizado na
consulta
set rsquery = conn.execute(sqlstmt) 'executa a instrução SQL contida na variavel
sqlstmt
set rsquery = nothing
set conn = nothing
'Note que não é necessário fechar a rsquery. Isso ocorre devido à string de
inserção não ficar armazenada na memória , para futura consulta. Ela é executada,
e automaticamente, fechada. Isso também ocorre nas strings de deleção e
atualização.
%>
Acompanhe agora este outro exemplo:
Página para inserção dos dados nome, email, cidade, estado, idade
<form method="post" action="inserir_registro.asp">
<input type="text" name="nome" value="">
<input type="text" name="email" value="">
<input type="text" name="cidade" value="">
<input type="text" name="estado" value="">
<input type="text" name="idade" value="">
<input type="submit" name="submit" value="Gerar Consulta">
</form>
Página de Inserção dos Dados (inserir_registro.asp):
<%
nome_local = request.form("nome")
email_local = request.form("email")
cidade_local = request.form("cidade")
estado_local = request.form("estado")
Rotinas de Loop
Do...Loop
For...Next
While...Wend
For...Next
O comando For...Next executa uma determinada rotina até que o contador (uma variável)
atinja o valor determinado. Observe o exemplo:
<html><body>
<%
For i=1 to 50
response.write i
next
%></body></html>
observe que não é necessário nenhuma rotina de incrementação de valores em i. A
cada ciclo, o valor de i é acrescido de uma unidade, automaticamente.
para interromper o Loop, usa-se o comando Exit For
Server.CreateObject Failed
/fale.asp, line 25
Para acessar uma base Oracle, a partir de uma aplicação ASP, você pode se valer de um
acesso ODBC definido em seu servidor Web
....
<input type=submit>
<input type=reset>
</form>
there is a limit on the number of characters (approximately 4,000 but varies depending on server
and browsers involved.
The form will show it's parameter in the browser address window, for example:
testform.asp?state=md&city=Germantown
would be the URL in the browser, if the state and city field were populated.
An ASP script picks up a form field with:
<%whatever=request.querystring("whichfield")%>
Form with POST
<form action="x.asp" method=post>
....
<input type=submit>
<input type=reset>
<html><head>
<title>FormTextBox.asp</title>
</head><body bgcolor="#FFFFFF">
<Form action = "FormTextBoxRespond.asp" method="get">
Fill Out This Form For Us:<p>
Last Name -> <Input NAME="NameLast" size ="10"><br>
Country -> <Input NAME="Country" value="USA" size=10><br>
State -> <Input NAME="State" MaxLength="2" size=2><br>
<Input type="submit" value="Give me your data!">
<hr></form>
</body></html>
<html><head>
<title>FormTextBoxRespond.asp</title>
</head><body bgcolor="#FFFFFF">
<%
lname=request.querystring("namelast")
cty=request.querystring("country")
st=request.querystring("state")
<html><head>
<TITLE>formTextArea.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="FormTextAreaRespond.asp" method="post">
<p>TextArea Example</p>
<p>Please type your special shipping comments:</p>
<TEXTAREA NAME="shippingComments" ROWS=5 COLS=50>
shipping comments go here
</textarea>
<p><input type=submit value="send in comments!">
</form>
</body></html>
The responder to the form will look like this:
<html><head>
<TITLE>formTextArearespond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%
comm=request.form("shippingcomments")
response.write comm
%>
<hr>
</body></html>
<html><head>
<TITLE>FormCheckBox.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="FormCheckBoxRespond.asp" method="post">
<p>CheckBox Form Example</p>
<p>How do you want your order confirmed?</p>
<input TYPE="checkbox" NAME="USMail">confirmation sent by first class US
Postal Service<br>
<input TYPE="checkbox" NAME="UPS">confirmation sent by UPS overnight letter
service<br>
<input TYPE="checkbox" NAME="EMail" CHECKED>confirmation sent by EMail<br>
<input TYPE="checkbox" NAME="Fax">confirmation sent by Fax<br>
<input TYPE="checkbox" NAME="Tel" CHECKED>confirmation made by telephone
call<br><br>
<input type="submit"><input type="reset">
</form><hr></body></html>
The responder looks like this:
<html><head>
<TITLE>formCheckBoxRespond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<html><head>
<TITLE>formRadio.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="FormRadiorespond.asp" method="post">
<p><b>Radio Buttons </b> example</p>
<p>Which Regional Office will you be visiting?</p>
<input TYPE="radio" NAME="City" VALUE="NY">New York City
<input TYPE="radio" NAME="City" VALUE="LA">Los Angeles
<input TYPE="radio" NAME="City" VALUE="SV" CHECKED>Savannah
<br><input type="submit" value="choose a city">
</form>
<html><head>
<TITLE>FormListBox.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="FormListBoxRespond.asp" method="post">
<SELECT NAME="state">
<OPTION SELECTED VALUE="md">Maryland</OPTION>
<OPTION value="dc">District of Columbia</OPTION>
<OPTION value="va">Virginia</OPTION>
<OPTION value="whoknows">Somewhere Else!</OPTION>
</SELECT>
<input type=submit value="Choose State">
</form>
</body></html>
The responder looks like this:
<html><head>
<TITLE>formlistboxrespond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%mystate = request.form("state")
Select Case ucase(mystate)
case "DC"
response.write "DC meeting on 15th"
case "MD"
response.write "MD meeting on 20th"
case else
response.write "No meetings for you to attend!"
End Select%>
</body>
</html>
<html><head>
<TITLE>case.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="caserespond.asp" method="get">
Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
<INPUT TYPE=submit><p><INPUT TYPE=reset>
</form>
</body></html>
Here is the select case that will determine what the form input means.
<html><head>
<TITLE>caserespond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%
fname=request.querystring("Firstname")
lname=request.querystring("Lastname")
%>
Nice to Meet You <%=fname%> <%=lname%><p>
<%If fname="" then%>
Sorry we are not on a first name basis...<p>
<%end if
select case lcase(lname)
case "washington","adams"
response.write "The first president has same last name<p>"
case "jefferson"
response.write "The third president has same last name<p>"
case "lincoln"
response.write "The sixteenth president has same last name<p>"
end select%>
</body></html>
=
Select Case Part2 (by John Kauffman & Charles Carroll)
Using IF-THEN can be cumbersome, prone to programmer errors and slower to execute. A more efficient
construct is SELECT CASE. It is optimized for testing one variable against many conditions.
<html><head>
<TITLE>case2.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="case2respond.asp" method="get">
Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
Your Title
<INPUT TYPE="Radio" name="Title" VALUE="employee">Entry Level
<INPUT TYPE="Radio" name="Title" VALUE="temp" CHECKED>Temporary Employee
<INPUT TYPE="Radio" name="Title" VALUE="manager">Management Candidate
<INPUT TYPE="Radio" name="Title" VALUE="executive">Executive
<INPUT TYPE="Radio" name="Title" VALUE="vice-prez">The Vice President of...
<INPUT TYPE="Radio" name="Title" VALUE="CEO">The Boss<p>
<INPUT TYPE=submit><p>
</form>
</body></html>
<html><head>
<TITLE>if.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="ifrespond.asp" method=get>
Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
<INPUT TYPE=submit><p><INPUT TYPE=reset>
</form></body></html>
Now we make a asp file that examines their first name and last name after the form is submitted.
<html><head>
<TITLE>ifrespond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%fname=request.querystring("Firstname")
lname=request.querystring("Lastname")
If fname="George" and lname="Washington" then%>
Hi.<p>You must be the first president!
<%else%>
Hi!<p>Nice to Meet You
<%end if%>
</body></html>
<html><head>
<TITLE>if2.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="if2respond.asp" method=get>
Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
<html><head>
<TITLE>if3.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="if3respond.asp" method=get>
Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
Your Salary <INPUT NAME="Salary" MaxLength=7><p>
<INPUT TYPE=submit><p><INPUT TYPE=reset>
</form></body></html>
This example shows how IF can deal with ranges and use various other boolean operators.
<html><head>
<TITLE>if3respond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%
fname=request.querystring("Firstname")
lname=request.querystring("Lastname")
salary=request.querystring("Salary")
response.write "Nice to Meet You " & fname & " " & lname & "<p>"
if salary>100000 then%>
Would you like to loan me some money?<p>
<%
sstaxMarginal=15
else
SSTaxMarginal=15
<html><head>
<TITLE>if4.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="if4respond.asp" method=get>
Your First Name<INPUT NAME="FirstName" MaxLength=20><p>
Your Last Name<INPUT NAME="LastName" MaxLength=20><p>
Your Salary <INPUT NAME="Salary" MaxLength=7><p>
<INPUT TYPE=submit><p><INPUT TYPE=reset>
</form></body></html>
This example shows how IF can deal with ranges but this example illustrates the critical factor of ordering.
If you were to re-arrange these IFs they would not accurately report your salary grade.
<html><head>
<TITLE>if4respond.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%fname=request.querystring("Firstname")
lname=request.querystring("Lastname")
salary=request.querystring("Salary")
response.write "Nice to Meet You " & fname & " " & lname & "<p>"
if salary>80000 then
salarygrade=4
end if
if salary <=80000 then
salarygrade=3
end if
If salary <=60000 then
salarygrade=2
end if
if salary <=40000 then
salarygrade=1
end if
response.write ("Your Salary is $" & salary)
response.write (", your Grade is " & salarygrade & ".<p>")
%>
</body></html>
<html><head>
<TITLE>surveypage1.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<form action="surveypage2.asp" method="post">
First Name<br>
<input type="text" name="first" size="20"><br>
Last Name<br>
<input type="text" name="last" size="20">
<p>
<input type="submit" value="Next Question ->"></p>
</form>
</body></html>
surveypage2.asp asks the user the next questions:
Test the Script --
/learn/test/surveypage2.asp"
<html><head>
<TITLE>surveypage2.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<form action="surveypage3.asp" method="post">
<%
first=request.form("first")
last=request.form("last")
%>
Hair Color<br>
<input type="text" name="haircolor" size="20"><br>
Favorite Color<br>
<input type="text" name="favoritecolor" size="20">
<p>
<input type="hidden" name="first" value="<%=first%>">
<input type="hidden" name="last" value="<%=last%>">
<input type="submit" value="Next Question ->"></p>
</form>
</body></html>
surveypage3.asp asks the user yet some more questions:
Test the Script --
/learn/test/surveypage3.asp"
<html><head>
<TITLE>surveypage2.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<%
first=request.form("first")
last=request.form("last")
haircolor=request.form("haircolor")
favoritecolor=request.form("favoritecolor")
%>
<html><head>
<TITLE>monthlyForm.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<form action="monthlyFormRespond.asp" method="post">
<p>CheckBox Form Example</p>
<p><b>Check Off The Days You Worked</b></p>
<%
my_month=request.querystring("whichmonth")
' response.write my_month & "<br>"
if my_month="" then
my_date=now()
else
my_month=month("1/" & (request.querystring("whichmonth")) & "/1999")
my_date=dateserial(year(now()),my_month,1)
end if
'response.write my_date & "<br>"
If my_month=12 then
my_day=1
my_month=1
my_year=my_year+1
else
my_day=1
my_month=month(my_date)+1
my_year=year(my_date)
end if
lastdayofmonth=day(DateSerial(Year(my_Date), my_Month,0))
'response.write lastdayofmonth & "<br>"
<%
' change these to reflect where form should go
fromName="Whoever"
fromAddress="somestudent@activeserverpages.com"
toName="Charles M. Carroll"
toAddress="cc@thebestweb.com"
subject="form send mail tutorial"
relay="relay.datareturn.com"
%>
<html><head>
<title>FormToBeMailed.asp</title>
</head><body bgcolor="#FFFFFF">
<form action="FormToBeMailedrespond.asp" method="GET">
Fill Out This Form For Us:<p>
First Name -> <input NAME="NameFirst" size="10"><br>
Last Name -> <input NAME="NameLast" size="10"><br>
Country -> <input NAME="Country" value="USA" size="10"><br>
State -> <input NAME="State" MaxLength="2" size="2"><br>
email copy to -> <input NAME="emailcopy" MaxLength="20" size="20"><br>
<% ' do not touch these lines. Needed to send mail! %>
<input type="hidden" name="mail-from" value="<%=fromName%>">
<input type="hidden" name="mail-fromAddress" value="<%=fromAddress%>">
<input type="hidden" name="mail-to" value="<%=ToName%>">
<input type="hidden" name="mail-toaddress" value="<%=toaddress%>">
<input type="hidden" name="mail-subject" value="<%=subject%>">
<input type="hidden" name="mail-relay" value="<%=relay%>">
</form>
</body></html>
Here is the generic form responder that can be used with this or any form:
<html><head>
<title>serverobjectsmailrespond.asp</title>
</head><body bgcolor="#FFFFFF">
<%
' ASPMail(tm) from http://www.serverobjects.com
' is not part of ASP per se,
' but a excellent third party component
my_from=request("mail-fromName")
Mailer.FromName = my_from
Mailer.FromAddress = my_fromAddress
Mailer.AddRecipient my_to, my_toaddress
Mailer.Subject = my_subject
my_emailcopy=request("emailcopy")
If my_emailcopy="" then
else
Mailer.AddRecipient "form filler",my_emailcopy
end if
If Mailer.SendMail then
Msg = "mail sent sucessfully!"
Else
Msg = "mail was not sent sucessfully"
End If
response.write Msg
%>
</body></html>
<%
response.buffer=true
%>
<html><head>
<TITLE>cookiesform.asp</TITLE>&
<body bgcolor="#FFFFFF">
<%
ln=Request.Cookies("thatperson")("lastname")
<%response.buffer=true%>
<html><head>
<TITLE>cookiesformforget.asp</TITLE>&
<body bgcolor="#FFFFFF">
<%
cookiepath="/learn/test"
cookiedomain=".www.activeserverpages.com"
cookiesdie=date-365
Response.Cookies("thatperson").Expires = cookiesdie
Response.Cookies("thatperson").Domain = cookiesdomain
A reader of the site submits this simplified cookie reading, writing and deleting by automatically determing
the correct domain and path info without you having to specify it for each cookie.
<%response.buffer=true%>
<!--#include file="cookielib.asp"-->
<html><head>
<TITLE>cookiesub.asp</TITLE>&
<body bgcolor="#FFFFFF">
<%
Call AddCookie("Person", "Firstname", "Robert", 365)
Call AddCookie("Person", "LastName", "Forward", 365)
response.write GetCookie("person","firstname")
response.write GetCookie("person","lastname")
%>
</body></html>
Here is the library code that does most of the work:
<%
'=======================================================================
' CookieLib.asp by Paul Rigor (http://www.mysticpc.com)
' online at http://www.activeserverpages.com/learn/cookiesub.asp
' copyright 1998 by Paul Rigor
'
' application("cookiedomain") and application("cookiepath") can be
' set if firewall precludes accurate server variable
'
' AddCookie(Cname, CKey, CValue, CExpDays)
' Example: Call AddCookie("MyCookie", "Cost", "$1.00", 100)
'
' KillCookie(Cname,CKey)
' Example: Call KillCookie("MyCookie", "Cost")
'
' GetCookie(Cname,Ckey)
' Example: Call GetCookie("MyCookie", "Cost")
'
' Cname = Cookie Name: Required, for cookie name
' Ckey = Cookie Key: Optional(empty sting), use if cookie should be a
dictionary
' Cvalue = Cookie Value: Required, what the cookie should be set to.
' CExpDays = Cookie Expiration: number of days cookie is valid, default 365
Function AddCookie(Cname, CKey, CValue, CExpDays)
If Cname = "" Then
Exit Function
End If
Function KillCookie(Cname,CKey)
If CKey <> "" Then
Call AddCookie(Cname, Ckey, "", 0)
Else
Response.Cookies(Cname).Expires = Date - 365
Response.Cookies(CName).Domain = GetCookieDomain()
Response.Cookies(CName).Path = GetCookiePath()
End If
End Function
Function GetCookieDomain()
If Application("CookieDomain") <> "" Then
GetCookieDomain = Application("CookieDomain")
Else
GetCookieDomain = Request.ServerVariables("SERVER_NAME")
End If
End Function
Function GetCookiePath()
If Application("CookiePath") <> "" Then
GetCookiePath = Application("CookiePath")
Else
TmpPath = Request.ServerVariables("SCRIPT_NAME")
TmpPath = Split(TmpPath, "/")
For PathArryCnt = 0 to Ubound(TmpPath) - 1
GetCookiePath = GetCookiePath & TmpPath(PathArryCnt) & "/"
Next
If GetCookiePath = "/" Then GetCookiePath = ""
End If
End Function
%>
ref=request.servervariables("http_referer")
response.write "Page thats links to this=" & ref & "<br>"
ua=request.servervariables("http_user_agent")
response.write "Browser String=" & ua & "<br>"
lan=request.servervariables("http_accept_language")
response.write "Browser Language=" & lan & "<br>"
user=request.servervariables("logon_user")
response.write "NT Logon Name=" & user & "<br>"
%>
</body></html>
<HTML>
<HEAD>
<TITLE>Working with Text Files</TITLE>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<H3>Working with Text Files</H3>
<%
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
TestFile = Server.MapPath ("/ASPSamp") & "\samples\textwork.txt"
Set OutStream= FileObject.CreateTextFile (TestFile, True, False)
OutputString = "This is a test..." & Now()
OutStream.WriteLine OutputString
Response.Write "Wrote the string '" & OutputString & "' to the file: '" & TestFile & "'<P>"
Set OutStream = Nothing
Randomize
TipNumber = Int(10 * Rnd)
Response.Write "<P>The Tip Number is: " & TipNumber & "<P>"
<HTML>
<HEAD><TITLE>Browser Properties</TITLE></HEAD>
<BODY BGCOLOR=#FFFFFF>
Execute Reset
<HTML>
<HEAD><TITLE>Simple ADO Page Scrolling Example</TITLE></HEAD>
<BODY BGCOLOR=#FFFFFF>
<H1>Simple ADO Page Scrolling Example</H1>
<FORM METHOD=POST ACTION="Results.asp">
<P>Query:
<% sql = Request("sql")
if sql = "" Then
sql = "select ProductName, ProductType, ProductDescription, ProductImageURL from
products"
end if
%>
<P><TEXTAREA NAME="sql" ROWS=15 COLS=75><%=sql%></TEXTAREA><BR>
<P><INPUT TYPE=SUBMIT VALUE="Execute"><INPUT TYPE=RESET VALUE="Reset">
</FORM>
<!--#include virtual="/ASPSamp/Samples/srcform.inc"-->
</BODY>
</HTML>
When referencing recordset values in your code, you probably write something like this:
If rs("QuantityOrdered") < 1 then NoSale = True
Using Includes
The previous FAQ discussed the importance of using functions in your ASP to modularize your code. Unfortunately,
a function written in one ASP file cannot be accessed by a separate ASP file. That is what includes are useful for
(among other things).
Includes are similar to #include's in C++, or uses in Pascal. An include in ASP simple copies over the text from
the specified file into the current file. For example, say you had a file named PrintHelloWorld.asp, which had the
following code:
<%
Response.Write("Hello, world!")
%>
Now, we can include that code in another ASP file.
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<BODY>
<!--#include file="PrintHelloWorld.asp"-->
</BODY>
function Square(num)
end function
%>
Now, if we have an ASP page that we want to use the square function, we would simply type the following code:
<%@ LANGUAGE="VBSCRIPT" %>
<!--#include virtual="/scripts/SquareFunction.asp"-->
<%
Dim MyAge
MyAge = CInt(20)
%>
<HTML>
<BODY>
</BODY>
</HTML>
Note that it was if we had typed in the file SquareFunction.asp into the ASP file above. The use of include files in
ASP is good programming technique, for it allows one copy of source code to be used multiple times. You should
strive to write your ASP applications as modular as possible, and include files help you do just that!
Em resposta a: Do que o java é capaz realmente? enviado por Ignorante em 15 de Dezembro de 1999 às 18:28:04:
Java virtual machine e uma abstracao de uma maquina real. Ou seja vc simula em software uma maquina real.
Logo se vc tiver uma maquina virtual padrao(como e no java) e tiver este software disponovel para varios ambientes
(SO) vc podera executar um mesmo programa utilizando a maquina virtual ,nao importanto em que SO ou maquina
ele esteja.
O java serve tanto para internet como para fazer aplicacoes.
Existem varias empresas que desenvolvem aplicacoes em java, principalmente
aquelas que desenvolvem softwares distribuidos.
Concordo com o Melquior, e tem mais estas linguagens que o tal "Guru" sitou (Pearl, Cgi, Php) são apenas scripts
interpretados embutidos no HTML, o que os torna lentos e dependentes de plataforma ou browser. Quanto a
velocidade do Java já existem compiladores nativos que transformam os byte codes em binarios nativos, o que
elemina o problema de desempenho (apesar disso ser uma abuso a filosofia do Java). Graças ao estrutura montada
pela Sun, o Java é mais que uma linguagem de programação, ele pode se adaptar a qualquer plataforma deste um
palm pilot ou uma maquina de refrigerantes até um computador de grande porte, basta existir uma VM para Java e
pronto seu codigo roda sem precisar nem mesmo ser compilado.
Em resposta a: APPLET java chama ASP ? enviado por JOAO LUIS MOREIRA em 26 de Novembro de 1999 às
17:37:41:
Utilize o método showDocument passando como parâmentro um objeto do tipo URL.
Exemplo:
URL u = new URL("http:////PaginaAsp?P1=XXX")
context.showDocument(u);
x = Mailer.SendMail
if x = true then
Else
end if
Response.write MSG
Acima uma condição onde se o E-mail for enviado com sucesso ele mostrará a MSG!
R: A resposta para essa pergunta é complicada pois engloba vários fatores. Uma coisa é
certa, um servidor Unix rodando um Apache e CGI Perl é muito! mais rápido e eficiente,
porém limitado. O ASP é um pouco mais lento, mas te oferece a total integração com a
família MS Office e MS Visual Studio, além da API do Windows. Isso pode ser infinitamente
vantajoso dependendo do seu projeto... Resumindo, tenho duas dicas essenciais para se ter
um servidor rápido e eficiente. Quase todas as tecnologias da Microsoft ocupam muita
memória e meu primeiro aviso é que o servidor tenha muita memória! A segunda coisa
pode sair mais cara, mas também garante o desempenho: crie uma máquina só para servir
dados... e coloque muita memória nessa máquina também, pois o ODBC do NT adora
travar. Outra dica importante é que você verifique pessoalmente todos os scripts ASP que
estiverem no servidor. Lembre-se de atribuir "Nothing" para os Recordsets e utilize
abandon.session para apagar as variáveis "Session", quando se fizer necessário.
Como os programas ASP rodam?
R: Um programa simples feito em ASP é composto por páginas HTML estáticas, páginas ASP
dinâmicas, uma base de dados que pode ser um arquivo do Access (*.MDB) e um arquivo
de configurações chamado GLOBAL.ASA. Este último arquivo não precisa necessariamente
ser criado, a não ser que seu projeto seja complexo o suficiente para fazer tratamento de
eventos globais do programa. Por hora, não esquente com esse arquivo. Importante é saber
que ASP é uma linguagem Script, ou seja, uma linguagem parecida com Basic e Fortram.
Justamente pelo método utilizado pelo Servidor para interpretar o programa. O Servidor na
verdade "decora" as linhas a as fica repetindo até montar uma página HTML na sequência
que você instruiu. Resumindo, ASP é uma linguagem de programação sequencial. A
vantagem é que você pode reaproveitar muito o código das páginas. Por exemplo, você não
precisa necessariamente criar duas páginas, a primeira sendo um formulário e a segunda a
página ASP. Você pode fazer um formulário ASP que ao carregar pela primeira vez, tenha
um comando de desvio que não execute comando nenhum. Quando o Submit do formulário
for acionado ele chamará a si próprio e lerá o código ASP "escondido" por uma rota de
desvio (um if, por exemplo).
ASP roda no UNIX?
R: Sim. ASP pode rodar perfeitamente num servidor UNIX rodando o Apache. Só é um
pouco mais complicado de configurar. A própria Microsoft tem alguma documentação sobre
o assunto. Acessando o site de suporte da Microsoft, pesquisei por "Apache". Veja o que
achei neste endereço:
http://search.support.microsoft.com/
searchbin/kb/search.idq?OL=1&D=Support&A
=T&T=B&SG=&S=F&SD=SO&T1=&FR=
0&DU=C&Sz=apache&O=apache
Veja dois links (em inglês também) de empresas que apresentam soluções para rodar ASP
em plataforma Unix:
iASP - Instatnt ASP
<%
On Error Resume Next
varErro = 0
Conexao.Open "blá blá..."
SQLStr = "SELECT * FROM MinhaTabela"
Set RS = Conexao.Execute(SQLStr)
If RS.EOF Or RS.BOF Then
varErro=1
Else
'coloque os comandos aqui.
End If
%>
<html><head>
<TITLE>dbsimple.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<%If varErro = 1 Then%>
<p><h1>ERRO!</h1></p>
<%Else%>
<p>Coloque aqui a página de Resposta se correr tudo bem.</p>
<%End If%>
</body></html>
Só tem um detalhe. Aquela condição "If RS.EOF Or RS.BOF Then" é utilizada qndo sua SQL string é um SELECT,
que retorna dados. Quando vc está utilizando o DELETE ou UPDATE, vc deve substituir essa condição por: "If
Err.Num > 0 Then", ok.?
DEFAULT.ASP
-------------------------------------------------------
<TITLE>Apurando Erros</TITLE>
<body bgcolor="#FFFFFF">
<!--#include file="lib_errors.asp"-->
<%
on error resume next
attempt="criando um objeto de conexão"
set conntemp=server.createobject("adodb.connection")
Call ErrorVBScriptReport(attempt)
attempt="abrindo conexao"
conntemp.open "DSN=Student;uid=student;pwd=magic"
Call ErrorVBScriptReport(attempt)
Call ErrorADOReport(attempt,conntemp)
SUB ErrorADOReport(parm_msg,parm_conn)
HowManyErrs=parm_conn.errors.count
IF HowManyErrs=0 then
exit sub
END IF
pad=" "
response.write "<b>ADO Reports these Database Error(s) executing:<br>"
response.write SQLstmt & "</b><br>"
for counter= 0 to HowManyErrs-1
errornum=parm_conn.errors(counter).number
errordesc=parm_conn.errors(counter).description
response.write pad & "Error#=<b>" & errornum & "</b><br>"
response.write pad & "Error description=<b>"
response.write errordesc & "</b><p>"
next
END SUB
%>
Apresentando uma ListBox - 23/07/99 Este script mostra como fazer um formulário
contendo uma listbox "alimentada" automaticamente. E também mostra a página de
resposta para este formulário, apresentando a opção escolhida na listbox.
Renato
<html><head>
<TITLE>dblist.asp</TITLE>
</head><body bgcolor="#FFFFFF">
<%
myDSN="DSN=Student;uid=student;pwd=magic"
mySQL="select author from authors where AU_ID<100"
%>
<form action="dblistrespond.asp" method="post">
<Select name="authorname">
<%
' Imprimindo os dados dentro da listbox
do until rstemp.eof %>
<option> <%=RStemp(0)%> </option>
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 via DBQ, ou seja, 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).
Conexões via DSN geralmente requerem um nome de DSN, um usuário e uma senha.
Exemplo:
<%
set conntemp=server.createobject("adodb.connection")
conntemp.open "estudante","estudante","magic"
set rstemp=conntemp.execute("select * from autor")
%>
Exemplo:
<%
set conntemp=server.createobject("adodb.connection")
cnpath="DBQ=" & server.mappath("sua_tabela.mdb")
conntemp.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath
set rstemp=conntemp.execute("select * from autor")
%>
Observação:
Para Access --> driver = {Microsoft Access Driver (*.mdb)};
Para SQL -----> driver = SQL Server;
ConnString = "DBQ=c:\inetpub\wwwroot\teste\bd.mdb"
ConnString = ConnString & ";Driver={Microsoft Access Driver (*.mdb)}"
<BODY>
<%If varErro = 1 Then%>
ERRO!
<%Else%>
OK!
<p>Total dos Preços = <%=RS("Preco")%>
<%End If%>
</BODY>
</HTML>
<%
RS.Close
Connexao.Close
Set RS = Nothing
Set Connexao = Nothing
%>
NOTA: Veja que o comando SUM precisa de "algumas frescuras" prá funcionar legal.... :( Eu mesmo fiz vários
testes até chegar neste resultado:
<%
Private Function ConverteTexto(varTexto)
Dim y, x, z, limite
limite = Len(Trim(varTexto))
y = ""
for x = 1 to limite
z = Mid(varTexto, x, 1)
if z = CHR(10) Then
z = "<br>"
end if
y=y&z
next
ConverteTexto = y
End Function
<BODY>
<%=ConverteTexto(Request.Form("Texto"))%>
</BODY>
</HTML>
Esta Subrotina exemplifica como abrir um arquivo texto, escrever dados nele e fechá-lo.
Sub CreateFile()
Dim fso, tf
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("c:\testfile.txt", True)
' Escreve uma linha no arquivo
tf.WriteLine("Testando 1, 2, 3.")
' Escreve 3 linhas em branco
tf.WriteBlankLines(3)
' Escreve uma linha sem quebrá-la
tf.Write ("Este é um teste.")
tf.Close
End Sub
Trabalhando com diretórios - 30/07/99 Esta Subrotina exemplifica como trabalhar com
diretórios, obtendo informações, criando novos e apagando-os.
Renato
Sub ShowFolderInfo()
Dim fso, fldr, s
' Criando uma instância do FSO
Set fso = CreateObject("Scripting.FileSystemObject")
' Pegando o objeto Drive
Set fldr = fso.GetFolder("c:")
' Imprime o nome do diretório raiz
Response.Write "Nome do diretório: " & fldr & "<br>"
' Imprime o nome do drive
Response.Write "Contido no drive: " & fldr.Drive & "<br>"
' Imprime se é ou não o diretório Root
If fldr.IsRootFolder = True Then
Response.Write "Este é o diretório Raiz." & ""<br>"<br>"
Else
Response.Write "Este diretório não é o diretório raiz." & "<br><br>"
End If
' Cria um novo diretório.
fso.CreateFolder ("C:\Teste")
Response.Write "Diretório criado C:\Teste" & "<br>"
' Imprime o nome de base do diretório.
Response.Write "Basename = " & fso.GetBaseName("c:\bogus") & "<br>"
' Apaga o diretório criado
fso.DeleteFolder ("C:\Teste")
Contador de Acessos com FSO - 06/08/99 Um contador que usa o File System Object
para acessar um arquivo de texto e incrementar o valor cada vez que a página é requisitada
<%
'-------------------------------------
'Marcelo Ricardo - mricardor@yahoo.com
'favor manter este cabçalho
'------------------------------------
dim Contador, tamanho, arquivo, valor, Hits
arquivo = Server.MapPath("contador.cnt")
set FsObject = Server.CreateObject("Scripting.FileSystemObject")
if FsObject.FileExists(arquivo) then
set Contador = FsObject.GetFile(arquivo)
set txtStream = Contador.OpenAsTextStream(1,0)
Hits = txtStream.Readall
Hits = Hits + 1
set txtStream = nothing
else
FsObject.CreateTextFile(arquivo)
set Contador = FsObject.GetFile(arquivo)
Hits = 0
end if
set txtStream = Contador.OpenAsTextStream(2,-2)
txtStream.Write Hits
set txtStream = nothing
Response.Write hits
%>
<BODY bgcolor="#FFFFFF">
<p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="4">Formulário
Gerador de Memorando</font></b></p>
<form action="memo.asp" method="POST">
<p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">De:</font></b>
<input type="Text" name="de" size="60" maxlength="255" tabindex="0">
<br>
<b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Para:</font></b>
<input type="Text" name="para" size="60" maxlength="255" tabindex="1"></p>
<p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Texto:</font></b><br>
'
'COMANDO SECCIONADO POIS DEU PROBLEMA NO CADASTRO DO SCRIPT !!!
'
< t e x t a r e a name="texto" cols="80" rows="10" wrap="PHYSICAL" > < / t e x t a r e a >
'
' CORTE FORA ESSES COMENTÁRIOS AO COPIAR O TEXTO...
'
</p>
<p><input type="Submit" name="Gerar" value="Gerar !" tabindex="3">
<input type="Reset" name="Limpar" value="Limpar !" tabindex="4">
</p>
</form>
</BODY>
</HTML>
--------------------------------------------------------------
Aí criei uma página chamada MEMO.ASP, gravando os dados digitados no formulário em um arquivo chamado
MEMORANDO.HTM. Mas para apresentar os dados do formulário de forma decente, utilizei uma função de
conversão chamada ConverteTexto para filtrar e converter os Enter's digitados pelo usuário no texto do memorando.
E também precisei escrever no MEMORANDO.HTM as TAGS necessárias para formatar o conteúdo do HTML e
apresentá-lo com fontes e enfeites decentes. Saiu mais ou menos assim:
--------------------------------------------------------------
- memo.asp
--------------------------------------------------------------
--------------------------------------------------------------
<%
Private Function ConverteTexto(varTexto)
Dim y, x, z, limite
limite = Len(Trim(varTexto))
y = ""
for x = 1 to limite
z = Mid(varTexto, x, 1)
if z = CHR(10) Then
varDe = Request.Form("de")
varPara = Request.Form("para")
varTexto = Request.Form("texto")
f1.Write("<HTML>")
f1.Write("<HEAD>")
f1.Write("<TITLE>Memorando</TITLE>")
f1.WriteLine("</HEAD><BODY>")
f1.WriteBlankLines(1)
f1.WriteBlankLines(1)
f1.WriteBlankLines(1)
f1.WriteLine("</BODY></HTML>")
f1.Close
Set f1 = Nothing
Set fso = Nothing
%>
<HTML>
<HEAD>
<TITLE>Resposta do Formulário</TITLE>
</HEAD>
<BODY>
<p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="4">Formulário
objConn.ConnectionString = ...
objConn.Open
objConn.Close
objConn.ConnectionString = "DSN=Northwind"
objConn.Open
Dim objRS
objConn.Close
If you are hitting a database to populate a table or select box, you can use a method available with ADO 2.0,
GetString. Using this method increases the efficiency of your ASP script! I won't go into it here, since there
is already a good article on using GetString here on 4Guys.
<TABLE>
<% Do While not rs.EOF %>
<TR>
<TD><%=rs("Field1")%></TD>
<TD><%=rs("Field2")%></TD>
...
</TR>
<% rs.MoveNext
Loop %>
</TABLE>
For large queries, this can slow down your ASP script processing time, since many Response.Write commands must
be processed by the server. It would be much quicker if you could have the entire string (from <TABLE> to
</TABLE> created then outputted using Response.Write just once. Well, the fine people at Microsoft have made this
possible. (Note, this is an ADO 2.0 feature. This will not work if you are still using ADO 1.5. You can obtain ADO
2.0 freely at http://www.microsoft.com/data/download.htm.)
The GetString method allows us to display our string with only one Response.Write; it elminates the DO ... LOOP
and our conditional which tests if the recordset is at EOF.
Here is the syntax (all parameters are optional):
String = recordset.GetString(StringFormat, NumRows, ColumnDelimiter,
RowDelimiter, NullExpr)
To populate a table with the results from a recordset, we only need to worry about three of the four parameters
above: ColumnDelimiter (what HTML we separate each column in the recordset with), RowDelimiter (what HTML
we separate each row in the recordset with), and NullExpr (what HTML we use if the column we're currently on is
NULL).
As you can see from the table-populating ASP example above, each column is delimited by a <TD>...</TD>, and
each row is delimited by a <TR>...</TR>. That being said, let's look at some code.
<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit 'Good coding technique
'Establish connection to DB
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=Northwind;"
'Create a recordset
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM table1", conn
Please forward this information to a friend, including the subscription URL! Happy Programming!
Related Articles
Optimizing your ASP Code
'Establish connection
Name = Request("txtName")
Salary = Request("Salary")
Conn.Execute(strSQL)
Response.Redirect("SomePage.htm")
%>
We can use stored procedures instead to optimize this code. To create a stored procedure, you just need to go into
SQL Server, expand the database you want to create a stored procedure. You'll see a "Stored Procedures" folder.
Right click on it, and select "New Stored Procedure." Now, just type in your query and hit save!
Here is what the procedure will look like:
CREATE PROCEDURE sp_InsertEmployee (@Name varchar(100), @Salary money)
GO
In your ASP, you can call the procedure in two ways. The first way is to do something like:
<%
...
%>
The other way is to use the Parameters collection inherent in ADO. I will save this dicussion for a future WebDaily
article.
Happy Programming!
*****************************************************************
To subscribe to WebDaily, point your browser to:
http://www.4GuysFromRolla.com/webtech/webdaily
*****************************************************************
Connection Pooling
* This article describes how to utilize connection pooling in your ASP application.
If your ASP applications interact with databases at all (and I am sure they do, else why use Active Server Pages?),
then you can experience a great increase in database performance if you are utilizing connection pooling. The time
and resources needed to create a connection to a database are not trivial. If for every page where you create a
connection instance, a new connection must be created, and then deleted once the page is finished executing, your
users will notice the performance lost if there are many people hitting your server simultaneously.
Connection pooling keeps the connection instances around after a particular page is through using it. For example,
say that you have an ASP file that creates a connection to a SQL database, retrieves some data, and displays it on the
web page. Without connection pooling enabled, here are the sequence of steps that ASP performs:
Create a connection to the database Send the query to the database Get back the resultset
Display the resultset Destroy the connection
Each user who hits this page will have to go through each of these steps. With connection pooling, however, the
steps involved look more like this:
See if an unused connection exists in our "pool" of connections If so, use it, else create a
new connection Send the query to the database Get back the resultset Display the
resultset Return the connection to the "pool"
It is much less costly to reuse a connection than to have to create a brand new one each and every time a page needs
to establish a connection to a database.
Now, let's look at how we can make sure our ASP applications use connection pooling. There are two steps which
you need to take to utilize connection pooling: one, you must make sure your ASP registry settings have connection
pooling enabled; two, you must have SQL server set up to use TCP/IP Sockets.
First, to edit the registry so that our ASP programs use connection pooling you will need to run the REGEDIT
program and alter the following registry entry:
- ----------
Now, you might be wondering, what does he mean, Don't skimp on the variables? Well, often times it is more
efficient to use variables to store results from ADO queries or from objects, and then reference the variable as
opposed to continuously referencing the object.
For example, you could do this:
If Request.QueryString("Name") = "Frank" Then
...
End If
...
End If
strName = Request.QueryString("Name")
...
End If
...
End If
As your ASP applications get more advanced and grow in size, little bugs start becoming very difficult to catch and
fix! It is important to grow your debugging skills while you grow your coding skills! Here are some tips that will
hopefully aid you in your debugging:
Use Response.Write's like there's no tomorrow! Don't be afraid to print out the contents
of your variables at different times during the execution of the script. This helps
tremendously! Also, think logically. Step through your code one line at a time, perhaps
writing down on a piece of paper the current states of your variables, for loops,
conditionals, etc.
Comment out code that you think might be causing an error. If you just comment out a
line at a time until the error or problem goes away, simple induction tells you that the
error last commented before the error disappeared was the error-causing line!
Simplify, man! If there is a ton of code, but you know the error or bug is within a small
subsection of the rest of the source, cut the rest of the code out of the page for the time
being just to clear everything up, removing the clutter. You can paste the non-offending
code back in once you have trapped the error.
Here is a related article, that may help!
I've found that many ASP developers don't like repetitive tasks, yet many developers do the following: on each page
using database connectivity, they write the follwoing code:
Dim objConn
objConn.ConnectionString = Session("ConnectionString")
objConn.Open
Now why write all of this? First off, is a Session variable really needed here? No. Should we have to retype all of
this on each page we want to have database connectivity? No. A simpler solution is to use an include file, which
contains the above lines (and the connection string hard coded in).
Let's say we do this in a file named dbConn.asp, and put it in our /scripts directory. dbConn.asp might
look something like this:
<%
Dim objConn
objConn.ConnectionString = "DSN=Blah"
objConn.Open
%>
Then, in every page we want to use database connectivity, we just need to add this one line:
<!--#include virtual="/scripts/dbConn.asp"-->
Você tem um banco de dados online, com vários nomes cadastrados e gostaria de enviar e-
mails a todas essas pessoas? O ASPMail é uma opção simples e fácil. Grande parte dos
servidores possuem tal objeto, que é uma dll que pode ser encontrada na serverobjects, e
tem como função o envio de e-mail a partir de formulários (vide tutorial anterior) bem como
a partir de bases de dados.
Enviando E-mail
<%
ConnString="DBQ=e:\aspbrasil\teste.mdb;Driver={Microsoft Access Driver
(*.mdb)}"
sqlstmt = "select nome, email from cadastro"
Set Conn = Server.CreateObject("ADODB.Connection")
set rsquery = conn.execute(sqlstmt)
nr_emails_corretos = 0
nr_emails_errados = 0
nr_geral = 0
wend
rsquery.close
set rsquery = nothing
set conn = nothing
%>
Como enviar e-mails por páginas Web? O ASPMail é uma opção simples e fácil. Grande
parte dos servidores possuem tal objeto, que é uma dll que pode ser encontrada na
serverobjects, e tem como função o envio de e-mail. Abaixo segue um exemplo de como
pode ser utilizado o ASPMAIL.
Enviando E-mail
<FORM METHOD="post" ACTION="enviar_email.asp" name="">
Nome:
<INPUT TYPE="text" NAME="nome" SIZE="20">
E-mail:
< INPUT TYPE="text" NAME="email" SIZE="20">
Assunto:
< INPUT TYPE="text" NAME="assunto" SIZE="20">
Texto:
< TEXTAREA NAME="texto" cols="25" rows="10"></textarea>
< INPUT type="submit" name="Submit" value="Enviar" font face="Verdana,
Arial, Helvetica, sans-serif" size="2">
</FORM>
x = Mailer.SendMail
if x = true then
Else
end if
Response.write MSG
Acima uma condição onde se o E-mail for enviado com sucesso ele mostrará a MSG!
Além de Consultas, Inserções e exclusões, existe também sintaxe para alteração de dados
já existentes numa tabela, como segue:
O campo codigo é chave primaria, ou seja, não existem 2 cadastros com o mesmo valor
neste campo.
<%
'Note que não é necessário fechar a rsquery. Isso ocorre devido à string de
alteração não ficar armazenada na memória , para futura consulta. Ela é
executada, e automaticamente, fechada. Isso também ocorre nas strings de
atualização e inserção.
%>
</form>
<%
codigo_local = request.form("codigo")
sqlstmt = "update agenda set nome = '" & nome_local & "' where codigo =" &
codigo_local
conn.open "TESTE_ODBC"
response.redirect("alterado_com_sucesso.htm")
%>
<html>
<body>
</body>
</html>
Além de Consultas e Inserções, Existe também sintaxe para deleção (exclusào) de dados
numa tabela, como segue:
sintaxe: "delete from tabela where campo1 = 'valor1' (and/or) campo2 = 'valor2'
(and/or) campo3 = valor3 ..."
"delete from cadastro where nome = 'Fernando'" - a sintaxe ao lado apaga todos os
registros cujo campo nome é fernando.
"delete from cadastro where nome = 'Fernando' and idade = 23 " - deleta todos os
registros cujo campo nome é fernando e o campo idade é 23.
O campo codigo é chave primaria, ou seja, não existem 2 cadastros com o mesmo valor
neste campo.
<%
'Note que não é necessário fechar a rsquery. Isso ocorre devido à string de
exclusão não ficar armazenada na memória , para futura consulta. Ela é
executada, e automaticamente, fechada. Isso também ocorre nas strings de
inserção e atualização.
%>
</form>
<%
codigo_local = request.form("codigo")
sqlstmt = "delete from agenda where codigo = '" & codigo_local & "'"
conn.open "TESTE_ODBC"
response.redirect("deletado_com_sucesso.htm")
%>
<html>
<body>
</body>
</html>
O que é o Jscript?
A Microsoft, como não poderia deixar de ser, sempre faz alguma coisa contra a maré dos
outros fabricantes. Ocorreu com a linguagem Java, C++, XML e agora destaco o que
ocorreu com a linguagem Java Script, originalmente criada por Brendan Eich em 1995
quando trabalhava para Sun Microsystems.
Java Script, uma linguagem executável pelo navegador Web, é capaz de oferecer maior
dinamismo aos sites. Ela facilitou, e muito, o trabalho dos servidores, que antes tinham que
executar as tarefas mais banais, como validar se um determinado campo de um formulário
estaria vazio ou não. Uma tarefa como essa, pode ser escrita em Java Script em pelo menos
3 linhas, rodando na máquina do usuário, consequentemente deixando a rede mais livre
para se navegar.
Foi inicialmente interpretada pelo Netscape Navigator 2.0, na época, o navegador mais
usado pelos internautas. Logo depois, a Microsoft percebeu o valor daquela tecnologia e
implementou a Versão 3.0 do seu Internet Explorer suportando tanto Java Script quanto
Java - Outra linguagem desenvolvida pela Sun com aplicação em redes.
JScript é tão funcional quanto VBscript. O incrementos criados pela Microsoft para aquela
linguagem são semelhantes as existentes em VBscript, tornando-a muito produtiva para
pessoas com bom conhecimento. A única desvantagem é sua menor legibilidade, pois se
assemelha bastante com a linguagem C++. Em contra partida a sua sintaxe é mais enxuta,
exigindo menos digitação do programador. Muitos desenvolvedores reclamam da sua forte
sensibilidade ao contexto, isto é, os métodos devem ser escritos com a primeira letra
maiúscula. Confesso que essa característica não foi uma barreira para a minha migração.
Para que você perceba um pouco as diferenças entre as duas linguagens observe o código
abaixo:
O código acima obtém informações de um banco de dados, cujo Data Source chama-se
"Clientes". Foi implementado em Vbscript. Agora faça uma comparação com o código
abaixo:
Este código faz a mesma coisa que o primeiro. A diferença básica é a forma diferenciada
como os métodos são chamados nas diferentes sintaxes.
Se você for uma pessoa curiosa, certamente tentará implementar a solução Jscript
imediatamente. Espero que você não desista no primeiro erro que encontrar, pois isso
certamente ocorrerá se você não incluir o seguinte comando logo no início do código: <%@
language="JScript" %>. É natural que você nunca tenha feito isso antes, pois o servidor
Passando um pouco de experiência própria, decidi usar ASP com Jscript para homogeneizar
o código, pois Java Script, linguagem mais aceita entre os browsers, é a que eu utilizo para
funcionalidades no lado do cliente, e Jscript com ASP no lado do servidor. Isso facilita
bastante na hora de documentar o código.
<SCRIPT LANGUAGE="JavaScript">
<!--
function sayhello ()
{
alert("Hello world!")
}
//-->
</SCRIPT>
Samples: Welcome
How Does This Sample Work?
As the page is loaded, <SCRIPT> tags are encountered by the browser. These <SCRIPT>
tags contain code that executes as the HTML page is being parsed. This code writes content
into the page using an object supplied by the browser. For this example, the Microsoft®
JScript® code calls the document object's Write method, and passes it a string. All of this
is done on the client side: no special server side processing, no PERL hacking, no fuss, no
muss!
<SCRIPT LANGUAGE="JavaScript">
<!--
// These next lines of code execute when the script tag is parsed.
if (h < 12)
document.write("Good morning!")
else
if (h < 17)
document.write("Good afternoon!")
else
document.write("Good evening!")
//-->
</SCRIPT>
Hospedagem Gratuíta
A maior dificuldade dos pequenos programadores em relação ao ASP é fazer o teste para a
verificação on line do que foi efetuado, se estaria correto ou não. Até um mês atrás, uma
maneira muito simples, porém cara seria fazer uma hospedagem paga para fazer os teste.
Pois bem, essa época já acabou... agora estão surgindo sites de hospedagem gratuítos.
Geocities, Yahoo, AltaVista? Não! Os sites dão sustento a várias linguagens dentre elas o
ASP. Basta fazer os seus Cadastros e utilizar um FTP comum para a tranferência dos dados.
Abaixo estão os sites. Bom aproveito e boa programação!!!!
http://www.webhostme.com
http://www2.ewebcity.com/home/index.asp
http://domaindlx.com
http://www.pointi.com.br
http://developer.netscape.com/docs/manuals/communicator/jsref/index.htm
Em resposta a: Não consigo fazer PWS funcionar... enviado por Alex SS Amaral em 08 de Março de 2000 às
09:21:44:
1) Abra o gerenciador, vá em avançado, e adicione uma pasta virtual, ex. meusite, indicando o caminho fisico.
Marque Executar e Script.
2) Veja no gerenciador, o enereço http de sua maquina (se o serviço não estiver iniciado, clique no botão iniciar).
Deve ser parecido com http://nomedomeucomputador
3) Abra o browser e digite http://nomedomeucomputador. Se aparecer a pagina do IIS, está OK.
4) Digite http://nomedomeucomputador/meusite.
Em resposta a: Re: Não consigo fazer PWS funcionar... enviado por CArlos ALberto em 08 de Março de 2000 às
10:49:07:
Com relaçao a este assunto tenho algumas informações para somar e duvidas a tirar
- quando faço testes com paginas asp usando o endereço físico no blowser onde se encontra a homepage que criei
(ex: c:/webshared/wwwroot/intranet). Ao chamar uma página asp, me aparece a tela com a opçao de salvar no disco
ou abrir a pagina.
- quando uso o endereço virtual http://marcos/intranet me aparece a pagina default do ie 5 dizendo que a pagina não
foi encontrada.
- antes de rodar a homepage tenho que ativar o servidor PWS tanto http como o ftp.
- gostaria de saber por que nao funciona o asp usando o endereço virtual. Se alguem souber de mais informações
agradeço
Companheiros,
Tenho o seguinte:
o cara vai digitar um CGC e o o sistema busca na base para imprimir os dados em tela.
O registro existe, tanto que ele não entra na parte de final de arquivo.
set Conexao=Server.CreateObject("ADODB.CONNECTION")
ConnString="DBQ=c:\inetpub\wwwroot\ntcweb\_private\Entidade.mdb;DRIVER={Microsoft Access Driver
(*.mdb)}"
Conexao.Open ConnString
Consulta="Select * From Clientes Where cnpj ='"& Request.Form("cnpj") & "'"
Set Rs = Conexao.Execute(Consulta)
If Rs.Eof then
Response.write "Registro não encontrado ..."
Else
vcontrole=request.querystring("controle")
vempresa=request.querystring("empresa")
vendereco=request.querystring("endereco")
$%
set Conexao=Server.CreateObject("ADODB.CONNECTION")
ConnString="DBQ=c:\inetpub\wwwroot\ntcweb\_private\Entidade.mdb;DRIVER={Microsoft Access Driver
(*.mdb)}"
Conexao.Open ConnString
Consulta="Select * From Clientes Where cnpj ='"& Request.Form("cnpj") & "'"
Set Rs = Conexao.Execute(Consulta)
If Rs.Eof then %#
$H1# NÃO ENCONTRADO $/H1#
$% Else %#
$% = rs.fields(0).value %#
$% = rs.fields(1).value %#
$% = rs.fields(2).value %#
$% = rs.fields(3).value %#
$% = rs.fields(4).value %#
$% = rs.fields(5).value %#
$% End If %#
fields(0....n) retorna o conteúdo contido no campos do registro.
Por nada Marcelo
Em resposta a: Onde Hospedar Gratis HP que Suporte ASP/Access enviado por Marcos Kako em 05 de Março de
2000 às 18:45:15:
Marcos,
Uma ótima, que além de suportar ASP/Access, é em português, e trás muitas outras vantagens, é a POINTI.
(www.pointi.com.br)
Em resposta a: Nao consigo usar o WSP = SOCORRO = TUTORIAL enviado por Carlos Alberto em 25 de
Fevereiro de 2000 às 23:53:22:
Se voce instalou o PWS, então já pode rodar seu script ASP em sua maquina. Coloque o diretorio com as paginas
ASP abaixo do diretorio WEB do PWS (em geral na pasta C:\inetpub\wwwroot\) , por exemplo,
C:\inetpub\wwwroot\teste. Abra o nevegador e defina em Exibir, Opcoes da Internet, Conecção o uso de Conectar-se
a Internet Usando Rede Local.
Digite como endereço o nome de sua maquina ou IP (se nao souber, clique duas vezes no icone do PWS que fica na
barra de INICIAR e veja qual é), por exemplo http://oraculo/teste/pagina.asp
Lembre-se que para funcionar o acesso ao MDB deve ser reconfigurado como se sua maquina fosse o servidor, por
exemplo:
set conn = server.createobject("adodb.connection")
conn.open "DBQ=C:\inetpub\wwwroot\teste\arquivo.mdb;Driver={Microsoft Access Driver (*.mdb)};"
Pronto, seu ASP vai funcionar como se estivesse no servidor.
Desenvolvi uma pagina em ASP com acesso a banco de dados. Uma parte do codigo segue abaixo:
%
dim rstemp, con, SQL
set con = Server.CreateObject("ADODB.Connection")
con.ConnectionTimeout = Application("Conn1_ConnectionTimeout")
con.CommandTimeout = Application("Conn1_CommandTimeout")
con.Open Application("Conn1_ConnectionString"), Application(Conn1_RuntimeUserName),
Application("Conn1_RuntimePassword")
Essas "Application" estao declaradas no Global.asa.
Na linha con.open application... dá o seguinte erro:
Provider error '80040154'
Class not registered
/validacao.asp, line 7
Será que alguem poderia me ajudar, preciso de uma solucao com urgencia. O computador onde eu rodei essa pagina
é um WinNT, com IIS4. Nao possui ferramentas para desenvolvimento de asp, como o InterDev.
Agradeço qualquer ajuda.
Carinha, é o seguinte, para cada APPLICATION, você precisa declarar um Con.Open. Dessa forma, declare da
seguinte forma:
con.Open Application("Conn1_ConnectionString")
con.Open Application("Conn1_RuntimeUserName")
con.Open Application("Conn1_RuntimePassword")
Não se esqueça, também das aspas na segunda application
É que eu estou fazendo a conexao com o banco via ODBC. E as variaveis com os parametros estao declaradas no
Global.asa. Valeu pela a sua ajuda, mas o problema, acredito eu, é no objeto ADODB.CONNECTION.
Em resposta a: ASP PARA IMPRIMIR A PAGINA enviado por Regis W. Silva em 17 de Fevereiro de 2000 às
15:33:13:
Caro Colega;
Use em javascript mesmo :
window.print() - Só tá pronto!
Gostaria de saber aonde os dados das variaveis sessions sao armazenadas, se no servidor ou na maquina cliente.
Se for no servidor, como ele sabe diferenciar um usuario do outro e como ele sabe quando um usuario fechou o
browser apagando a session dele?
Se for no cliente, aonde ele grava essa variavel, se no cookie ou outro lugar, e como o servidor puxa esses dados?
Por favor me corrijam se eu estiver errado, mas me parece que os dados são armazenados no servidor, mas na hora
em que é aberta a sessão ele envia um cookie para a máquina do usuário (para identificação). A sessão é encerrada
quando o usuário fecha o browser ou quando ocorre o timeout da sessão. O timeout tem como valor default 20
minutos, mas pode ser configurado para valores diferentes
Só complementando, a sessão também pode ser encerrada explicitamente, utilizando o método "Session.Abandon".
Assim, é comum colocar uma opção de "Logout" na página.
A variável de sessao fica gravada no servidor. Porem cada Browser de cada usuario QUE ACEITA COOKIE ,
possue um "Session ID". A partir desta informação recuperada pelo servidor, sabe-se qual o valor da variável de
sessão deste usuário...
Em resposta a: Como posso trocar banners em uma página carregada? enviado por Rogerio Teixeira em 15 de
Fevereiro de 2000 às 17:44:37:
Eu fiz o seguinte, eu criei um banco de dados para colcar os banners, cada registro tem um ID (numero), nome da
figura, URL e um título.
O ID é feito em sequencia (1,2,3,4,5,....)
Em
http://www.asp101.com/samples/random_number.asp
tem um código pra gerar números aleatórios, eu coloquei esse número aleatório numa consulta por ID... então toda
vez que carrega a página ele gera um número que é jogado numa consulta por ID...
Vc pode definir o intervalo em que o número vai variar... por isso o ID tem que ser sequencial pra não corra o risco
de gerar um número que não exista no banco de dados...
E esse código de número aleatório pode ser alterado e fazer com que ele gere mais de um número aleatório...
podendo fazer com que apareça mais de um banner diferente na mesma página...
A explicação tá meio bagunçada (num sei explicar nada)... mas acho que dá pra entender... qualquer coisa deixe uma
mensagem aqui...
Isto é simples!
O que normalmente é feito é o seguinte:
Uma dúvida. A tag IFRAME funciona no Netscape 4.7 ? Fiz um teste e parece nao funcionar.. Está correto?
==========
Temos dois conceitos importantes que podem ser aprendidos aqui. Variáveis de sessão valem para a sessão de um
usuário, ou seja, se eu estou navegando pelo site e uma página preenche uma variável de sessão para mim, ela vale
apenas para minha navegação, outra pessoa terá outra variável de sessão, inclusive podendo ter outro valor. Não se
preocupe, elas não se mistura.
Existem as chamadas variávels de aplicação (application) que são únicas para o site todo. neste caso, todas as
sessões enxergam o mesmo valor. Suponhamos que durante a navegação uma página ASP quando eu a executo
coloca o valor 1 em uma variável de aplicação:
application("exemplo")=1
Se outro usuário estiver navegando em outra página que ler esta variável verá também o valor 1, diferente do que
acontece com as variáveis de sessão.
A partir daí, durante esta sessão, ela terá este valor, até que você a mude através de uma nova atribuição ou que a
sessão expire. Para encerrar uma sessão isto pode acontecer basicamente de três maneiras.
- usando o comando session.abandon;
- quando o usuário fecha o browser;
- quando ocorre um timeout, pois o tempo de sessão é definido no servidor, normalmente 15 ou vinte minutos.
================================================================================
Acho que não consegui me explicar direito. Eu sou o responsável pelo site. Tenho um arquivo que vou disponibilizar
para download. Crio um link para este arquivo .doc que está no servidor. Dependendo das configurações do IE do
cliente, este arquivo .doc abre dentro do frame da minha aplicação, ao invés de fazer a clássica pergunta: quer salvar
este arquivo?
Gostaria de saber se existe uma tag ou algo que o valha que eu possa obrigar o browser cliente a fazer o download e
não abrir o documento no frame da minha aplicação.
Creio que eu não tenho como fazer isso, mas em todo caso...
if browser_unabled then
response.redirect "url_do_DOC"
ou então
window.location='url_do_DOC';
se vc preferir javaScript
Se o browser não tem uma referencia para abrir o arquivo (como teoricamente já verificado antes), ele
vai abrir a janela para download.
A session expira automaticamente, se não me engano em 15 min, vc pode diminuir essa configuração no
servidor ou então no prg:
session("suasessão")=""
A propósito, você pode baixar uma versão trial de 30 dias na página www.aspupload.com
Preciso de ajuda. Alguém sabe de algum servidor GRATUÍTO que suporte ASP, que não seja o www.point.com.br (é
uma &%$#*@, sai sempre fora do ar e é lento), www.ewebcity.com (também sai direto do ar e não tem como eu ver
E-Mail a partir dele) ou o www.webhostme.com (só pode ser atualizado via ftp)??? Qualquer coisa, menos esses
três... Aguém me ajude!!!!
www.pointi.com.br
Olá a todos.
Meu problema é que executo uma página ASP que faz uma consulta simples a um BD (na verdade simplíssima)
chamada de um formulário. Na primeira vez tudo funciona beleza. Só que na SEGUNDA VEZ tudo trava. O que
pode ser? Uso PWS 4.0, Win 98 e Access 97.
PS.: Estou usando o método .Close para fechar a conexão e o RecordSet; estou usando Set Conexao = nothing e Set
Rs = nothing também. Por isso não encontrei uma explicação convincente.
Desculpem pois não posso mandar o fonte agora. Se acharem necessário mandarei-o-o.
O erro é:
(Microsoft OLE DB provider for ODBC drivers error '8000405' - Could not use '(unknown)', file already in use ).
O sistema operacional em que está rodando o meu sistema é Windows Nt 2000 e o banco de dados é Access.
Você saberia dizer qual pode ser a causa do erro. Ficaríamos muito gratos se obtivéssemos uma resposta.
Se sim, verifique na configuração do ODBC, se não está sendo aberto em modo exclusivo !
Em resposta a: Conexão de banco de dados em pasta virtual enviado por Gustavo em 13 de Março de 2000 às
18:55:38:
Abrir página
http://www.allnet.com.br
depois entrar em SUPORTE
DEPOIS EM FAQ
DEPOIS EM ASP
e lá está explicando detalhadamente.
Depois de terminado e hospedado o seu site, temos que colocá-lo nos principais sites de
busca na Internet, senão ninguém irá saber que ele existe! Afinal, a propaganda é a alma
do negócio!
Para cadastrar seu site em um catálogo, você entra no site e geralmente há um local
(normalmente conhecido como "inclusão") onde você preenche os dados do seu site. Dentro
de alguns dias ou semanas, o seu site estará constando no sistema de busca.
Nos motores de busca, você tem que ter no seu site meta tags específicos (veremos como
fazê-los mais adiante) que irão conter as informações sobre o seu site ou página que
servirão para alimentar a base de dados do sistema de busca. A visita do robô ao seu site
pode ser agendada, bastando para isso ir no site de busca e marcar a visita.
Existem vários sites na Internet que realizam o cadastro automático em 20, 100 ou 20.000
mecanismos de busca. Alguns são gratuitos e outros cobram uma pequena taxa. A
vantagem disso é que você tem que preencher os dados do seu site em apenas um único
momento.
Bem, opinião pessoal minha é que cadastrar seu site em mais de 20 mecanismos de busca é
perda de tempo, pois é fato que, mais de 90% das visitas aos mecanismos de busca
nacionais se concentram no Cadê, Yahoo!, Família Miner (que usa o cadastro do Cadê),
Zeek e Radar UOL. Portanto, cadastrando nesses sites (e mais os que listo mais adiante) é o
caminho para o melhor retorno. Não quero menosprezar os outros mecanismos de busca
(existem centenas no Brasil), mas o retorno que eles te darão não compensará o esforço
para cadastrar o seu site neles. O mesmo vale para os mecanismos de busca no
estrangeiro. Cadastre o seu site nos mecanismos listados mais adiante.
O grande ponto para seu site aparecer nas buscas dos internautas nos mecanismos de
busca é a descrição do seu site. Qualquer palavra da descrição é usada na busca. Por isso,
tente colocar o máximo de palavras-chave que possam estar relacionadas com seu site na
descrição. Por exemplo, veja a descrição de um site sobre programação, por exemplo.
Vamos supor que você seja um programador em Delphi e esteja procurando um site sobre
Delphi. Que palavra você digitaria em um mecanismo de busca: "programação", "Delphi" ou
"Programação Delphi"? Em qualquer uma das três tentativas, seria mostrada a segunda
descrição do site. A primeira descrição só apareceria se o navegador tentasse buscar por
"Programação".
Como já vimos, para os spiders dos motores de busca conseguirem alguma informação
sobre o nosso site, temos que fornecê-las a eles através das meta tags. Existe um artigo na
seção HTML (veja aqui) fornecendo mais informações sobre meta tags. Aqui só ilustrarei
quais tags você tem que por na seção head da sua página.
<HEAD>
<TITLE>Título do site</TITLE>
<META NAME=DESCRIPTION CONTENT="descrição do site">
<META NAME=KEYWORDS CONTENT="lista de palavras-chave adicionais">
</HEAD>
Basicamente, são as informações acima que são usadas pelos motores de busca (pode
ocorrer algumas variações, dependendo do mecanismo de busca. Para saber se existe algo
diferente a ser configurado em sua página, é bom que se visite o site do serviço). Já
falamos sobre a importância da descrição do site, referenciada pela variável DESCRIPTION,
mas outra tag importante é a KEYWORDS. Nela você fará uma relação de palavras-chave
que não aparecem na descrição, mas que também serão usadas na busca. Essas palavras
devem ser separadas por vírgula.
Brasil
Achei (http://www.achei.com.br)
- Catálogo
Cadê (http://www.cade.com.br)
- Catálogo
GlobalMedia (http://www.globalmedia.com.br)
- Catálogo
IMais (http://www.imais.com.br)
- Catálogo NOVO! (16/11/1999)
RadarUOL (http://www.radaruol.com.br)
- Motor de busca
Exterior
Altavista (http://www.altavista.com)
- Motor de busca
AOL (http://netfind.aol.com)
- Motor de busca
Excite (http://www.excite.com)
- Motor de busca
Hotbot (http://www.hotbot.com)
- Motor de busca
Infoseek (http://www.infoseek.com)
- Motor de busca
Lycos (http://www.lycos.com)
- Motor de busca
Webcrawler (http://www.webcrawler.com)
- Motor de busca
Yahoo! (http://www.yahoo.com)
- Catálogo
Nacional
Exterior
Pela definição encontrada no help do FrontPage 98, um Meta Tag é "um tag
HTML que aparece na seção <head> da sua página. Ele fornece informações
sobre a página mas não afeta a sua aparência". Por exemplo, um meta tag
padrão, "generator", é usado para indicar o tipo de editor que criou a sua
página HTML. É por isso que, em qualquer página criada no FrontPage,
aparece esta linha na porção <head>:
HTTP-EQUIV="name" CONTENT="content"
NAME="name" CONTENT="content"
<meta HTTP-EQUIV="refresh"
CONTENT="5;URL=http://www.teste.com.br/page.htm">
Pragma - Com o valor "no-cache", faz com que o browser não coloque a
página no cache local.
<meta HTTP-EQUIV="Refresh"
CONTENT="3;URL=http://members.tripod.com/marcalhokama/index.htm">
Temos dois conceitos importantes que podem ser aprendidos aqui. Variáveis de sessão valem para a
sessão de um usuário, ou seja, se eu estou navegando pelo site e uma página preenche uma variável de
sessão para mim, ela vale apenas para minha navegação, outra pessoa terá outra variável de sessão,
inclusive podendo ter outro valor. Não se preocupe, elas não se mistura.
Existem as chamadas variávels de aplicação (application) que são únicas para o site todo. neste caso,
todas as sessões enxergam o mesmo valor. Suponhamos que durante a navegação uma página ASP
quando eu a executo coloca o valor 1 em uma variável de aplicação:
application("exemplo")=1
Se outro usuário estiver navegando em outra página que ler esta variável verá também o valor 1,
diferente do que acontece com as variáveis de sessão.
A partir daí, durante esta sessão, ela terá este valor, até que você a mude através de uma nova
atribuição ou que a sessão expire. Para encerrar uma sessão isto pode acontecer basicamente de três
maneiras.
- usando o comando session.abandon;
- quando o usuário fecha o browser;
- quando ocorre um timeout, pois o tempo de sessão é definido no servidor, normalmente 15 ou vinte
minutos.
Estou com um problema em indicar o caminho do meu bd em meus scripts. Eu tenho um banco que esta em um
diretorio e quero que uma pagina que esta em outro diretorio (dentro do que contem o bd) possa acessar esse banco.
tentei o server.mappath mas nao funcionou. Alguma sugestao?
Alzair obrigado pela ajuda, mas continua sem funcionar. O problema e o seguinte:
o banco esta em www.paulo.com.br/banco1.mdb
porem as paginas que acessarao o banco estao em:
www.paulo.com.br/diretorio1/pagina.asp.
assim quando uso o server mappath ele retorna o endereço da pagina um e nao do diretorio do banco.
Recordcount continua retornando -1, já estou p.... enviado por Felippe em 23 de Março de 2000
às 08:40:52:
Você não deve estar usando o tipo de cursor correto. Veja :
(...)
SQL = "Select * form produtos where codprod = '" & CodDigitado & " ' "
Rs.Open Sql, Conexão, 3, 3
Response.write "Foram Encontrados "& Rs.RecordCount & "registros"
(...)
Onde : Rs.Open Sql, Conexão, 3, 3
Tipo de Cursor : Static (3)
Tipo Trava : Batch Otimistic (3)
Programo em VB e quando acontece isso:
Mova o cursor para o ultimo registro e logo apos mova o cursos para o primeiro de volta e puxe
o recordcount.
: Diferenca entre Method Post e Get enviado por Celso em 11 de Março de 2000 às 23:31:56:
Celso,
Não tenho uma resposta técnica para te dar, vou falar sobre a minha opinião pessoal.
O método POST é mais "limpo" pois não fica passando parâmetros na cara do usuário, às vezes
pode até ser inseguro isso.
Já o método GET tem uma vantagem que costumo usar. Se você está numa página ASP e precisa
passar um parâmetro para outra página que está chamando
procuro passar o parâmetro através da URL sempre que possível. uns preferem usar variáveis de
sessão, mas creio que onera o servidor sem necessidade e se você tem muitos acessoa ao site
pode ser que o número de variáveis de sessão tenha que ser controlado.
Neste caso faço um response.redirect para a página com a variável na URL, do tipo "teste.asp?
msg=1001" e na página teste.asp faço um request.querystring("msg").
Fora este caso, uso sempre POST.
Este é jeito que trabalho, outros podem ter explicações melhores e neste caso também gostaria de
conhecê-las.
Abraços, Ben Hur
Interessante... lendo as perguntas e respostas acima, não sabia que dava pra desabilitar o textarea.. é. vivendo e
aprendendo
Caro "Alguém"
Nao so TEXTAREA, mas qualquer campo do formulario pode ser desabilitado utilizando as
propriedades informadas acima - "disabled" e/ou "readonly"
Digite a baixo o assunto e o texto da mensagem que será enviada a todos os cadastrados.
<%
function enviar_email(de_email,de_nome,para_email,para_nome,assunto,texto)
Set objmail = Server.CreateObject("CDONTS.NewMail")
objmail.from = de_email
objmail.to = para_email
objmail.subject = assunto
objmail.body = texto
objmail.send
Response.Write "Email enviado para : " & para_nome & " || " & para_emailtime & "
wend
rsquery.close
set rsquery = nothing
set conn = nothing
%>
Hoje em dia, a maioria dos programas de recebimento de e-mail já aceitam tags HTML.
Levando em consideração tal número, porque não enviar e-mails utilizando essas tags?
Essas tags permitem a inserção de imagens, links, mudança de cor e tamanho das fontes,
permitindo a confecção de e-mails mais bonitos e organizados. Abaixo, segue um exemplo
utilizando o objeto ASPMAIL, da ServerObjects.
Enviando E-mail
<%
ConnString="DBQ=e:\aspbrasil\teste.mdb;Driver={Microsoft Access Driver
(*.mdb)}"
sqlstmt = "select nome, email from cadastro"
Set Conn = Server.CreateObject("ADODB.Connection")
set rsquery = conn.execute(sqlstmt)
if x = true then
MSG = "E-MAIL ENVIADO COM SUCESSO!"
nr_emails_corretos = nr_emails_corretos + 1
Else
MSG = " O E-MAIL NÃO FOI ENVIADO COM SUCESSO!"
nr_emails_errados = nr_emails_errados + 1
end if
nr_geral = nr_geral + 1
Response.write nr_geral & " - " & MSG
rsquery.movenext
wend
rsquery.close
set rsquery = nothing
set conn = nothing
%>
Você tem um banco de dados online, com vários nomes cadastrados e gostaria de enviar e-
mails a todas essas pessoas? O ASPMail é uma opção simples e fácil. Grande parte dos
servidores possuem tal objeto, que é uma dll que pode ser encontrada na serverobjects, e
tem como função o envio de e-mail a partir de formulários (vide tutorial anterior) bem como
a partir de bases de dados.
<%
ConnString="DBQ=e:\aspbrasil\teste.mdb;Driver={Microsoft Access Driver
(*.mdb)}"
sqlstmt = "select nome, email from cadastro"
Set Conn = Server.CreateObject("ADODB.Connection")
set rsquery = conn.execute(sqlstmt)
nr_emails_corretos = 0
nr_emails_errados = 0
nr_geral = 0
if x = true then
MSG = "E-MAIL ENVIADO COM SUCESSO!"
nr_emails_corretos = nr_emails_corretos + 1
Else
MSG = " O E-MAIL NÃO FOI ENVIADO COM SUCESSO!"
nr_emails_errados = nr_emails_errados + 1
end if
nr_geral = nr_geral + 1
Response.write nr_geral & " - " & MSG
rsquery.movenext
wend
Como enviar e-mails por páginas Web? O ASPMail é uma opção simples e fácil. Grande
parte dos servidores possuem tal objeto, que é uma dll que pode ser encontrada na
serverobjects, e tem como função o envio de e-mail. Abaixo segue um exemplo de como
pode ser utilizado o ASPMAIL.
Enviando E-mail
<FORM METHOD="post" ACTION="enviar_email.asp" name="">
Nome:
<INPUT TYPE="text" NAME="nome" SIZE="20">
E-mail:
< INPUT TYPE="text" NAME="email" SIZE="20">
Assunto:
< INPUT TYPE="text" NAME="assunto" SIZE="20">
Texto:
< TEXTAREA NAME="texto" cols="25" rows="10"></textarea>
< INPUT type="submit" name="Submit" value="Enviar" font face="Verdana,
Arial, Helvetica, sans-serif" size="2">
</FORM>
x = Mailer.SendMail
if x = true then
Else
end if
Response.write MSG
Acima uma condição onde se o E-mail for enviado com sucesso ele mostrará a MSG!
Por ser uma das formas mais antigas de armazenamento de dados, e também uma das
mais simples, os arquivos TXT ainda são uma grande arma no armazenamento de
informações, e como tal, tem seu destaque na linguagem ASP. Integração de diferentes
bases de dados a baixo custo, armazenamento de grande quantidade de informação não
padronizada e aceitabilidade em 100% dos sistemas operacionais são algumas das
características/vantagens dos arquivos TXT.
<!--#include file="fobjvbs.inc"-->
'as linhas abaixo faz a conexão com o objeto FileSystemObject e abre o arquivo txt
especificado.
Set fs = CreateObject("Scripting.FileSystemObject")
Set thisfile = fs.OpenTextFile(path_do_arquivo & nome_do_arquivo, forreading, False)
'as linhas abaixo lêem o arquivo TXT e então escrevem o seu conteúdo no Browser.
linha_txt = thisfile.readline
response.write linha_txt
wend
thisfile.Close
set thisfile=nothing
set fs=nothing
%
Seguindo com o minitutorial sobre arquivos TXT, iremos abordar a criação de arquivos TXT
e também a adição de dados a este arquivo. Exemplificaremos tais ações com o código de
geração de arquivos LOG, que funciona da seguinte forma: Todo dia é criado um arquivo
TXT, cujo nome é a data no formato invertido (aaaa/mm/dd). Para cada usuário que acessa
uma página onde existe essa rotina, o arquivo TXT especificado recebe uma linha a mais.
Caso este arquivo não exista, ele é criado, deixando assim o sistema totalmente
automatizadol.(o primeiro acesso de cada dia irá perceber a falta do arquivo TXT do dia, o
qual é criado neste momento.)
<%
path_do_arquivo = "e:/teste/"
Dia = Day(Date())
if Dia < 10 then Dia = "0" & Dia
Mes = Month(Date())
if mes < 10 then mes = "0" & mes
Ano = Year(Date())
'a linha abaixo gera o nome do arquivo de acordo com o dia. (todo dia tem que ser criado
'abaixo, é feita a verificação da existência do arquivo procurado. Caso ele ainda não exista
(o que ocorre 1 vez por dia, no primeiro acesso), ele é criado
If ObjFSO.FileExists(arquivo) = False then
'abaixo, a linha que cria o arquivo TXT especificado
objFSO.CreateTextFile(arquivo)
End If
'a linha abaixo abre o arquivo desejado. Lembre-se, ou ele já existe ou ele foi criado na
rotina acima.
Set ObjFile = objFSO.GetFile(arquivo)
'a linha abaixo diz o tipo de manipulação que será utilizada no arquivo TXT, no caso é para
adicionar dados.
Set objStream = ObjFile.OpenAsTextStream(forAppending,TriDef)
'abaixo, são criadas algumas variáveis com valores que serão colocados no LOG (hora, IP,
versão do Browser)
Hora = Time()
IpNum = Request.ServerVariables("REMOTE_ADDR")
BrowVer = Request.ServerVariables("HTTP_USER_AGENT")
%>
Quem ainda não teve dificuldades em marcar encontros na Internet devido à grande
confusão ocasionada pelos fuso-horários e mudanças devido aos horários de verão ou
inverno? Pensando nessa confusão, a Swatch (aquela que fabrica relógios esquisitos e
despojados) criou o .BEAT.
O .BEAT é o horário mundial da INTERNET, e em qualquer lugar que estivermos, ele terá o
mesmo valor. Nessa nova medida de tempo, não existem fuso-horários nem horários de
verão ou inverno. A contagem também é diferente. Ao invés de dividir o dia em horas,
minutos e segundos, a Swatch dividiu o dia em 1000 BEATS. Cada .BEAT equivale a 1
minuto e 26.4 segundos. O símbolo utilizado para representar o BEAT é o @, e o BEAT
@000 equivale às 0:00 horas de BIEL, a cidade suiça onde a Swatch está sediada.
Para converter o horário local em BEAT, é necessário saber o fuso horário do local em
relação à Biel. No horário de Brasilia, estamos a -3 horas em relação a Biel. Não podemos
esquecer que, no horário de verão, a diferença aumenta para -4 horas.
Se soubermos quantos segundos se passaram das 0:00 horas até o momento desejado e
adicionarmos as 3 horas de fuso horário (em segundos), e então dividirmos pelo valor de 1
BEAT (86.4 segundos), teremos o horário em BEAT para o horário local desejado.
Observe: