Sistema em ASP 3.0 utilizando 3 camadas – Parte 3
Antes de começar a ler sobre este artigo (Parte 3), acesse os outros artigos para o perfeito entendimento sobre a idéia da criação do software e a tecnologia.
- Parte 1
- Parte 2
A Parte 1, mostrei como criar a página e inserir valores utilizando três camadas com ASP 3.0 e Visual Basic 6.0. A Parte 2 mostrei como criar uma consulta utilizando stored procedure, ASP 3.0 e Visual Basic 6.0 e no final mostrar dentro da página utilizando o comando “for e UBOUND”. Para mais detalhes dos tópicos acima, acesse os links indicados.
Esta Parte 3 continuarei com a mesma página de fornecedores acrescentando apenas o código para excluir do banco de dados clicando na imagem responsável e passando o parâmetro. Depois da pesquisa de dados da página, terá o link para excluir cujo chamará o componente registrado no COM PLUS responsável pelo acesso ao banco de dados, passando os parâmetros para a stored procedure que excluirá o dado.
O primeiro passo é criar a stored procedure chamada “CPESP098_DELETAR_FORNECEDOR”. (Referência 3.1)
CREATE PROCEDURE [dbo].[CPESP098_DELETAR_FORNECEDOR] @FOR_NU_SEQUENCIAL AS INT AS DELETE FROM CPETB042_FORNECEDOR WHERE FOR_NU_SEQUENCIAL = @FOR_NU_SEQUENCIAL |
Referência: 3.1
Lembre-se que utilizarei o mesmo banco de dados criado desde a Parte 1. Note que a SP recebe um parâmetro seqüencial chamado @FOR_NU_SEQUENCIAL do tipo INT e possui comando DELETE onde o FOR_NU_SEQUENCIAL for igual ao parâmetro recebido @FOR_NU_SEQUENCIAL.
Pronto, a SP está pronta e falta apenas criar a função dentro da classe “clsFornecedor.cls”. (Referência 3.2)
Public Function ExcluirFornecedor(ByVal FOR_NU_SEQUENCIAL As Integer) As Boolean ‘Declarando variáveis Static sSql As String Static bRetorno As Boolean Static bConexao As Boolean On Error GoTo error ‘Abrindo conexao com o banco de dados bConexao = AbreConexao("open") If bConexao Then ‘Definindo sql para ser executada sSql = " CPESP098_DELETAR_FORNECEDOR " & FOR_NU_SEQUENCIAL & "" ‘ Executando sql chamado pela função ExecutaSQL e retornando valores bRetorno = ExecutaSQL(sSql) End If error: If Err.Number <> 0 Then GerarLog "ExcluirFornecedor", DescricaoErro(1) End If ExcluirFornecedor = bRetorno If bConexao Then AbreConexao "close" End If End Function |
Referência: 3.2
Figura ilustrativa:
Referência: 3.3
Explicação:
Analisando a função, note que a mesma é pública, recebe um parâmetro do tipo Integer obrigatoriamente e retorna um valor do tipo Boolean, ou seja, true ou false. Declarei as variáveis de uso no decorrer da função, declarei o GoTo Error para que qualquer erro que aconteça dentro da classe, passe automaticamente para a parte responsável pelo tratamento de erro.
Abri a conexão com o banco de dados utilizando outra função criada anteriormente. Acompanhe outra série dos artigos publicados no site www.aspneti.com. Segue a primeira parte, seguindo terá a explicação de todas as funções responsáveis pelo tratamento com o banco de dados.
Sistema de Login em ASP – Parte I
No passo seguinte, verifiquei se a conexão estava realmente aberta para montar a SQL passando o parâmetro recebido no começo da função. Após montar, executo outra function chamada EXECUTASQL(sSql) passando o SQL montado. Caso não der erro nesta função retorna “true”, caso contrário retorna “false”. Por isso a variável “bRetorno” está recebendo o retorno da função. (Referência 3.4).
bRetorno = ExecutaSQL(sSql) |
Referência: 3.4
Ao final, verifico se existe algum erro para gerar o Log, caso não haja, a mesma recebe o “bRetorno” e fecha a conexão com o banco de dados. (Referência 3.5).
error: If Err.Number <> 0 Then GerarLog "ExcluirFornecedor", DescricaoErro(1) End If ExcluirFornecedor = bRetorno If bConexao Then AbreConexao "close" End If |
Referência: 3.5
Terminado com o componente, gerei a DLL usando o menu FILE / Make (NOME DA APLICACAO).DLL e registrei no servidor de componentes COM PLUS. O próximo passo é modificar um pouco a página “ASP” acrescentando o necessário para excluir clicando na imagem.
Em passos anteriores, criei a consulta, aproveitarei a mesma para gerar o clique diretamente ao usuário. (Referência 3.6)
<% 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> <%if session("bLiberaManter") then%> <th>Excluir</th> <th>Alterar</th> <%end if%> </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 ColocaMascaraCPF(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 mascaraTel(vFornecedor(FOR_TELEFONE, icont)) else Response.Write "-" end if %> </td> <td > <% if Trim(vFornecedor(FOR_TELEFONE1, icont)) <> "" then Response.Write mascaraTel(vFornecedor(FOR_TELEFONE1, icont)) else Response.Write "-" end if %> </td> <td> <% if Trim(vFornecedor(FOR_FAX, icont)) <> "" then Response.Write mascaraTel(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> <td align="middle"> <a href="#"> <IMG height=16 src="../images/botao_apagar.gif" width=16 name="imgExcluirN" title="Excluir dados de Afastamento" onclick="excluir('<%=vFornecedor(FOR_NU_SEQUENCIAL, icont)%>');"> </a> </td> </tr> <% next else %> <tr align="center"><td colspan="10"><b>Nenhum registro encontrado</b></td></tr> <% end if %> </table> <% end if %> |
Referência: 3.7
No final do comando “FOR UBOUND” adicionei mais uma “<TD>” buscando a imagem de lixeira e chamando uma função javascript “Excluir”. (Referência 3.8)
<td align="middle"> <a href="#"> <IMG height=16 src="../images/botao_apagar.gif" width=16 name="imgExcluirN" title="Excluir dados de Afastamento" onclick="excluir('<%=vFornecedor(FOR_NU_SEQUENCIAL, icont)%>');"> </a> </td> |
Referência: 3.8
No “onclick” do comando HTML <a href> utilizei e criei uma função excluir passando o valor em ASP vindo do FOR vírgula o contador. A função da página escrita em JAVASCRIPT está desta forma: (Referência 3.9)
function excluir(nuSequencial) { var bFlag = confirm(“Deseja realmente excluir?”); if (bFlag) { document.form.hdNuSequencial.value = nuSequencial; document.form.action = "frmManterFornecedor.asp?sAcao=Excluir"; document.form.submit(); } } |
Referência: 3.9
A mesma descrita acima recebe um número, utiliza o “confirm”, para aparecer a mensagem com as opções OK ou CANCEL, mantendo uma escolha ao usuário. Caso clique OK, adiciono o valor para um campo HIDDEN chamado hdNuSequencial, mudo a action para a sAcao=Excluir, no final aciono o submit do form.
No topo da página fica as variáveis em ASP e a condição do sAcao enviado. (Referência 3.10)
<% if sAcao = "Excluir" then bFornecedor = oFornecedor.ExcluirFornecedor(hdNuSequencial) if bFornecedor = false then %> <script> alert(“Erro ao excluir.”); </script> <% end if sAcao = "Pesquisar" end if %> |
Referência: 3.10
A condição verifica se o sAcao é igual a “Excluir”, se for é chamado a função criada “ExcluirFornecedor(hdNuSequencial)” passando o valor atribuído pelo JAVASCRIPT. Caso retorne false, mostra um alerta “Erro ao excluir.” Caso contrário atribui a variável sAcao igual a “Pesquisar” para pesquisar e mostrar ao usuário o que sobrou no banco de dados.
Primeira tela de pesquisa. (Referência 3.11)
Referência: 3.11
Clique na figura “Excluir”. (Referência 3.12)
Referência: 3.12
O que retornou depois que cliquei no OK. (Referência 3.13).
Referência: 3.13
Note que foi excluído com sucesso os dados. Bom, fico por aqui e espero ter ajudado.
Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio@ascompras.com ou mauricio@aspneti.com.
Mauricio Junior
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
Related articles
Sistema de Login com ASP 3.0 usando três camadas – Parte I
Descrição do artigo publicado no aspneti.com, cada artigo com seu resumo
Criando XML a partir do DataSet Tipado com Visual Studio.NET 2005 – Parte I
Descrição do artigo publicado no aspneti.com, cada artigo com seu resumo
Sistema de Login em ASP – Parte II
Descrição do artigo publicado no aspneti.com, cada artigo com seu resumo