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