NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
FILTRO DE TUTORIAIS:
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
%>
</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.
Livros publicados:
Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio@ascompras.com ou mauricio@aspneti.com.
Mauricio Junior
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2024 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI