Mostrando postagens com marcador VB6. Mostrar todas as postagens
Mostrando postagens com marcador VB6. Mostrar todas as postagens

terça-feira, 4 de novembro de 2008

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:



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


Artigo completo (View Full Post)

sábado, 26 de abril de 2008

"ADO Recordset" desconectado

A seguir, vamos demonstrar uma sacada genial do Felipe Gerço: Trabalhando com um "ADO Command" desconectado no VB6 (Semelhentemente ao que fazemos no Delphi com um "dataset").


Dim rsZN As New ADODB.Recordset

Private Sub SetupCommandDesconectado()
On Error Resume Next
rsZN.Close 'Se ele não estiver aberto vair ocorer uma exceção

rsZN.LockType = adLockBatchOptimistic
rsZN.CursorLocation = adUseClient
rsZN.CursorType = adOpenStatic

rsZN.Fields.Append "DescricaoZn", adVarChar, 200
rsZN.Fields.Append "ValorZn", adDouble

rsZN.Open

End Sub

Private Sub Command4_Click()
rsZN.AddNew Array("DescricaoZn", "ValorZn"), Array(Text1.Text, Text2.Text)

End Sub


Artigo completo (View Full Post)

domingo, 9 de março de 2008

Type Casting - VB6

Num laço (For) percorrer todos os controles do Form em VB6.



Private Sub Command1_Click()
Dim ZnobjCtlAux As Control
Dim i As Integer

For Each ZnobjCtlAux In Me.Controls
ZnobjCtlAux.Tag = -1
Next ZnobjCtlAux

For i = 0 To Me.Controls.Count - 1
MsgBox Me.Controls(i).Name & " - " & Str(Me.Controls(i).Tag)

'MsgBox Me.Controls(i).Type & " - " & Str(Me.Controls(i).Tag)

If TypeOf Me.Controls(i) Is DTPicker Then
MsgBox "Data picker"

End If
Next i


End Sub

Artigo completo (View Full Post)

domingo, 24 de fevereiro de 2008

Toggle Bookmark - Navegação em Códigos

Dar manutenção em sistemas, sendo eficiente, depende também de uma certa habilidade em navegar no código fonte. Localizar rapidamente, ir para outro ponto e retornar, identificando partes específicas que deverão res modificadas, durante esse processo poder identificar (se possível) as outras partes onde essa, suposta, alteração irá refletir, definitivamente não é algo trivial. A maioria das IDEs possuem alguns mecanismos de auxílio a essa navegação, possibilitando que isso seja feito com um grau maior de rapidez e eficiência. Os Finders (Crtl+F) e Grap Search (GExpert) são muito importantes neste contexto. Um outro mecanismo que não vivo sem é o mecanismo de “bookmark”.



VB 6

No VB 6 para marcar uma linha de código, para posteriomente localizá-la (Automaticamente/rapidamente) acesse o menu Edit | Bookmarks | Toggle Bookmark. A linha onde o cursor estiver posicionado será marcada por uma retângulo azul claro (aqua) na margem esquerda. Só que no VB 6 os Bookmarks não podem ser nomeados.
Para retornar a uma linha de código marcada com um bookmark acesse o menu Edit | Bookmarks and then select Next Bookmark. O Cursor irá automaticamente para o próximo bookmark definido. Se por acaso o cursos estiver no último bookmark de um módulo ele será possicionado no primeiro do módulo seguinte.
Para limpar todos os bookmarks acesse o menu Edit | Bookmarks | Clear All Bookmarks.


Delphi

No Delphi, seja no BDS ou em versões anteriores, os bookmarks são hierarquizados por números. Na linha a qual deseja marcar digite alternadamente “Ctrl”, em seguida “k” sucedido de um número. Para retornar ao ponto marcado, digite “Ctrl” + [O Número correspondente ao bookmark]. Para desmarcar um bookmark repita as mesmas teclas que digitou para marcar.

Netbeans

No Netbeans, existe um menu específico para navegação. O mecanismo de marcar bookmarks e navegar entre eles é semelhante ao do Vb6. As teclas de atalho mudam:

Toggle Bookmark” – finca no item menu “Navegação” (Ou com o botão direito sobre a margem direita da janela do editor de código). A tecla de atalho é Ctrl + Shift + “m”.
Next Bookmark” - finca no item menu “Navegação” (Ou com o botão direito sobre a margem direita da janela do editor de código). A tecla de atalho é Ctrl + Shift + “.” (ponto).
Next Bookmark” - finca no item menu “Navegação” (Ou com o botão direito sobre a margem direita da janela do editor de código). A tecla de atalho é Ctrl + Shift + “,” (Vírgula).

Artigo completo (View Full Post)

 
BlogBlogs.Com.Br