Artigo

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="" >Nome</th>

                   <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

                                      %>&nbsp;

                            </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

                                      %>&nbsp;

                            </td>

                            <td>

                                      <%

                                      if Trim(vFornecedor(FOR_TELEFONE, icont)) <> "" then

Response.Write  mascaraTel(vFornecedor(FOR_TELEFONE, icont))

                                      else

Response.Write "-"  

                                      end if

                                      %>&nbsp;

                            </td>

                            <td >

                                      <%

                                      if Trim(vFornecedor(FOR_TELEFONE1, icont)) <> "" then

Response.Write  mascaraTel(vFornecedor(FOR_TELEFONE1, icont))

                                      else

Response.Write "-"  

                                      end if 

                                      %>&nbsp;

                            </td>

                            <td>

                                      <%                                

                                      if Trim(vFornecedor(FOR_FAX, icont)) <> "" then

Response.Write mascaraTel(vFornecedor(FOR_FAX, icont))

                                      else

Response.Write "-"  

                                      end if

                                      %>&nbsp;

                            </td>

                            <td>

                                      <%                                

                                      if Trim(vFornecedor(FOR_EMAIL, icont)) <> "" then

Response.Write vFornecedor(FOR_EMAIL, icont)

                                     else

Response.Write "-"  

                                      end if                             

                                      %>&nbsp;

                            </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.

 

 

Livros publicados:

 

 

 

 

Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio@ascompras.com ou mauricio@aspneti.com.

 

 

Mauricio Junior

www.ascompras.com

www.aspneti.com

 

  • Mauricio Junior

    Mauricio Junior