<%

 'configura objeto para conexao via ado
 'Set conn = Server.CreateObject("ADODB.Connection")

 'cria objeto ado para conexao com a base
 'SQLServer
 'conn.Open "Provider=SQLOLEDB;Data Source=192.168.2.2;Initial Catalog=seguranca;User Id=concurso;Password="

 'MySQL
 'strDSN  = "Driver={MYSQL};Server=192.168.0.9;Database=school;Uid=root;Pwd="
 'Set MyConn = Server.CreateObject("ADODB.Connection")
 'MyConn.Open strDSN
 'sql = "select * from pessoa "
 'Set rs = MyConn.Execute(sql)
 'set dsn = rs("dsn")


 'MySQL
 'conn.open = "Provider=MySQL ODBC 4.0.12 Driver;DataSource=school;UserID=root;Password="


 'montagem do sql
 'SQL= "insert into atendimento values ( "&request("id")&""

 'conecta a base para pesquisa do dsn
 'set rst = conn.execute(sql)

 'atribui valor resultante a variavel dsn
 'set dsn =  rst("dsn")

 'MyConn.close
 'set MyConn= nothing


Veja exemplos de uma sub e uma funo :

Sub Imprimir
Response.write "Hello World From Sub"
End Sub

Function Calcular

Dim Res
Res=10*2
Calcular=Res

End Function

 interessante observar que a ltima linha da funo realiza o retorno do valor, atribuindo o resultado ao nome da funo. Toda funo deve ter uma linha equivalente para retornar um valor.

Veja como a Sub ser disparada :

Imprimir

E a funo :

x=Calcular()

Observem que ao chamar a funo devemos fazer algo com o valor que ela retornar como resultado. No exemplo acima o valor retornado pela funo est sendo guardado na varivel x. Poderamos chama-la de outras formas, por exemplo, imprimindo o resultado da funo no HTML. Neste caso o cdigo ficaria assim :

Response.Write(Calcular())

Para tornar a tarefa realizada pela SUB ou pela funo genrica  muito comum que elas precisem receber parmetros do ponto em que elas forem chamadas. Digamos que a SUB precise receber o nome de uma pessoa e a funo um nmero para realizar o clculo. Veja como fica o cdigo :

Sub Imprimir(Nome)
Response.write "Hello World From Sub " & nome
End Sub

Function Calcular(numero)

Dim Res
Res=10 * numero
Calcular=Res

End Function


Veja agora a forma de chamar as duas :

Imprimir("Joo)

x=Calcular(20)

Com esses recursos j  possvel utilizar INCLUDEs sem perder muita performance, pois os trechos de cdigo no INCLUDE apenas sero chamados quando necessrio. Mas existe ainda um problema a mais : O volume de linhas no arquivo influencia a performance, pelo fato do ASP ser interpretado. Assim sendo, mesmo melhorando um pouco a performance em relao aos exemplos iniciais, ter um excesso de funes dentro de arquivos de include ainda gera uma degradao de performance.

Isso significa que ser necessrio dividir as funes e subs em vrios arquivos diferentes, minimizando a existencia de funes e subs no utilizadas pela pgina na qual so incluidas. Para manter a ordem desta diviso o melhor mtodo  utilizarmos um ????A?Veja exemplos de uma sub e uma funo :

Sub Imprimir
Response.write "Hello World From Sub"
End Sub

Function Calcular

Dim Res
Res=10*2
Calcular=Res

End Function

 interessante observar que a ltima linha da funo realiza o retorno do valor, atribuindo o resultado ao nome da funo. Toda funo deve ter uma linha equivalente para retornar um valor.

Veja como a Sub ser disparada :

Imprimir

E a funo :

x=Calcular()

Observem que ao chamar a funo devemos fazer algo com o valor que ela retornar como resultado. No exemplo acima o valor retornado pela funo est sendo guardado na varivel x. Poderamos chama-la de outras formas, por exemplo, imprimindo o resultado da funo no HTML. Neste caso o cdigo ficaria assim :

Response.Write(Calcular())

Para tornar a tarefa realizada pela SUB ou pela funo genrica  muito comum que elas precisem receber parmetros do ponto em que elas forem chamadas. Digamos que a SUB precise receber o nome de uma pessoa e a funo um nmero para re recurso de orientao a objetos existente no ASP, mas que poucos conhecem : A criao de classes.

Uma classe pode ser vista como um conjunto de funes e subs que tem um determinado objetivo nico. No pretendo aqui entrar em muitos detalhes da orientao a objetos, definirei apenas de forma bsica para sua utilizao em ASP.

As classes podem ser "reproduzidas" dentro do cdigo. Quando precisa-se utilizar uma classe coloca-se a classe dentro de uma varivel para que ela seja utilizada. Esse processo  chamado de instanciar a classe e a varivel gerada  chamada de uma instncia da classe ou um objeto que tem como tipo a classe.

O agrupamento de subs e funes  realizado com base na analogia a objetos reais. Por exemplo, quais so as atividades feitas por uma faca ? Ela pode cortar carne, fatiar queijo, picar cebola, entre outras coisas. Assim sendo, cada uma das tarefas realizadas por uma faca pode ser vista como uma sub ou funo e tais subs/funes seriam agrupadas dentro de uma classe.

A criao de uma classe  muito simples. Tendo as subs e funes, basta agrupa-las em uma classe. Veja :

Class MinhaClasse

Sub Imprimir(Nome)
Response.write "Hello World From Sub " & nome
End Sub

Function Calcular(numero)

Dim Res
Res=10 * numero
Calcular=Res

End Function

End Class

Feito isso essa classe j pode ser utilizada dentro do cdigo. Para utiliza-la precisaremos instancia-la e a partir de sua instncia chamar os mtodos existentes. Veja :

Dim X
Set X=New MinhaClasse
x.Imprimir("Joo")
Response.Write(X.Calcular(10))
Set X=nothing


Assim sendo, definimos uma varivel X que ir conter a instncia e logo em seguida criamos a instncia (Set X=New MinhaClasse). A partir dai passamos a utilizar as subs e funes existentes dentro da classe. A nica diferena de utilizao  a necessidade de se referir ao nome da instncia. Todas as funes e SUBs contidas em uma classe so chamadas de mtodos.

Por fim, a ltima instruo destroi a instancia da classe.

Vale mencionar ainda ?????A+???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????4??????????????4???????????????????????????????'????????????????????????????????????????????????????????????????????????????????4?4????????????????????????????????4???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????5??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? que uma classe pode conter, alm de subs/funes, informaes que venham a ser utilizadas pelo cdigo da classe. Assim sendo uma instancia da classe contm cdigo e informao. Neste exemplo, podemos fazer com que o nome e o valor a ser calculado sejam guardados dentro da classe. Veja como fica o cdigo da classe :

Class MinhaClasse

Public Nome
Public Numero

Sub Imprimir
Response.write "Hello World From Sub " & nome
End Sub

Function Calcular

Dim Res
Res=10 * numero
Calcular=Res

End Function

End Class

A instruo PUBLIC  equivalente a DIM. S que uma varivel de classe definida como PUBLIC pode ser manipulada fora da classe, quando definida com DIM no. Veja agora o cdigo que utilizar essa classe :

Dim X
Set X=New MinhaClasse
x.Nome="Joao"
x.Numero=10 
x.Imprimir
Response.Write(X.Calcular)
Set X=nothing



%>
<html>
<head><title>Eliel Vieira</title></head>
<body>
eliel
<% =Imprimir("Hello World From Sub") %>
<% =Imprimir %>

</body>
</html>

