Portal Chamar Táxi

Workshop de ASP

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Messenger através de BD em ASP




Simplesmente é só descomprimir o arquivo sobre um diretório virtual e criar um DSN de Sistema com o ODBC de Access redirigido ao BD Access iframe.mdb com o nome BDIframe.

Por David Cornado




A aplicação quer vir a ser uma reprodução do que é a versão web de Microsoft Messenger. A verdade é que a idéia surgiu para comprovar o funcionamento e comportamento dos iframe em ASP. Veremos que a aplicação em si não é tão engenhosa, pois não estabelece comunicação por sockets, nem abre portos no computador, aproveita o mesmo porto 80 do protocolo http e o que faz é apontar as conversações em um BD, o qual adicionalmente salva os usuários registrados, as relações entre eles, ....

Ao executar a aplicação pede um usuário registrado para poder se executar, se você entrar no BD "iframe.mdb" na tabela [tblUsuario] encontrará vários usuários fictícios e senão, poderá criar, já que se pode registrar um usuário novo, se pode modificar o perfil, mudar as vicissitudes, o apelido....

É uma aplicação para realizar várias provas e dela se podem pegar várias idéias, por exemplo, para usá-la como mini chat de serviço técnico, entre empregados de uma empresa pequena que não queiram abrir contas de messenger, ... e mais não nos serve de exemplo de várias funcionalidades de ASP.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Objeto Datagrid de ASP.NET em ASP



Exemplo do objeto Datagrid de ASP.NET em ASP.

Por David Cornado




Descompactar o arquivo rs.zip sobre um diretório virtual, não requer criar nenhum conector ODBC, sim que requer ter o controlador ODBC de Access instalado no sistema já que o usa para trabalhar com o BD Access.

Se executar a página default.asp lhe explicará o funcionamento deste exemplo. Basicamente tenta ser uma resposta ao objeto Datagrid de ASP.NET em ASP, página elementos de uma tabela em ASP, pode-se mudar o número de listagens por página, pode-se ordenar ASC e DESC os campos, têm paginação entre páginas, pode-se realizar buscas, ...

Ademais destas funcionalidades a potência que tem o exemplo é que está realizado cumprindo com a normativa XHTML Strict e CSS2, para aqueles que estejam buscando exemplos de como usar estas técnicas com ASP.

Outro dos fortes deste exemplo, explica na ajuda que realizei, é que é completamente modular, portanto serve para mostrar os resultados de qualquer tabela que se preste, simplesmente modificando os parâmetros adequados da aplicação: tabela, nome dos campos, ... e o resto realiza o código.

Este exemplo foi realizado em 2004 pelo qual pode parecer algo ultrapassado atualmente, mas até então se começava a ouvir o que era XHTML e CSS2.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Percorrer campos de formulário complexos em ASP




Explicamos como percorrer campos de formulário nos que recebemos mais de um valor por campo.

Por Carlos Cuenca Díaz





Não deveria significar um problema percorrer os campos de formulário correntes, como campos de texto, botões de radio, textareas, etc, onde só se envia um dado vinculado a tal campo. Faz-se com o método form do objeto request, indicando entre parênteses o nome do campo que queremos percorrer.

minha_variavel = request.from("nome_campo")

Para àqueles em que isso parecer novo, podemos encontrar no Manual de ASP um capítulo onde se detalha o processo de percorrer dados do formulário. Nós neste artigo vamos tratar de explicar um método para percorrer dados um pouco mais complexos, onde podem nos enviar vários valores dentro de um mesmo campo de formulário. Teoricamente, vamos tratar de extrair os dados de um campo de formulário "Select multiple" que se consegue com as seguintes etiquetas HTML:

<select name="time" multiple>
<option value="Madrid">Madrid
<option value="Barcelona">Barcelona
<option value="Valencia">Valencia
<option value="Bilbao">Bilbao
<option value="Sevilla">Sevilla
<option value="ATMadrid">At. Madrid
<option value="Cadiz">Cadiz
<option value="Dep. Coruña">Dep. Coruña
<option value="Santander">Santander
</select>

Colocamos um select normal que tem o atributo múltiplo, que vemos que não se iguala a nada, simplesmente se coloca se quisermos que o usuário possa selecionar várias opções. Para isso, deveria selecionar uma das opções e com a tecla de Control (Ctrl) ou maiúsculas (A setinha para cima) selecionar outra opção. Se se utiliza a tecla de Control se selecionam as duas opções, a que havia e a nova. I se utiliza maiúsculas se selecionariam todas as opções entre a primeira e a última. Podemos praticar a selecionar várias opções, para quem o deseje, com o campo de abaixo


Como chegam os dados

Quando recebemos este campo de formulário nos chegam todos os valores que um usuário tiver selecionado, separados por vírgulas. Assim, um valor possível que se pode receber pelo formulário seria o seguinte:

Madrid, Barcelona, Valencia, ATMadrid, Dep. Coruña

Este valor o obteremos utilizando o objeto request de ASP, tal como comentávamos antes. Para acessar a esse dado escreveríamos.

request.form("time")

O método request.form nesse caso devolve, como indicávamos, todos os times selecionados separados por vírgulas. De maneira adicional, podemos tratar o valor devolvido como uma coleção, que é uma estrutura de dados especial, parecida aos arrays, que se percorrem facilmente com um loop FOR EACH.
Referência: Temos um workshop de ASP no qual fazemos um par exemplos do loop FOR EACH para percorer arrays e coleções.


Em algum caso pode nos interessar inverter a informação dessa coleção a um array para tratar logo dos times em outros processos. Como prática também pode ser útil ver como se faria e de passo, conhecemos um pouco melhor o loop FOR EACH.

Construir o array

Nosso exercício requer um array que tenha um número indeterminado de campos, que depende do número de valores que recebamos desde o campo <select> do formulário. Se quisermos fazer isto bem vamos necessitar um array dinâmico, ao que iremos atribuindo posições segundo o necessitemos. No Manual de Visual Basic Script podemos encontrar a explicação sobre como tratar arrays dinâmicos.

dim times()
redim times(0)

Assim criamos o array e lhe indicamos que vamos utilizar como índice máximo o zero, que corresponde com um campo, times(0).

Script para colocar os dados em um array

Vamos fazer um script que se encarregue de preencher o array com todos os valores do campo. Tal script percorre a lista de valores que chegam do formulário e os introduz no array, ao mesmo tempo em que vai aumentando em um campo o espaço do array antes de adicionar um novo elemento.

Dim times(), I
I = 0
For Each Valor In Request.Form("time")
Redim Preserve times(I)
times(I) = Valor
I = I + 1
Next

Começamos o script declarando o array (sem definir seus campos, para poder redimensiona-lo dinamicamente) e uma variável para levar a conta dos valores introduzidos, que iniciamos a zero na seguinte linha.

O loop FOR EACH percorre cada uma das posições da coleção Request.Form("time") e em cada iteração introduz em uma variável, neste caso chamada Valor, o conteúdo da posição atual. Uma vez dentro do loop se redimensiona o array preservando seu conteúdo prévio (redim preserve) para que contenha as posições necessárias para armazenar os valores que vamos extraindo da coleção. Dito de outra forma, em cada iteração criamos uma nova posição (salvando todas as posições anteriores) e introduzimos na posição criada o conteúdo da variável. Valor, que salvava a posição atual da coleção. Por último, incrementamos em um o número de posições que deve conter o array, para utilizá-lo se voltamos a passar pelo loop.
Nota: Podíamos ter criado um array utilizando a função split, incorporada em VBScript. Tal função recebe uma cadeia e um separador e devolve um array onde em cada campo se introduziu uma sub-cadeia criada ao romper por cada separador.

De modo que, a partir do request.form("time") (que é também uma cadeia onde cada valor aparece separado por uma vírgula), aplicando a função Split e indicando que o separador é o caractere vírgula (,), obteremos o array desejado.

times = Split(request.form("time"),",")

Este método é muito rápido e simples, mas poderia falhar se um dos valres do select contiver uma vírgula.


Espero que com tudo isso, tenhamos podido encontrar sentido ao exercício e seja válido como prática de VBScript e da tecnologia ASP.



 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Percorrer valor do campo auto-numérico depois de inserir em ASP




Ao fazer uma inserção de um registro em uma tabela, se o identificador for auto-numérico, geralmente não sabemos qual terá sido. Aqui ensinamos a obter o identificador depois da inserção.

Por Carlos Cuenca Díaz





Quando em um banco de dados temos duas tabelas relacionadas com uma relação um a vários, a chave primária da tabela com cardinalidade 1 se encontra na tabela com cardinalidade n como chave forasteira. Normalmente as chaves primárias costumam utilizar campos de tipo auto-incremento.

O presente artigo detalha como averiguar o valor que se atribui à chave primária em uma operação de inserção, para desta maneira poder introduzir registros na tabela relacionada que conta com a chave forasteira.

Para o exemplo, utilizaremos as seguintes tabelas:



tablas_recoger_id.gif



À princípio vamos supor que temos um novo pedido para o qual temos que adicionar vários detalhes. Neste suposto, necessitamos inserir primeiro o pedido, recolher o valor que o banco de dados lhe atribuiu ao campo IdPedido, e a seguir inserir os diferentes detalhes com esse valor de IdPedido.

Para fazer isto, vamos utilizar um objeto recordset:

Dim rspedidos
Set rspedidos=Server.CreateObject("ADODB.Recordset")

A seguir abrimos o Recordset:

With rspedidos
.open "Pedidos" ,adOpenDynamic, AdLockOptimistic,adCmdTableDirect

adOpenDynamic: Cursor que não tem um conjunto único de registros, e no que as mudanças serão visíveis no recordset.
AdLockOptimistic: O registro não se bloqueia até que não se inseriram os dados
adCmdTableDirect: serve para indicar o nome da tabela

A combinação de cursor, tipo de bloqueio e se o campo estiver indexado ou não faz com que possamos percorrer o campo ID, outras combinações podem não funcionar.

A seguir, criamos um novo registro, e inserimos nos valores dos campos:

.AddNew
.Fields("idcliente")=16
.Fields("cargo")=500
.Fields("destinatario")="pepe"

Uma vez introduzidos todos os valores dos campos, se atualiza o recordset.

.update

E a seguir, tiramos o ID que o banco de dados lhe atribuiu:

MiID= .Fields("IdPedido")
End With

Agora contamos com uma variável meuID que nos permite fazer os inserts correspondentes no banco de dados, assim como recordsets ou com sentenças sql do tipo Insert Into.
Nota: Vimos como inserir registros em ASP, porém até agora sempre havíamos explicado outro método, consistente em construir a sentença SQL para a inserção e ejecutando-a por meio do método execute() do objeto connection. Podemos ver esse tipo de inserções no artigo Creação de um novo registro


Código completo:

Dim rspedidos
Set rspedidos=Server.CreateObject("ADODB.Recordset")
With rspedidos
.open "Pedidos" ,adOpenDynamic, AdLockOptimistic,adCmdTableDirect
.AddNew
.Fields("idcliente")=16
.Fields("cargo")=500
.Fields("destinatario")="pepe"
.update
MiID= .Fields("IdPedido")
End With
Nota: Pode ser que nosso sistema não tenha declaradas as variáveis do sistema do tipo adOpenDynamic, AdLockOptimistic ou adCmdTableDirect. Para que fiquem definidas devemos incluir o arquivo "adovbs.inc".







 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
O Objeto Browser Capabilities




Para criar um objeto Browser Capabilities a sintaxe é a mesma que para qualquer outro componente ActiveX.

Por Pedro Rufo Martin



<%Set cliente=
Server.CreateObject("MSWC.BrowserType")%>





Propriedades


Descrição----------- Propriedade
Suporte de ActiveX----------- ActiveXcontrols
Musiquinha de fundo----------- Backgroundsounds
Nome do Navegador------------- Browser
Suporte de Cookies------------ Cookies
Suporte de Frames-------------- Frames
Suporte de JScript---------------- JScript
Plataforma de execução---------------- Platform
Suporte de tablas------------------- Tables
Suporte de VBScript-------------------- VBScript
Versão do Navegador-----------------------Version


Exemplo de código mostrando todas as propriedades

browsercapabilities.asp

<html>
<head>
<title>Browser Capabilities</title>
</head>
<body>
<%
'instanciamos o objeto
Set cliente=Server.CreateObject("MSWC.BrowserType")
%>

<table border>
<tr>
<td>Suporte de ActiveX</td><td><%=cliente.ActiveXControls%></td></tr>
<tr>
<td>Musiquinha de fondo</td><td><%=cliente.Backgroundsounds%></td>
</tr>
<tr>
<td>Nome do Navegador</td><td><%=cliente.Browser%></td>
</tr>
<tr>
<td>Suporte de Cookies</td><td><%=cliente.Cookies%></td>
</tr>
<tr>
<td>Suporte de Frames</td><td><%=cliente.Frames%></td>
</tr>
<tr>
<td>Suporte de JavaScript</td><td><%=cliente.JavaScript%></td>
</tr>
<tr>
<td>Plataforma de execução</td><td><%=cliente.Platform%></td>
</tr>
<tr>
<td>Suporte de tabelas</td><td><%=cliente.Tables%></td>
</tr>
<tr>
<td>Suporte de VBScript</td><td><%=cliente.Vbscript%></td>
</tr>
<tr>
<td>Versão do navegador</td><td><%=cliente.Version%></td>
</tr>
</table>
</body>
</html>

Com o que obteríamos o seguinte resultado:
Suporte de ActiveX True
Musiquinha de fundo True
Nome do Navegador IE
Suporte de Cookies True
Suporte de Frames True
Suporte de JavaScript True
Plataforma de execução WinNT
Suporte de tabelas True
Suporte de VBScript True
Versão do navegador 5.0


 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Buscador simples em ASP melhorado



Artigo que comenta como implementar uma série de melhorias no buscador simples para ASP para que aceite critérios de busca com palavras independentes e operadores para relacioná-las.

Por Miguel Angel Alvarez - Tradução de JML





O buscador que se explica no manual Buscador Simples para ASP se pode melhorar, como creio que já comentamos, utilizando o script do artigo Crie seu próprio buscador, que implementava um sistema para que o sistema de busca utilizasse várias palavras-chave e alguns operadores para relacioná-las, como o operador + ou o operador espaço, que querem dizer que há que se relacionar as diferentes palavras-chave com a função lógica AND e OR respectivamente.

O objetivo deste artigo é realizar essa integração de um sistema com o outro e a publicação do script resultante, comentado na medida do possível. O primeiro seria ter claros as duas fontes de informação com as que estamos trabalhando, para o que aconselhamos necessariamente sua leitura compreensiva.
Buscador simples em ASP
Crie seu próprio buscador
Unimos os dois scripts

A página do buscador simples que temos que editar se chama buscar.asp. Para começar, vamos colocar as funções que estão no exercício Crie seu próprio buscador em qualquer parte de buscar.asp, embora preferivelmente na parte de cima. Estas funções, se por acaso alguém não as identifica, são:

function Tirar(cadeia,campos)
Extrai cada um dos campos do critério de busca introduzido e vai relacionando-os segundo os operadores que se utilizaram. Tudo isto se vai colocando em uma sentença em linguagem SQL.

function GeraSql(cadeia,tabela,campos)
Cria a sentencia SQL definitiva.

As descrições completas destas funções e a explicação de suas ações está, mais ou menos realizada no artigo Crie seu próprio buscador.

Editamos o script de buscar.asp para construir uma sentença SQL melhorada

A linha onde antes se construía a sentença SQL (variavel Temp.) a comentamos e a voltamos a fazer de outra maneira.

Primeiro, devemos criar um array com os campos da tabela onde vamos realizar as buscas. O array deve ter uma posição mais das necessárias, porque senão nos falhará o exemplo. Vamos buscar nos campos "Des" e "pal" da tabela, que contém as descrições e palavras-chave de cada um dos registros.

dim campos(3) 'o tamanho do array deve superar em um ao numero de campos
campos(1)="Des"
campos(2)="pal"

Logo extraímos a cadeia de busca do formulário que estamos recebendo
cadeia=Request.form("palavra")

Criamos uma variável com o nome da tabela do banco de dados onde há que buscar.

tabela_bd="Tabela1"

Finalmente, criamos a sentença SQL realizando uma chamada à função GeraSql comentada antes. Salvamos a sentença SQL na variável Temp, que era a variável onde antes tinha salvo a sentença do script buscar.asp original.

Temp=GeraSql(cadeia,tabla_bd,campos)
Nota: Decidi não mudar os nomes das variável para que o exemplo de buscar.asp continuasse funcionando sem problemas.


Já está pronto

Com as mudanças indicadas até agora já temos o exercício terminado. Agora as buscas serão muito mais complexas porque as sentenças SQL é muito mais avançada. As possibilidades deste script se multiplicaram.

O resto do código se deixa como estava. Ao executar a sentença SQL salva na mesma variável Temp, porém que agora está mais avançada se produz um recordset cujo percorrido se realiza da mesma maneira que antes.

Deixei a sentença SQL à vista, imprimido-a na página, para que qualquer pessoa que executar o script possa ver que sentença se está gerando.
 
Topo