Você está na página 1de 6

Visual Basic 6 e ASP: Criando um sistema usando Componente e Procedures do SQL Server 2000 Nesse artigo vou mostrar

como podemos desenvolver um cadastro de clientes usando Procedures e Componente (DLL). uma forma que a Microsoft desenvolve todos os seus softwares. Por isso dizemos que vamos desenvolver sistemas no padro Microsoft. As pessoas acham que muito difcil. Realmente um pouco sim, porm no tanto e vou provar. Hehehehe Vamos l. Primeiro de tudo, vamos criar nosso banco de dados no SQL Server 2000. Vou cham la de PAP _Comissao. Veja abaixo: ComissaoID int Chave Primria DataPreenchimento datetime AnoPesquisa int PessoFisicaID int PessoaJuridicaID int NomeComissao nvarchar 250 VincAdm nvarchar 500 NomeCoordenador nvarchar 100 Agora vamos criar a nossa Stored Procedure que ser responsvel pela gravao dos registros que sero informados na tela na nossa tabela PAP_Comissao. Vou cham la de PAP _Proc_Comissao_Gravar. Veja Abeixo: CREATE PROC dbo.PAP_Proc_Comissao_Gravar --aqui feita a declarao das variveis que vo receber as informaes que sero digitadas na tela @ComissaoID int =NULL, @DataPreenchimento datetime=NULL, @AnoPesquisa int=NULL, @PessoaFisicaID int=NULL, @PessoaJuridicaID int=NULL, @NomeComissao nvarchar(250)=NULL, @VincAdm nvarchar(500 )=NULL, @NomeCoordenador nvarchar(100)=NULL --retorna todas as entradas de dados. Ou seja, retorna as informaes que sero gravadas. @RETURN INT OUTPUT AS set nocount on Toda vez que voc for comear uma clusula SQL numa Stored Procedure preciso indicar onde comear. Nesse caso voc indica com o BEGIN e finaliza com o END. Vou explicar cada parte da Procedure. BEGIN Begin Tran no obrigatrio -- aqui voc est indicando em qual tabela ser gravado os registros INSERT INTO dbo.PAP_Comissao ( -- aqui voc seleciona os campos da tabela que recebero os registros DataPreenchimento ,AnoPesquisa

,PessoaFisicaID ,PessoaJuridicaID ,NomeComissao ,VincAdm ,NomeCoordenador ) VALUES ( -- aqui ser jogado os dados que ser digitado na tela @DataPreenchimento ,@AnoPesquisa ,@PessoaFisicaID ,@PessoaJuridicaID ,@NomeComissao ,@VincAdm ,@NomeCoordenador ) -- retona o id no campo que foi criado para o conjunto de registros que acabou de ser gravado SET @RETURN = @@IDENTITY Commit no obrigatrio --finaliza a clusula END -- retorna a procedure RETURN @RETURN --executa a procedure GO Depois de terminado o processo do Banco de Dados, precisamos fazer o componente, conhecido mais como a DLL, que consultar o banco dados, vai localizar a Procedure que criamos para assim poder gravar os dados no banco. Para o desenvolvimento da DLL, vou utilizar o Visual Basic 6 (VB6). Vamos l...

Abra o VB6. Ir abrir uma janela New Project, onde pedir para voc escolher um novo Projeto. Escolha o projeto ActiveX DLL e clique em ok. Perceba que ao lado tem uma janela Project onde mostra o nome do projeto mais Class1. Voc pode ter quantas classes quiser. Renomeie a Class1 para clsBdComissao. Dentro dessa classe pode se criar vrios mtodos, que na verdade so funes. Vamos criar o mtodo que ser responsvel por chamar a procedure que ir gravar os dados no banco. Vou chamar esse mtodo de Gravar_Parte1. No esquea de fazer a conexo com o banco de dados antes de iniciar tudo. O mtodo o seguinte: Public Function Gravar_Parte1(ByRef perro As Variant, _ ByVal pComissaoID As Variant, _ ByVal pDataPreenchimento As Variant, _ ByVal pAnoPesquisa As Variant, _ ByVal pPessoaJuridicaId As Variant, _ ByVal pNomeComissao As Variant, _

ByVal pVincAdm As Variant, _ ByVal pNomeCoordenador As Variant ) As Variant

Dim cmd0 As New ADODB.Command perro = False Gravar_Parte1 = Null On Error GoTo Saida cmd0.ActiveConnection = connStr chama minha conexo com banco cmd0.ActiveConnection.CursorLocation = adUseClient cmd0.CommandType = adCmdStoredProc define o tipo de comando. No caso ir usar Stored Procedure do SQL Server 2000 cmd0.CommandTimeout = 300 tempo que pode expirar caso conexo demore a ser feita. cmd0.CommandText = " PAP_Proc_Comissao_Gravar " chama Procedure que foi criada. cmd0.Parameters.Refresh atualiza os parmetros que possui na Procedure. Todas as variveis que voc definiu na Procedure tem que estar iguais para que voc possa passar os parmetros corretos que se definiu nessa funo. Reparem que tem as variveis da Procedure e as variveis que ns passamos como parmetro no mtodo. Essas variveis que passamos no mtodo so as que recebero os dados e passaro para as variveis das Procedures e depois incluir essas dados no banco. cmd0.Parameters("@ComissaoID") = IIf(Len(Trim(pComissaoID)) = 0, Null, pComissaoID) cmd0.Parameters("@DataPreenchimento") = IIf(Len(Trim(pDataPreenchimento)) = 0, Null, pDataPreenchimento) cmd0.Parameters("@AnoPesquisa") = IIf(Len(Trim(pAnoPesquisa)) = 0, Null, pAnoPesquisa) cmd0.Parameters("@PessoaJuridicaID") = IIf(Len(Trim(pPessoaJuridicaId)) = 0, Null, pPessoaJuridicaId) cmd0.Parameters("@NomeComissao") = IIf(Len(Trim(pNomeComissao)) = 0, Null, pNomeComissao) cmd0.Parameters("@VincAdm") = IIf(Len(Trim(pVincAdm)) = 0, Null, pVincAdm) cmd0.Parameters("@NomeCoordenador") = IIf(Len(Trim(pNomeCoordenador)) = 0, Null, pNomeCoordenador) lembra do @RETURN INT OUTPUT ? Ento aqui retorna null, porque a Procedure retorna apenas os dados cadastrados cmd0.Parameters("@RETURN") = Null cmd0.Execute retorna o que entrou na no mtodo Gravar_Parte1 = cmd0.Parameters("@RETURN_VALUE") Set cmd0 = Nothing o prprio VB depura pra mostrar se h algum erro ou no. #If rdebug Then Call GetObjectContext().SetComplete #End If

Exit Function Saida: Set cmd0 = Nothing End Function Pronto, a parte considerada a mais difcil est concluda. Vamos fazer a tela. Essa a parte que mais gosto, claro a mais fcil. Na tela vamos apenas chamar o componente que criamos. O componente (DLL) ele faz tudo, j que dentro dele ele chama a Procedure que grava os dados. Essa a tela de cadastro: <tr height="18"> <td class="label" colspan="2">2.1 DataPreenchimento: (at&eacute; 250 caracteres)</td> <!-- <td>&nbsp; </td> --> </tr> <tr height="18"> <td class="label" colspan="2"><font class="cpObrigatorio"> <textarea name=" DataPreenchimento" style="WIDTH: 600px; HEIGHT: 50px" cols="23" onkeyUp="CaracterQtde(this,250);"><%=DataPreenchimento%></textarea> &nbsp;*</font></td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2">2.1 Ano Pesquisa: (at&eacute; 250 caracteres)</td> <!-- <td>&nbsp; </td> --> </tr> <tr height="18"> <td class="label" colspan="2"><font class="cpObrigatorio"> <textarea name=" AnoPesquisa " style="WIDTH: 600px; HEIGHT: 50px" cols="23" onkeyUp="CaracterQtde(this,250);"><%=AnoPesquisa%></textarea> &nbsp;*</font></td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2">2.1 Pessoa Fsca: (at&eacute; 250 caracteres)</td> <!-- <td>&nbsp; </td> --> </tr> <tr height="18"> <td class="label" colspan="2"><font class="cpObrigatorio"> <textarea name=" PessoaFisicaID " style="WIDTH: 600px; HEIGHT: 50px" cols="23" onkeyUp="CaracterQtde(this,250);"><%=PessoaFisicaID%></textarea> &nbsp;*</font></td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2">2.1 Pessoa Juridica: (at&eacute; 250 caracteres)</td>

<!-- <td>&nbsp; </td> --> </tr> <tr height="18"> <td class="label" colspan="2"><font class="cpObrigatorio"> <textarea name=" PessoaJuridicaID " style="WIDTH: 600px; HEIGHT: 50px" cols="23" onkeyUp="CaracterQtde(this,250);"><%=PessoaJuridicaID%></textarea> &nbsp;*</font></td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2">2.1 - Nome : (at&eacute; 250 caracteres)</td> <!-- <td>&nbsp; </td> --> </tr> <tr height="18"> <td class="label" colspan="2"><font class="cpObrigatorio"> <textarea name="NomeComissao" style="WIDTH: 600px; HEIGHT: 50px" cols="23" onkeyUp="CaracterQtde(this,250);"><%=NomeComissao%></textarea> &nbsp;*</font></td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2">2.2 - Vincula&ccedil;&atilde;o administrativa/posi&ccedil;&atilde;o da Comiss&atilde;o na institui&ccedil;&atilde;o: (at&eacute; 500 caracteres)</td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2"><textarea name="VincAdm" style="WIDTH: 600px; HEIGHT: 50px" cols="23" onkeyUp="CaracterQtde(this,500);"> <%=VincAdm%></textarea></td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" colspan="2">2.3 - Nome do Coordenador ou respons&aacute;vel pela comiss&atilde;o local:</td> <!-- <td>&nbsp;</td> --> </tr> <tr height="18"> <td class="label" width="100" colspan="2"><input type="text" name="NomeCoordenador" value="< %=NomeCoordenador%>" size="97" maxlength="58"><font class="cpObrigatorio">&nbsp;*</font></td> <!-- <td>&nbsp;</td> --> </tr> Crie uma funo javascrit como essa: function gravar() { oFrm.action = 'default.asp?link=comissao/com_Comissao2.asp'; oFrm.submit(); } Ela ser responsvel por redirecionar para a outra pgina que far a gravao dos dados.

Faa um boto e no seu evento onclick chame a funo gravar.

Agora, vamos para a pgina que vais gravar os dados. Primeiro de tudo vamos resgatar o que foi digitado nos campos. Fazemos isso da seguinte forma: DataPreenchimento = request("DataPreenchimento") AnoPesquisa = request("AnoPesquisa ") PessoaFisicaID = request("PessoaFisicaID ") PessoaJuridicaID = request("PessoaJuridicaID ") NomeComissao = request("NomeComissao ") VincAdm = request("VincAdm ") NomeCoordenador = Request("NomeCoordenador ") Agora ns vamos gravar. Mas para isso precisamos chamar a nossa DLL e faremos assim: set con = server.CreateObject("dadosPAP.clsBdComissao") viram que simples? Rsrsrs Agora sim vamos gravar: r_com = con.Gravar_Parte1(erro,codComissao, DataPreenchimento, AnoPesquisa, PessoaFisicaID,NomeComissao, PessoaJuridicaID, NomeComissao, VincAdm, NomeCoordenador) Reparem que essas variveis so as que vo receber os dados informados. Fizemos isso quando resgatamos os valores. Veja acima nosso requests. E reparem tambm a varivel erro e codComissao. A varivel erro vai retonar algum erro caso, exista. E isso ser informado no Componente. No mtodo que criamos. Voltem e vejam a varivel perro que passei. E a varivel codComissao, coloquei para no dar erro, j que passei como parmetro no nosso Componente e na Procedure. E como ele auto numerao ser acrescido normalmente. A voc estar se perguntando: Mais pra que ento ele informou esse parmetro, j que auto numerao? Bom, se voc quiser apenas alterar um registro, voc simplesmente traz o id da comisso e joga nessa varivel e em vez de gravar ela atualiza. Mais isso vou mostrar no prximo artigo. Agora fechamos a instncia do componente: set con = nothing Ufa !!! Terminamos. dessa forma que se faz um sistema de cadastro usando padro Microsoft. Obs: Trabalhar com padro Microsoft bem valorizado no mercado de trabalho. Pra quem trabalha em fbrica de software e fbrica de sites assim que os desenvolvedores trabalham. Digo isso porque trabalho numa fbrica de sites e assim. Hehehehhe At a prxima galera.

Você também pode gostar