Verificando os dados do Cadastro
Após preencher o formulário o usuário deve enviar as informações clicando no botão Confirmar. Isto irá chamar o arquivo cadastrar.asp que irá verificar se já existe algum cliente cadastrado com os dados informados. Se nada for encontrado os dados do novo usuário serão gravados no banco de dados e um código de identificação será atribuído ao usuário para identificá-lo na sessão.
O código do arquivo Cadastrar.asp é exibido a seguir
<%@ Language=VBScript %> <% Option Explicit 'Declaração das Variáveis Dim conntemp Dim rsClientes 'Abre conexão com o banco de dados Sub Abre_ConexaoBD Set conntemp = Server.CreateObject("ADODB.Connection") conntemp.Open Application("Conecta_bd") End Sub 'Fecha conexão com o banco de dados Sub Fecha_ConexaoBD conntemp.Close Set conntemp = Nothing End Sub Session("cad_nome") = Request.Form("nome") Session("cad_email") = Request.Form("email") Session("cad_endereco")= Request.Form("endereco") Session("cad_bairro") = Request.Form("bairro") Session("cad_estado")= Request.Form("estado") Session("cad_cidade") = Request.Form("cidade") Session("cad_cep")= Request.Form("cep") Session("cad_telefone") = Request.Form("telefone") Session("cad_documento")= Request.Form("documento") Session("cad_sexo")= Request.Form("sexo") Abre_ConexaoBD Set rsClientes = Server.CreateObject("ADODB.Recordset") rsClientes.Open "Clientes", conntemp, adOpenDynamic, adLockOptimistic, adCmdTable 'Localiza o e-mail If NOT rsClientes.EOF Then rsClientes.Find "ClienteEMail='" & Session("cad_email") & "'", , adSearchForward End If 'Se nao tiver o e-mail cadastrado entao If rsClientes.EOF Then Session("Cada_Erro") = 0 'Inclui um novo cliente with rsClientes .AddNew .Fields("ClienteNome") = Session("cad_nome") .Fields("ClienteEMail") = Session("cad_email") .Fields("ClienteSenha") = Request.Form("senha1") .Fields("ClienteEndereco") = Session("cad_endereco") .Fields("ClienteBairro") = Session("cad_bairro") .Fields("ClienteEstado") = Session("cad_Estado") .Fields("ClienteCidade") = Session("cad_cidade") .Fields("ClienteCEP") = Session("cad_cep") .Fields("ClienteTelefone") = Session("cad_telefone") .Fields("ClienteDocumento") = Session("cad_documento") .Fields("ClienteSexo") = Session("cad_sexo") .Update 'posiciona o registro para obter o id .MoveFirst .Find "ClienteEMail='" & Session("cad_email") & "'", , adSearchForward end with Session("ClienteID") = rsClientes("ClienteID") Session("ClienteNome") = Session("cad_nome") 'Cria um cookie para o cliente Response.Cookies("Cookie_EMail") = Session("cad_email") Response.Cookies("CooKie_EMail").Expires = DateAdd("m", 2, Date()) 'Fecha o Recordset e conexao e vai para pagina de compras rsClientes.Close Set rsClientes = Nothing Fecha_ConexaoBD Response.Redirect "comprar.asp" Else 'já existe cadastro p/ o e-mail Session("Cad_Erro") = 1 rsClientes.Close Set rsClientes = Nothing Fecha_ConexaoBD Response.Redirect "Cadastra.asp" End If %> <!-- #Include file="ADOVBS.INC" --> |
Dim conntemp
Dim rsClientes
'Abre conexão com o banco de dados Sub Abre_ConexaoBD Set conntemp = Server.CreateObject("ADODB.Connection") conntemp.Open Application("Conecta_bd") End Sub 'Fecha conexão com o banco de dados Sub Fecha_ConexaoBD conntemp.Close Set conntemp = Nothing End Sub |
Session("cad_nome") = Request.Form("nome") Session("cad_email") = Request.Form("email") Session("cad_endereco")= Request.Form("endereco") Session("cad_bairro") = Request.Form("bairro") Session("cad_estado")= Request.Form("estado") Session("cad_cidade") = Request.Form("cidade") Session("cad_cep")= Request.Form("cep") Session("cad_telefone") = Request.Form("telefone") Session("cad_documento")= Request.Form("documento") Session("cad_sexo")= Request.Form("sexo") |
Set rsClientes = Server.CreateObject("ADODB.Recordset") rsClientes.Open "Clientes", conntemp, adOpenDynamic, adLockOptimistic, adCmdTable |
Para abrir o recordset usamos a seguinte sintaxe:
rsClientes.Open "Clientes", conntemp, adOpenDynamic, adLockOptimistic, adCmdTable
Onde:
If NOT rsClientes.EOF Then rsClientes.Find "ClienteEMail='" & Session("cad_email") & "'", , adSearchForward End If |
O método Find permite procurar na tabela clientes se o e-mail (Session("cad_email") ) esta cadastrado. Ele pode ser usado para encontrar valores em qualquer coluna. A sintaxe é a seguinte:
rs.Find(criterio. Skiprows , SearchDirection, start)
- Criterio - é uma expressão que contém o nome do campo do Recordset, um operador de comparação ( igual = , menor que < , maior que > , menor que ou igual <= , maior que ou igual >=, diferente <> ou Like )
Se o valor da procura for uma sequência de caracteres ela deve estar envolvida por aspas simples ('). Assim temos , no nosso caso : rsClientes.Find "ClienteEMail='" & Session("cad_email") & "'", , adSearchForward
Quando o valor for uma data , ela deve estar envolvida pelo sinal (#). Assim temos:
rsclientes.Find "Data=#09/03/2001#"
Ao usar o operador Like você pode usar o asterisco(*) no valor de procura apenas na frente e no final da cadeia de caracteres. Assim temos:
rsclientes.Find "Nome Like '*Silva*'" ou rsclientes.Find "Nome Like 'Silva*'"
A principal limitação do método Find é que você só pode procurar valores em apenas um campo.
- SkipRows - é um valor opcional Long ( não usamos ) com valor padrão igual a zero e indica que a busca começa na linha atual e termina na última linha quando SearchDirection é para frente e termina na primeira linha quando SearchDirection é para trás.
- SearchDirection - indica a direção da busca no Recordset. Pode ter os valores : adSearchForward - para frente e se nada for encontrado o cursor é posicionado para além do último registro => EOF retorna True. ou adSearchBack - para trás e se nada for encontrado o cursor é posicionado para além do primeiro registro => BOF retorna True.
- Start - Parâmetro opcional que pode ser definido para um bookmark de início. Assim antes de iniciar a busca o cursor do Recordset se move para este bookmark.
Se não existir um cliente cadastrado com este nome ( EOF=True ) então passamos a incluir o novo cliente. Para isto estamos usando o método AddNew/Update do objeto Recordset. Assim AddNew adiciona um novo registro ao Recordset e os valores são atribuidos as campos (Fields) do Recordset. O novo registro é gravado no banco de dados através do método Update.
Você deve tomar cuidado ao atribuir um valor ao campo de um Recordset. Verifique primeiro se o valor do campo pode ser armazenado no banco de dados. Cuidado com valores Null e com campos chave primária.
If rsClientes.EOF Then Session("Cada_Erro") = 0 'Inclui um novo cliente with rsClientes .AddNew .Fields("ClienteNome") = Session("cad_nome") .Fields("ClienteEMail") = Session("cad_email") .Fields("ClienteSenha") = Request.Form("senha1") .Fields("ClienteEndereco") = Session("cad_endereco") .Fields("ClienteBairro") = Session("cad_bairro") .Fields("ClienteEstado") = Session("cad_Estado") .Fields("ClienteCidade") = Session("cad_cidade") .Fields("ClienteCEP") = Session("cad_cep") .Fields("ClienteTelefone") = Session("cad_telefone") .Fields("ClienteDocumento") = Session("cad_documento") .Fields("ClienteSexo") = Session("cad_sexo") .Update 'posiciona o registro para obter o id .MoveFirst .Find "ClienteEMail='" & Session("cad_email") & "'", , adSearchForward end with |
Podemos usar também a instrução SQL - INSERT - e usar o método Execute do objeto Connection para executar uma instrução INSERT. A sintaxe é:
INSERT INTO tabela (coluna1, coluna2, coluna3,...) VALUES (valor1,valor2,valor3,..)
-Coluna1,Coluna2,... - é a lista das colunas da tabela onde desejamos inserir valores
-valor1,valor2,... - são os dados que estamos inserindo na tabela
Exemplo: INSERT INTO clientes (Nome,Email,Senha) VALUES ("João","joao@net.com","123")
Para executar a instrução podemos fazer:
SQL="INSERT INTO clientes (Nome,Email,Senha) VALUES ("João","joao@net.com","123") "
Conn.Execute SQL
A proxíma etapa é mover o ponteiro para o início do arquivo através do método MoveFirst - rsclientes.MoveFirst , e localizar o cliente recém cadastrado para obtermos o seu código e o seu nome. Aproveitamos a oportunidade para criar um Cookie para este novo cliente. Criamos um cookie para o seu e-mail e definimos uma data de expiração para o mesmo.
Session("ClienteID") = rsClientes("ClienteID") Session("ClienteNome") = Session("cad_nome") 'Cria um cookie para o cliente e define data de expiração Response.Cookies("Cookie_EMail") = Session("cad_email") Response.Cookies("CooKie_EMail").Expires = DateAdd("m", 2, Date()) |
O método MoveFirst é um método de navegação do Recordset. Além deste método temos mais três métodos que são: MoveLast (vai para o último registro) , MoveNext (vai para o próximo registro) , MovePrevious (vai para o registro anterior).
Tenha em mente que nem todos os Recordsets suportam todos estes métodos. Isto vai depender de como o Recordset é preparado para ser usado. Assim ao usar um cursor Forward-Only em um recordset não podemos usar os métodos MovePrevious ou MoveLast.
Feito tudo isto podemos fechar o recordset (Close) e ir para página de compras (Response.Redirect "compras").
'Fecha o Recordset e conexao e vai para pagina de compras rsClientes.Close Set rsClientes = Nothing Fecha_ConexaoBD Response.Redirect "comprar.asp" |
Se o cadastro já existir, atribuímos a variável de sessão Cad_Erro o valor 1 , e , fechamos o recordset , a conexão e redirecionamos o usuário para a página de cadastro.(Response.Redirect "Cadastra.asp")
Else 'já existe cadastro p/ o e-mail Session("Cad_Erro") = 1 rsClientes.Close Set rsClientes = Nothing Fecha_ConexaoBD Response.Redirect "Cadastra.asp" End If |
O redirecionamento é feito através do método Redirect que permite nos movermos para uma URL definida. Como este método usa o cabeçalho HTTP para avisar o Navegador , nenhuma saída deve ser executada antes de um instrução Response.Redirect.
Copyright (c) 2000 - José Carlos Macoratti