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
O meu objetivo é mostrar como é fácil, seguro e rápido utilizar sistemas ASP 3.0 utilizando 3 camadas. Além das camadas ficarem desconectadas, caso houver mudanças em algumas das camadas, fica mais fácil altera-las mantendo assim um padrão específico de desenvolvimento de software. Em passos anteriores mostrei como criar as camadas para conectar no banco de dados, criptografia, module e muito mais. Caso queira acompanhar desde o início, acesse os sites indicados abaixo:
Informo também que todos os exemplos são explicados passo a passo e para melhor visualização, é mostrado uma figura de ilustração real do assunto falado. Os códigos foram testados e comprovados, favor tente seguir passo a passo. Esta primeira parte crio uma tabela de fornecedores bem comum e com dados reais, crio uma stored procedure para inserir os dados no banco de dados e o restante é mostrado no decorrer.
Requisitos:
- Ter visto os passos anteriores;
- Possuir um conhecimento VB 6.0 e ASP 3.0;
- Possuir conhecimento utilizando banco de dados;
Utilização e ferramentas:
- Microsoft Visual Studio InterDev 6.0;
- Microsoft Visual Basic 6.0
- Banco de dados SQL SERVER;
O primeiro de tudo é a criação do banco de dados junto à aplicação. Como informado anteriormente criei uma tabela de fornecedores junto ao banco de dados. (Referência Parte 1.1)
Referência: Parte 1.1
O nome da tabela do banco de dados é: CPETB042_FORNECEDOR. Note que os campos são formados por um padrão de nomenclatura e são comuns, ou seja, sem nenhum segredo.
O próximo passo é criar uma procedure genérica onde possa fazer update ou insert utilizando o mesmo arquivo. Já que para um fornecedor, o CNPJ nunca deve ser o mesmo, tive a idéia de verificar se o CNPJ já existe, caso não exista o mesmo faz um insert na tabela, caso exista automaticamente a procedure entenderá que deve ser feito um UPDATE nos campos informados. Essa idéia economiza um pouco de tempo e também anula o fato de utilizar outra apenas para fazer update. (Referência Parte 1.2)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[CPESP097_INSERIR_FORNECEDOR]
@FOR_NOME nvarchar(100),
@FOR_CNPJ nvarchar(28),
@FOR_OPTANTE_SIMPLES char(1),
@FOR_IE nvarchar(100),
@FOR_TELEFONE nvarchar(20),
@FOR_TELEFONE1 nvarchar(20),
@FOR_FAX nvarchar(20),
@FOR_CONTATO nvarchar(100),
@FOR_ENDERECO text,
@FOR_BAIRRO nvarchar(100),
@FOR_CIDADE nvarchar(100),
@FOR_ESTADO char(2),
@FOR_CEP numeric,
@FOR_BANCO nvarchar(100),
@FOR_AGENCIA nvarchar(20),
@FOR_CONTA nvarchar(70),
@FOR_EMAIL nvarchar(200)
AS
DECLARE @FOR_NU_SEQUENCIAL AS INT
/*******************************************************************
*****************
INICIANDO TRANSACAO
*******************************************************************
******************/
BEGIN TRANSACTION
SET NOCOUNT ON
-- BUSCA PRIMEIRO ANTES DE INSERIR OU ATUALIZAR
SELECT
@FOR_NU_SEQUENCIAL = FOR_NU_SEQUENCIAL
FROM
CPETB042_FORNECEDOR
WHERE
FOR_CNPJ = @FOR_CNPJ
IF (@@rowcount = 0)
BEGIN
INSERT INTO CPETB042_FORNECEDOR (
--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
)
VALUES
(
--@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
)
END
--- ATUALIZAR TABELA
ELSE
BEGIN
UPDATE CPETB042_FORNECEDOR SET
FOR_NOME = @FOR_NOME,
FOR_CNPJ = @FOR_CNPJ,
FOR_OPTANTE_SIMPLES = @FOR_OPTANTE_SIMPLES,
FOR_IE = @FOR_IE,
FOR_TELEFONE = @FOR_TELEFONE,
FOR_TELEFONE1 = @FOR_TELEFONE1,
FOR_FAX = @FOR_FAX,
FOR_CONTATO = @FOR_CONTATO,
FOR_ENDERECO = @FOR_ENDERECO,
FOR_BAIRRO = @FOR_BAIRRO,
FOR_CIDADE = @FOR_CIDADE,
FOR_ESTADO = @FOR_ESTADO,
FOR_CEP = @FOR_CEP,
FOR_BANCO = @FOR_BANCO,
FOR_AGENCIA = @FOR_AGENCIA,
FOR_CONTA = @FOR_CONTA,
FOR_EMAIL = @FOR_EMAIL
WHERE
FOR_NU_SEQUENCIAL = @FOR_NU_SEQUENCIAL
END
COMMIT TRANSACTION
Referência: Parte 1.2
Explicação:
É simples e fácil a criação e utilização da procedure. No começo espero parâmetros necessários para o insert ou update, logo após inicio a transação com o comando BEGIN TRANSACTION e antes de inserir faço obrigatoriamente um select na tabela passando o número do CNPJ do fornecedor. (Referência Parte 1.3).
BEGIN TRANSACTION
SET NOCOUNT ON
-- BUSCA PRIMEIRO ANTES DE INSERIR OU ATUALIZAR
SELECT
@FOR_NU_SEQUENCIAL = FOR_NU_SEQUENCIAL
FROM
CPETB042_FORNECEDOR
WHERE
FOR_CNPJ = @FOR_CNPJ
Referência: Parte 1.3
Caso haja algum valor retornado para a variável @FOR_NU_SEQUENCIAL, é feito um IF mais abaixo para verificar se o @@rowcount é igual a zero (0). Sendo o mesmo faz insert, senão faz update.
Passando para a parte interessante, criei um projeto do tipo ACTIVEX DLL (caso de dúvidas na criação, verifique os passos anteriores indicado no começo), adicionei o módulo criado anteriormente ao projeto e por final criei uma classe chamada clsFornecedor responsável pelas transações com de fornecedor. O nome do método responsável para inserir é: InserirFornecedor cujo recebe alguns parâmetros necessários. (Referência Parte 1.4)
Public Function InserirFornecedor(ByVal FOR_NOME As String, _
ByVal FOR_CNPJ As String, _
ByVal FOR_OPTANTE_SIMPLES As String, _
ByVal FOR_IE As String, _
ByVal FOR_TELEFONE As String, _
ByVal FOR_TELEFONE1 As String, _
ByVal FOR_FAX As String, _
ByVal FOR_CONTATO As String, _
ByVal FOR_ENDERECO As String, _
ByVal FOR_BAIRRO As String, _
ByVal FOR_CIDADE As String, _
ByVal FOR_ESTADO As String, _
ByVal FOR_CEP As String, _
ByVal FOR_BANCO As String, _
ByVal FOR_AGENCIA As String, _
ByVal FOR_CONTA As String, _
ByVal FOR_EMAIL As String) As Boolean
Static sSql As String
Static bRetorno As Boolean
Static bConexao As Boolean
On Error GoTo error
‘ abre a conexao com o banco de dados
bConexao = AbreConexao("open")
If bConexao Then
‘executa a stored procedure criada anteriormente passando os parâmetros
‘necessários
sSql = " CPESP097_INSERIR_FORNECEDOR '" & 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 & "'"
‘ executa o comando utilizando o método da model passando a string SQL
bRetorno = ExecutaSQL(sSql)
End If
error:
‘ caso haja erro, o mesmo gera o log
If Err.Number <> 0 Then
GerarLog "InserirFornecedor", DescricaoErro(1)
End If
‘por fim é retornado ao objeto ou página que chamou um valor do tipo boolean
InserirFornecedor = bRetorno
‘fechando a conexão do banco de dados.
If bConexao Then
AbreConexao "close"
End If
End Function
Referência: Parte 1.4
O método é simples depois que entende a utilização do módulo criado em passos anteriores. Essa é a vantagem de se criar um módulo genérico com funções ou métodos, várias classes podem utilizá-lo sem qualquer tipo de problema.
Explicação:
Recebo as variáveis com seus tipos respectivos, mais abaixo abro a conexão com o banco de dados, verifico se a conexão foi realmente aberta, atribuo os valores para a variável sSQL responsável para passar os valores a serem executados. Depois da atribuição, chamo a função ou método, como preferir chamada ExecutaSQL passando a sSQL. Essa função é responsável em fazer todo o trâmite utilizando a stored procedure indicada. Por fim retorno o valor ao objeto ou página que o chamou. (Referência Parte 1.5)
Referência: Parte 1.5
Lembre-se que o componente deve estar registrado no COM PLUS.
Utilizando página ASP 3.0
Esta parte de utilizando da camada de apresentação é bem simples e prático. No momento não se preocupe com layout ou estilo da tela, estou focando no funcionamento utilizando camadas e não no layout. (Referência Parte 1.6)
Referência: Parte 1.6
A figura (referência Parte 1.6) mostra como ficou a página ASP 3.0 responsável por cadastrar o fornecedor no banco de dados. O código HTML é simples e fácil, porém com alguns códigos diferentes. (Referência Parte 1.7)
<form action="frmManterFornecedor.asp" method="post" name="form">
<!-- hidden -->
<input type="hidden" name="hdNuSequencial" value="<%=hdNuSequencial%>">
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
<!--#include file="../includes/barra_titulo.asp"-->
<tr align="center">
<td bgcolor="white" id="td_Left"></td>
<td bgcolor="white" valign="top" width="780px" id="td_Center">
<table border="1" cellpadding="0" class="formulario" WIDTH="90%" >
<tr>
<td height="30px" style="background-color:white"></td>
</tr>
<tr>
<th colspan="4">Manter Fornecedor</th>
</tr>
<tr>
<TH width="18">01</TH>
<td >
<b>CNPJ do Fornecedor: <font color="red">*</font></b><br>
<input type='text' id="txtCNPJ" name="txtCNPJ" value="<%=txtCNPJ%>" maxlength="14" size='16' style="BACKGROUND-COLOR: #ffff99" >
</td>
<td colspan='2'>
<b>Nome do Beneficiario:<font color="red">*</font></b><br>
<input type='text' id="txtNome" name="txtNome" value="<%=txtNome%>" maxlength="50" size='60' style="BACKGROUND-COLOR: #ffff99" >
</td>
</tr>
<tr>
<TH width="18">02</TH>
<td>
<b>Optante Simples:</b><br>
<input type="radio" checked style="border:0" name="rdOptante" disabled value="S">Sim
<input type="radio" style="border:0" name="rdOptante" disabled value="N">Não
</td>
<td colspan=2>
<b>Inscrição Estadual:</b><br>
<input type='text' name='txtInscricaoEstadual' value="<%=txtInscricaoEstadual%>" maxlength="13" size="15" disabled>
</td>
</tr>
<tr>
<TH width="18">04</TH>
<td colspan="2">
<b>Endereço:</b><br>
<input type='text' id="txtEndereco" name="txtEndereco" value="<%=txtEndereco%>" maxlength="50" size='60' disabled>
</td>
<td >
<b>Bairro:</b><br>
<input type='text' id="txtBairro" name="txtBairro" value="<%=txtBairro%>" maxlength="50" size='30' disabled>
</td>
</tr>
<tr>
<TH width="18">05</TH>
<td>
<b>Cidade:</b><br>
<input type='text' id="txtCidade" name="txtCidade" value="<%=txtCidade%>" maxlength="50" size='20' disabled>
</td>
<td >
<b>Estado:</b><br>
<select name="cmbEstado" disabled>
<option value=""><< Selecione >></option>
<option value="AC" <%if cmbEstado = "AC" then Response.Write "selected"%>>AC</option>
<option value="AL" <%if cmbEstado = "AL" then Response.Write "selected"%>>AL</option>
<option value="AM" <%if cmbEstado = "AM" then Response.Write "selected"%>>AM</option>
<option value="AP" <%if cmbEstado = "AP" then Response.Write "selected"%>>AP</option>
<option value="BA" <%if cmbEstado = "BA" then Response.Write "selected"%>>BA</option>
<option value="CE" <%if cmbEstado = "CE" then Response.Write "selected"%>>CE</option>
<option value="DF" <%if cmbEstado = "DF" then Response.Write "selected"%>>DF</option>
<option value="ES" <%if cmbEstado = "ES" then Response.Write "selected"%>>ES</option>
<option value="GO" <%if cmbEstado = "GO" then Response.Write "selected"%>>GO</option>
<option value="MA" <%if cmbEstado = "MA" then Response.Write "selected"%>>MA</option>
<option value="MG" <%if cmbEstado = "MG" then Response.Write "selected"%>>MG</option>
<option value="MS" <%if cmbEstado = "MS" then Response.Write "selected"%>>MS</option>
<option value="MT" <%if cmbEstado = "MT" then Response.Write "selected"%>>MT</option>
<option value="PA" <%if cmbEstado = "PA" then Response.Write "selected"%>>PA</option>
<option value="PB" <%if cmbEstado = "PB" then Response.Write "selected"%>>PB</option>
<option value="PE" <%if cmbEstado = "PE" then Response.Write "selected"%>>PE</option>
<option value="PI" <%if cmbEstado = "PI" then Response.Write "selected"%>>PI</option>
<option value="PR" <%if cmbEstado = "PR" then Response.Write "selected"%>>PR</option>
<option value="RJ" <%if cmbEstado = "RJ" then Response.Write "selected"%>>RJ</option>
<option value="RN" <%if cmbEstado = "RN" then Response.Write "selected"%>>RN</option>
<option value="RO" <%if cmbEstado = "RO" then Response.Write "selected"%>>RO</option>
<option value="RR" <%if cmbEstado = "RR" then Response.Write "selected"%>>RR</option>
<option value="RS" <%if cmbEstado = "RS" then Response.Write "selected"%>>RS</option>
<option value="SC" <%if cmbEstado = "SC" then Response.Write "selected"%>>SC</option>
<option value="SE" <%if cmbEstado = "SE" then Response.Write "selected"%>>SE</option>
<option value="SP" <%if cmbEstado = "SP" then Response.Write "selected"%>>SP</option>
<option value="TO" <%if cmbEstado = "TO" then Response.Write "selected"%>>TO</option>
</select>
</td>
<td >
<b>CEP:</b><br>
<input type='text' id="txtCEP" name="txtCEP" value="<%=txtCEP%>" maxlength="8" size='10' disabled>
</td>
</tr>
<tr>
<TH width="18">06</TH>
<td >
<b>Telefone 1:</b><br>
<input type='text' id="txtTelefone1" name="txtTelefone1" value="<%=txtTelefone1%>" maxlength="10" size='12' disabled>
</td>
<td >
<b>Telefone 2:</b><br>
<input type='text' id="txtTelefone2" name="txtTelefone2" value="<%=txtTelefone2%>" maxlength="10" size='12' disabled>
</td>
<td >
<b>Fax:</b><br>
<input type='text' id="txtFax" name="txtFax" value="<%=txtFax%>" maxlength="10" size='12' disabled>
</td>
</tr>
<tr>
<TH width="18">07</TH>
<td>
<b>Contato:</b><br>
<input type='text' id="txtContato" name="txtContato" value="<%=txtContato%>" maxlength='50' size='20' disabled>
</td>
<td colspan=2>
<b>Email:</b><br>
<input type='text' id="txtEmail" name="txtEmail" value="<%=txtEmail%>" maxlength='50' size='30' disabled>
</td>
</tr>
<tr>
<th colspan="4">Dados do Banco</th>
</tr>
<tr>
<TH width="18">09</TH>
<td >
<b>N° Banco:</b><br>
<input type='text' id="txtNuBanco" name="txtNuBanco" value="<%=txtNuBanco%>" maxlength="3" size='15' disabled>
</td>
<td >
<b>N° Agencia:</b><br>
<input type='text' id="txtNuAgencia" name="txtNuAgencia" value="<%=txtNuAgencia%>" maxlength="5" size='10' disabled>
</td>
<td>
<b>N° Conta:</b><br>
<input type='text' id="txtNuConta" name="txtNuConta" value="<%=txtNuConta%>" maxlength="10" size='20' disabled>
</td>
</tr>
<tr>
<th align="middle" colspan='4'>
<input type="button" onClick="pesquisar();" title="Clique aqui para Pesquisar" name="btnPesquisar" value="Pesquisar">
<input type="button" onClick="salvar();" title="Clique aqui para Salvar" name="btnSalvar" value="Salvar" disabled>
<input type="button" onClick="novo();" title="Clique aqui para Cadastrar" name="btnNovo" value="Novo">
<input type="button" onclick="limpaCampos();" title="Clique aqui para Limpar" name="btnLimpar" value="Limpar">
</th>
</tr>
</table>
Referência: Parte 1.7
Explicação:
Todo esse form é apenas HTML para a montagem de acordo com a referência (Parte 1.6) comentada anteriormente. A ação do form está sendo enviada para o mesmo formulário. (Referência Parte 1.8)
action="frmManterFornecedor.asp" method=”post”
Referência: Parte 1.8
Dessa forma, todos os dados submetidos são enviados via POST para o mesmo formulário. Para pegar todos os valores escolhidos e digitados, basta utilizar logo no começo a tag “<%%>”. Pelo fato de desenvolver algumas funcionalidades a mais como excluir, pesquisar e inserir dentro de um mesmo formulário, utilizei uma variável de ação chamada “sAcao”. De acordo com a ação feita, meu form irá consultar inserir ou excluir registros do banco de dados.
Neste primeiro passo, mostrei a ação incluir, criei o objeto para comunicação com o componente utilizando três camadas e enviando os parâmetros. Lembre-se que para usar o componente VB 6.0, deve-se gerar uma DLL no menu FILE / MAKE PROGRAMA.DLL e registra-la no COM PLUS da máquina ou servidor; para mais detalhes, em passos anteriores expliquei passo a passo o modo correto de fazer isso. (Referência Parte 1.9)
<%
'############### declaracao
dim sAcao
dim iCont
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")
'############### criando instancia com objeto
set oFornecedor = Server.CreateObject("CPETabelas.clsFornecedor")
if sAcao = "Salvar" then
txtCEP = Replace(txtCEP,".","")
txtCEP = Replace(txtCEP,"-","")
txtCNPJ = Replace(txtCNPJ,".","")
txtCNPJ = Replace(txtCNPJ,"-","")
txtCNPJ = Replace(txtCNPJ,"/","")
bFornecedor = oFornecedor.InserirFornecedor(txtNome, txtCNPJ, rdOptante, txtInscricaoEstadual, txtTelefone1, txtTelefone2, txtFax, txtContato, txtEndereco, txtBairro, txtCidade, cmbEstado, txtCEP, txtNuBanco, txtNuAgencia, txtNuConta, txtEmail)
if bFornecedor = false then
%>
<script>
alert('Erro ao inserir fornecedor !');
</script>
<%
else
Response.Redirect "frmManterFornecedor.asp?sAcao=Pesquisar"
end if
end if
%>
Referência: Parte 1.9
Explicação:
As primeiras linhas da parte ASP são apenas declarações de variáveis usadas, geralmente é bom colocar os mesmos nomes que estão no atributo name do seu formulário HTML. Utilizo apenas “dim nomedavariavel”. Depois de declarada todas as variáveis, tenho que pegar e atribuir o valor submetido. (Referência Parte 1.10).
txtNuConta = Request("txtNuConta")
Referência: Parte 1.10
Só o Request(“name do objeto HTML”) já pega o valor que foi digitado ou selecionado dependendo do objeto. Após pegar todos os request da tela preciso apenas instanciar o método VB 6.0 criado e por final chamar o método responsável para inserção de parâmetros. (Referência Parte 1.11)
'############################# criando instancia com objeto
set oFornecedor = Server.CreateObject("CPETabelas.clsFornecedor")
bFornecedor = oFornecedor.InserirFornecedor(txtNome, txtCNPJ, rdOptante, txtInscricaoEstadual, txtTelefone1, txtTelefone2, txtFax, txtContato, txtEndereco, txtBairro, txtCidade, cmbEstado, txtCEP, txtNuBanco, txtNuAgencia, txtNuConta, txtEmail)
Referência: Parte 1.11
O set oFornecedor = Server.CreateObject("CPETabelas.clsFornecedor") cria a instância diretamente com o componente informado registrado no COM PLUS. Os parâmetros são:
CPETabelas - O nome do componente
clsFornecedor - A classe criada dentro do componente
Referência: Parte 1.12
Depois de instanciado, basta chamar o método que insere os dados no banco de dados. (Referência Parte 1.13)
bFornecedor = oFornecedor.InserirFornecedor (variáveis, variáveis, variáveis)
Referência: Parte 1.13
É o nome do objeto, ponto (.) o nome do método. Utilizei o Visual InterDev 6.0 onde já mostra todos os métodos ou funções necessárias depois de digitado (ponto). No meu caso de muitos parâmetros, tive que passar vários para o objeto. Para mais detalhes verifique a Referência Parte 1.14.
bFornecedor = oFornecedor.InserirFornecedor(txtNome, txtCNPJ, rdOptante, txtInscricaoEstadual, txtTelefone1, txtTelefone2, txtFax, txtContato, txtEndereco, txtBairro, txtCidade, cmbEstado, txtCEP, txtNuBanco, txtNuAgencia, txtNuConta, txtEmail)
if bFornecedor = false then
%>
<script>
alert('Erro ao inserir fornecedor !');
</script>
<%
else
Response.Redirect "frmManterFornecedor.asp?sAcao=Pesquisar"
end if
Referência: Parte 1.14
No ASP 3.0, necessariamente precisa-se passar todos os parâmetros na ordem que o componente o recebe. Caso a ordem seja diferente, poderá ocasionar algum tipo de erro. Qualquer tipo de erro ocorrendo dentro do componente, a tela mostrará uma mensagem “Erro ao inserir fornecedor” para o usuário final, senão o será redirecionado para a mesma tela passando a ação igual a “pesquisar”.
Bom, esse foi um exemplo médio, prático e rápido de como fazer um componente VB 6.0, coloca-lo no COM PLUS, criar uma página ASP 3.0, chamar o componente via página web e por final passar os valores esperados.
Espero ter ajudado de alguma maneira, fique de olho nos passos seguintes.
Qualquer dúvida, favor entrar em contato pelo e-mail mauricio@aspneti.com.
Livros publicados:
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