Na “Parte
http://www.aspneti.com/visualizar/downloadArtigo.aspx?ch_artigos=269
Nesta “Parte
O primeiro passo seria criar o banco de
dados, mas como na “Parte
set
ANSI_NULLS ON set
QUOTED_IDENTIFIER ON go CREATE PROCEDURE [dbo].[PRJSP099_SELECIONAR_FORNECEDOR] @FOR_NOME AS NVARCHAR(100), @FOR_CNPJ AS NVARCHAR(14) AS DECLARE
@SQL AS
VARCHAR(4000) SET @SQL
= ' SELECT FOR_NU_SEQUENCIAL, FOR_NOME, FOR_CNPJ, FOR_OPTANTE_SIMPLES, FOR_IE, FOR_TELEFONE, FOR_TELEFONE1, FOR_FAX, FOR_CONTATO, FOR_ENDERECO, FOR_BAIRRO, FOR_CIDADE, FOR_ESTADO, FOR_CEP, FOR_BANCO, FOR_AGENCIA, FOR_CONTA, FOR_EMAIL FROM CPETB042_FORNECEDOR WHERE 1=1 ' IF (@FOR_NOME IS NOT NULL) BEGIN SET
@SQL = @SQL +
' AND FOR_NOME = "' + CONVERT(VARCHAR, @FOR_NOME) + '"' END IF (@FOR_CNPJ IS NOT NULL) BEGIN SET
@SQL = @SQL +
' AND FOR_CNPJ = "' + CONVERT(VARCHAR, @FOR_CNPJ) + '"' END EXECUTE(@SQL) |
Referência: 2.1
Explicação:
CREATE PROCEDURE [dbo].[PRJSP099_SELECIONAR_FORNECEDOR] @FOR_NOME AS NVARCHAR(100), @FOR_CNPJ AS NVARCHAR(14) |
Referência: 2.2
Public Function SelecionarFornecedor(ByVal FOR_NOME
As String, _ ByVal
FOR_CNPJ As String) As Variant Static sSql As String Static vRetorno As Variant Static bConexao As Boolean On Error GoTo error bConexao =
AbreConexao("open") If
bConexao Then sSql =
"PRJSP099_SELECIONAR_FORNECEDOR " & _ IIf(FOR_NOME =
"", "NULL", "'" & FOR_NOME &
"'") & ", " & _ IIf(FOR_CNPJ = "", "NULL",
"'" & FOR_CNPJ & "'") & " "
vRetorno = ExecutaSQLArray(sSql) End If error: If Err.Number
<> 0 Then
GerarLog "SelecionarFornecedor", DescricaoErro(1) End If SelecionarFornecedor
= vRetorno If bConexao Then AbreConexao "close" End If End Function |
Referência: 2.2
Explicação:
Public Function SelecionarFornecedor(ByVal FOR_NOME
As String, _ ByVal
FOR_CNPJ As String) As Variant |
Referência: 2.3
O
método é público, espera dois parâmetros do tipo String, o primeiro chamado
FOR_NOME e o Segundo FOR_CNPJ e no final retornará valores do tipo VARIANT.
Seguindo ainda com a análise, declarei algumas variáveis e coloquei o
tratamento de erro. Dentro do tratamento, chamei a função chamada “AbreConexao”
informando o valor significativo ao abrir a conexão com o banco de dados.
(Referência 2.4)
Static sSql As String Static vRetorno As Variant Static bConexao As Boolean On Error GoTo error bConexao =
AbreConexao("open") |
Referência: 2.4
Após abrir o banco de dados, verifico
se a variável declarada está true e na linha abaixo chamo a stored procedure
passando os parâmetros recebidos. Utilizo a condição “IIF” que verifica se o
parâmetro está vazio, caso sim, o mesmo atribui o valor “NULL” enviado a
procedure. Lembre-se que foi feita uma verificação
If bConexao
Then sSql = "PRJSP099_SELECIONAR_FORNECEDOR
" & _ IIf(FOR_NOME =
"", "NULL", "'" & FOR_NOME &
"'") & ", " & _ IIf(FOR_CNPJ =
"", "NULL", "'" & FOR_CNPJ &
"'") & " " vRetorno
= ExecutaSQLArray(sSql) End If |
Referência: 2.5
Toda verificação é feita, verifico se
há algum erro, e retorno o valor para o objeto que chamou. (Referência 2.6)
error: If
Err.Number <> 0 Then
GerarLog "SelecionarFornecedor", DescricaoErro(1) End If
SelecionarFornecedor = vRetorno If bConexao
Then AbreConexao
"close" End If |
Referência: 2.6
Referência: 2.7
A tela criada (Referência 2.7) mostra circulados
os dois campos que podem ou não serem preenchidos pelo usuário e em seguida
clicar no botão “PESQUISAR” logo abaixo no final da página. O HTML da página
foi mostrado no passo anterior. Mostrarei a parte de pesquisa e acesso ao
objeto criado.
Na
parte HTML, especificamente no botão PESQUISAR chamo uma function criada em
JAVASCRIPT. (Referência 2.8)
<input
type="button" onClick="pesquisar();" title="Clique aqui para
Pesquisar" name="btnPesquisar" value="Pesquisar"> |
Referência: 2.8
No atributo “onClick” do input existe
uma chamada para a function “pesquisar();” cujo não recebe qualquer parâmetro.
No passo passado foi falado que o form está com o atributo action para a mesma
página, ou seja, os valores preenchidos são pegos e tratados na mesma página.
(Referência 2.9)
<script> function pesquisar() { document.form.action =
"frmManterFornecedor.asp?sAcao=Pesquisar"; document.form.submit(); } </script> |
Referência: 2.9
A function (Referência 2.9) apenas
atribui a ação da página para ela própria passando um parâmetro chamado “sAcao”
com o valor “Pesquisar”. Após a atribuição, é chamado o comando de submit. No
começo da página ASP 3.0, foram declaradas constantes e variáveis para serem
enviadas, ou seja, cada campo digitado será pego pelo request. (Referência 2.10)
<% CONST FOR_NU_SEQUENCIAL = 0 CONST FOR_NOME =
1 CONST FOR_CNPJ =
2 CONST FOR_OPTANTE_SIMPLES = 3 CONST FOR_IE =
4 CONST FOR_TELEFONE =
5 CONST FOR_TELEFONE1 =
6 CONST FOR_FAX =
7 CONST FOR_CONTATO =
8 CONST FOR_ENDERECO =
9 CONST
FOR_BAIRRO = 10 CONST
FOR_CIDADE = 11 CONST
FOR_ESTADO =
12 CONST FOR_CEP =
13 CONST FOR_BANCO =
14 CONST FOR_AGENCIA =
15 CONST FOR_CONTA =
16 CONST FOR_EMAIL =
17 dim sAcao dim iCont '###############
declaracao dim cmbEstado dim txtCNPJ dim txtNome dim
txtInscricaoEstadual dim txtEndereco dim txtBairro dim txtCidade dim txtCEP dim
txtTelefone1 dim
txtTelefone2 dim txtFax dim txtEmail dim txtNuBanco dim
txtNuAgencia dim txtNuConta dim txtContato dim rdOptante dim
hdNuSequencial dim oFornecedor dim vFornecedor dim bFornecedor '################
pegando valores txtNuConta =
Request("txtNuConta") cmbEstado =
Request("cmbEstado") txtCNPJ =
Request("txtCNPJ") txtNome =
Request("txtNome") txtInscricaoEstadual
= Request("txtInscricaoEstadual") txtEndereco =
Request("txtEndereco") txtBairro =
Request("txtBairro") txtCidade =
Request("txtCidade") txtCEP =
Request("txtCEP") txtTelefone1 =
Request("txtTelefone1") txtTelefone2 =
Request("txtTelefone2") txtFax =
Request("txtFax") txtEmail =
Request("txtEmail") txtNuBanco =
Request("txtNuBanco") txtNuAgencia =
Request("txtNuAgencia") txtNuConta = Request("txtNuConta") txtContato =
Request("txtContato") rdOptante =
Request("rdOptante") txtContato =
Request("txtContato") hdNuSequencial =
Request("hdNuSequencial") sAcao =
Request("sAcao") set oFornecedor
= Server.CreateObject("CPETabelas.clsFornecedor") if sAcao =
"Pesquisar" then vFornecedor =
oFornecedor.SelecionarFornecedor(txtNome, txtCNPJ) end if %> |
Referência: 2.10
Explicação:
No começo do código, adicionei algumas
constantes com seus respectivos valores, estes valores serão usados para
mostrar o relatório gerado; ou seja; para não utilizar números utilizo
constante. Os números atribuídos é a posição retornada do select da “stored
procedure” com seus respectivos campos. Mais abaixo, pego todos os dados
utilizando o Request explicado no passo anterior.
set oFornecedor
= Server.CreateObject("CPETabelas.clsFornecedor") |
Referência: 2.11
Atribuo a variável “oFornecedor” o
server.createObject que significa fazer a comunicação entre o componente gerado
anteriormente pelo Visual Basic 6.0. Após criar a dll, registrei os componentes
dentro do COM PLUS. Caso não haja nenhum erro, a variável “oFornecedor” estará
disponível para uso e todas as functions públicas.
if sAcao =
"Pesquisar" then vFornecedor =
oFornecedor.SelecionarFornecedor(txtNome, txtCNPJ) end if |
Referência: 2.12
<% if
IsArray(vFornecedor) then %> <table CELLSPACING="1"
cellpadding="0" class="formulario" WIDTH="90%"
title="Dados do Afastamento Cadastrado"> <tr>
<th >CNPJ</th> <th width="" > <th width="" ><b>Telefone</b></th> <th width=""><b>Telefone
1</b></th> <th
width=""><b>Fax</b></th> <th
width=""><b>E-mail</b></th> </tr> <% if
IsArray(vFornecedor) then for
iCont=0 to UBound(vFornecedor, 2) %> <tr
align="center"> <td> <%
if Trim(vFornecedor(FOR_CNPJ, icont)) <> "" then Response.Write vFornecedor(FOR_CNPJ,
icont) else Response.Write "-" end if %> </td> <td title="<%=vFornecedor(FOR_NOME,
icont)%>"> <% if Trim(vFornecedor(FOR_NOME, icont)) <> "" then Response.Write
mid(vFornecedor(FOR_NOME, icont),1,10) else Response.Write
"-" end
if %> </td> <td> <% if
Trim(vFornecedor(FOR_TELEFONE, icont)) <> "" then Response.Write vFornecedor(FOR_TELEFONE, icont) else Response.Write
"-" end
if %> </td> <td
> <% if
Trim(vFornecedor(FOR_TELEFONE1, icont)) <> "" then Response.Write (vFornecedor(FOR_TELEFONE1, icont) else Response.Write
"-" end
if %> </td> <td> <% if
Trim(vFornecedor(FOR_FAX, icont)) <> "" then Response.Write
vFornecedor(FOR_FAX, icont) else Response.Write
"-" end
if %> </td> <td> <% if
Trim(vFornecedor(FOR_EMAIL, icont)) <> "" then Response.Write
vFornecedor(FOR_EMAIL, icont) else Response.Write
"-" end
if %> </td> </tr> <% next else %> <tr align="center"><td
colspan="10"><b>Nenhum registro
encontrado</b></td></tr> <% end if %> </table> <% end if %> |
Referência: 2.13
Explicação:
Essa interação do ASP 3.0 e HTML é
simples e fácil. O primeiro de tudo no código, verifico se o meu vetor é um
array. Caso não seja, o sistema mostrará uma mensagem informando ao usuário que
não retornou registro. (Referência 2.14)
<% if IsArray(vFornecedor) then %> |
Referência: 2.14
Após a verificação, montei o cabeçalho
do relatório ao usuário. Essa parte do relatório foi criada mais abaixo da
página, ou seja, no final da página ASP 3.0. (Referência 2.15)
<tr> <th >CNPJ</th> <th width="" > <th width=""
><b>Telefone</b></th> <th width=""><b>Telefone
1</b></th> <th
width=""><b>Fax</b></th> <th
width=""><b>E-mail</b></th> </tr> |
Referência: 2.15
Montei o cabeçalho do relatório, agora
falta apenas montar o corpo. Para a montagem, irei fazer um “for” no vetor,
lembre-se que esse vetor possui um array bidimensional dentro dele. Dessa forma,
utilizarei o UBOUND do “for”. E em seguida, utilizarei o Response.Write para mostrar
os valores dentro das “tr”s montadas. (Referência 2.16)
<% for
iCont=0 to UBound(vFornecedor, 2) %> <tr
align="center"> <td> <% if
Trim(vFornecedor(FOR_CNPJ, icont)) <> "" then Response.Write vFornecedor(FOR_CNPJ,
icont) else Response.Write
"-" end
if %> </td> </tr> <tr> <td> ‘aqui coloco outros campos
que gostaria de mostrar ao usuário </td> </tr> <% next %> |
Referência: 2.16
Faço um “for” de ICount para
UBound(vetor, 2). Dentro do “for”, montei as “tr”s não esquecendo de verificar
se o resultado do vetor é diferente de vazio para mostrá-lo utilizando o
Response.Write. Note que utilizei dentro do vetor a constante “FOR_CNPJ”, a
mesma foi declarada logo acima com um número, esse número que está sendo usado
para a verificação. Caso não possua valor neste campo, o mesmo mostrará apenas
um traço. Isso eu fiz para todos os campos que gostaria de mostrar ao usuário.
Em seguida, utilizei a página clicando
no botão PESQUISAR. Note que o mesmo trouxe resultados mostrados na tela. (Referência
2.17)

Referência: 2.17
Note que a parte circulada é todo
resultado mostrado dentro do sistema.
Bom, fico por
aqui, qualquer dúvida favor entrar em contato pelo e-mail mauricio@aspneti.com. Espero ter ajudado
de alguma forma.
Livros publicados pelo autor:
Mauricio Junior