VB6 & Oracle - Inserindo Dados
O Modelo Cliente/Servidor caracteriza-se por centralizar grande parte dos processos de um sistema de informação no SGBD. Esses processos são programados em forma de UDFs, Procedures e Triggers.
Neste artigo veremos como criar um procedure no Oracle, para em seguida desenvolvermos um aplicativo em VB6 o qual ira chamar a execução da mesma.
Iniciaremos então pelo banco de dados, veja abaixo o código da procedure:
Neste artigo veremos como criar um procedure no Oracle, para em seguida desenvolvermos um aplicativo em VB6 o qual ira chamar a execução da mesma.
Iniciaremos então pelo banco de dados, veja abaixo o código da procedure:
Back-End Script de Banco de Dados
-- Criando a tabela para testar insert apartir de um front-end vb6 CREATE TABLE TESTEGM ( COD VARCHAR(3), DESCRICAO VARCHAR(10) ); -- Procedimento para insert - exemplo de arquitetura cliente/servidor CREATE OR REPLACE PROCEDURE PROC_TESTE_GM ( PCOD IN VARCHAR, PDESCRICAO IN VARCHAR, PAUX_RETORNO OUT VARCHAR) AS BEGIN INSERT INTO TESTEGM (COD, DESCRICAO) VALUES (PCOD, PDESCRICAO); COMMIT; PAUX_retorno := 'OPERAÇÃO REALIZADA COM SUCESSO!'; EXCEPTION WHEN OTHERS THEN PAUX_retorno := SQLERRM || ' INSERT DISTRATO ERRO.' ; -- RETORNA A MENSAGEM COM CÓDIGO E DESCRIÇÃO DO ERRO ORACLE ROLLBACK; END;
Front-end Código do lado Cliente
Neste exemplo, aproveito para demostrar um pouco de modularização. Criei duas funcionalidades, uma que se preocupa com a conexão com o banco, "GetConnectionCRUD". Essa "Sub" retorna um "ADO Command" conectado e configurado como "procedure". Uma segunda rotina, "BuildParams", monta os parâmetros do "ADO Command" (o qual recebe como parâmetro) dinamicamente e atribui valor para os mesmos.
Private Sub BuildParams(ByRef obj As ADODB.Command) 'Cria o parâmetro de saida no commad objInsertCommandAux.Parameters.Append objInsertCommandAux.CreateParameter("PAUX_RETORNO", adBSTR, adParamOutput) 'Cria os parâmetros de entrada nos commads já passando o valor para eles obj.Parameters.Append objInsertCommandAux.CreateParameter("PCOD", adBSTR, adParamInput, , Text1.Text) obj.Parameters.Append objInsertCommandAux.CreateParameter("PDESCRICAO", adBSTR, adParamInput, , Text2.Text) End Sub Private Function GetConnectionCRUD() As ADODB.Command ' Retorna um objeto (um activeX) ja conectado ao banco ' Dessa forma podemos de forma coesa, isolada definir uma conexão com o banco Dim objCommandAux As New ADODB.Command Dim MyConn As New ADODB.Connection MyConn.Open "Provider=MSDAORA;Data Source=desvbancoteste;User ID=sistema;Password=landjah;" objCommandAux.ActiveConnection = MyConn objCommandAux.CommandType = adCmdStoredProc Set GetConnectionCRUD = objCommandAux End Function
Em seguinda codificaremos no evento OnClick de um botão a execução dos procedimentos, "Caixa Preta", descritos acima.
Dim objInsertCommandAux As New ADODB.Command Dim AuxRetorno As String ' Para trabalar desconectado do banco ... Dim rsZN As New ADODB.Recordset Private Sub Command1_Click() Set objInsertCommandAux = GetConnectionCRUD() ' Define que o command criado executará proc de Insert objInsertCommandAux.CommandText = "PROC_TESTE_GM" BuildParams objInsertCommandAux '*** Executando a stored procedure objInsertCommandAux.Execute MsgBox (objInsertCommandAux("PAUX_RETORNO")) 'Destroi o objeto Set objInsertCommandAux = Nothing End Sub
A parte do código em VB está sem quebra de linha.
ResponderExcluirTivemos um problema no css!!!
ResponderExcluirPrezado leitor anônimo do Estação ZN,
ResponderExcluirGrato pela sua participação!
O problema não é a quebra da linha, o syntax highlight do VB não funcionou. Ainda não tivemos tempo para esse probl...
[]'s