Visual Basic 6  - Utilização da Grade Vinculada aos dados: DbGrid


Conteúdo

 

Introdução.


A Grade Vinculada aos dados - DbGrid  oferece um meio para visualizar vários 
registros ao mesmo tempo. Assemelha-se ao commando Browse usado no Clipper/FoxPro
e ao modo tabela do Access.

O seu primo pobre no VB seria o controle Grid, e, apenas para dimensionar a dife-
rença ,o Grid está limitado a  16352 linhas e 5450 colunas no Dbgrid a 
quantidade de linhas esta condicionada aos recursos do  sistema e a 1700 colunas,
sem contar que o desempenho do Dbgrid e bem superior ao do Grid.

Enquanto o Grid precisa ser configurado quase que totalmente via código, para usar 
o Dbgrid basta arrastar o ícone do Controle para o seu formulário e definir a 
propriedade DataSource para identificar o controle de dados que contém os dados 
que você quer exibir, e pronto, a grade exibe todos os campos dos registros do 
recordset.

Nota:Para preservar recursos do sistema use uma instrução SQL na propriedade 
     Recordsource do controle de dados que o DbGrid irá utilizar.

Conteúdo

Utilização e configuração.


Vejamos passo a passo como utilizar o Dbgrid com o controle de dados vinculados 
- Data Control.

fig1.
De início selecione o objeto controle de dados na Toolbox do Visual Basic e acrescente-o ao seu formulário.(Fig.1)
Defina a seguir as propriedades:
  • Name - Nome do Controle (O padrão é data1) e Caption - Especifica o nome que aparece no controle de dados.
  • DatabaseName - Para bancos de dados do Access, representa o nome do arquivo do banco de dados, inclusive o nome compleo do caminho. (Para banco de dados diferentes do Access é necessário informar o nome do caminho até o subdiretório dos dados.Ex-Para padrão Dbase : DatabaseName=c:\dir)
  • RecordSource - Especifica as informações que deseja obter no banco de dados - uma tabela , uma instrução SQL .
  • RecordsetType - Se deseja criar um 2-snapshot ou um acessar uma 0-table altere esta propriedade, pois o padrão é 1-dynaset.
  • Connect - Necessária quando o banco de dados não for do Access. Ex - Para banco de dados padrão Dbase - Connect=dBASEIII.

fig.4
A seguir selecione o ícone do DBGrid na ToolBox e arreste-o até o seu form dimensionando como na fig.4. ao lado.

fig.5
Finalmente defina a propriedade DataSource vinculado-a ao controle de dados configurado anteriormente.fig.5.
Para permitir a edição, inclusão e exclusão de registros na grade você deve 
definir como True as propriedades AllowAddNew , AllowUpdate e AllowDelete.
Isto pode ser feito através da folha de propriedades do DBgrid (fig.6), onde 
podemos tambem especificar opções avançadas de tratamento do Recordset sem
uma linha de código sequer.

fig.6
Conteúdo

Projeto - Controle Financeiro..

Chega de conceitos, vamos colocar em prática tudo isto em um projeto simples, um pequeno
controle financeiro que você depois pode aperfeiçoar. Então mão a obra:
-objetivo:  Controlar a  movimentação de contas bancárias.

-Constituição:  
1-Vamos iniciar com a criação do menu, simples na verdade, mas que serve para 
os nossos propósitos. Fica a seu critério incrementá-lo. Vamos lá.

-Inicie o VB e acione a opção Insert->MDI Form para inserir um formulário
MDI que conterá os demais formulários do projeto.

-O nosso formulário deverá ter o aspecto mostrado na figura 1.0 abaixo:

fig 1.0

Neste formulário temos os seguintes
controles:

-1 controle SSPanel
-5 botões SSCommand

Além disso temos um menu feito
no Editor de Menus do Visual 
Basic.
-Insira os controles no formulário e configure suas propriedades
como indicado a seguir na tabela 1.0:

 Tabela 1.0 - Objetos e propriedades do form frmmenu.
 ----------------------------------------------------------------------------
  Objeto              Propriedade         Configuração
 ----------------------------------------------------------------------------
  MDIForm               Name                frmmenu
                        Picture             fig 1.0 
 ----------------------------------------------------------------------------
(*)SSCommand            Name                SSCommand1(0)
                        Picture             fig 1.0 - Clientes,Contas,Transações
                        BevelWidth          1
 ---------------------------------------------------------------------------
  SSCommand             Name                SSCommand1(1)
                        Picture             fig 1.0 - Gerenciar o movimento
                        BevelWidth          1
 ---------------------------------------------------------------------------
  SSCommand             Name                SSCommand1(2)
                        Picture             fig 1.0 - Relatórios do Sistema
                        BevelWidth          1
 ---------------------------------------------------------------------------
  SSCommand             Name                SSCommand1(3)
                        Picture             fig 1.0 - Ajuda do Sistema
                        BevelWidth          1
 ---------------------------------------------------------------------------
  SSCommand             Name                SSCommand1(4)
                        Picture             fig 1.0 - Sair do Sistema
                        BevelWidth          1               
 ---------------------------------------------------------------------------                         
  SSPanel               Caption             ""
                        Name                painel
                        Align               1-Align Top
                        BevelWidth          1
                        BevelInner          0-None
                        BevelOuter          2-Raised
 ---------------------------------------------------------------------------
(*)Constituem um "control array" - Controles com o mesmo nome e do mesmo 
   tipo, dotados de um índice identificador.

(**)Para usar o Editor de Menus do VB pressione CTRL+E e informe o nome que 
    deseja para o menu na propriedade Caption e na propriedade Name
    informe o nome de referência do menu.

    Para criar subitens clique na seta para direita  repita o passo anterior
    e a seguir no botão Next para ir para o próximo subitem.

    Obs:Para sublinhar a primeira letra do nome do menu insira o caractere  & 
        antes da letra. Ex: &Cadastros   ->  exibe  Cadastros.


2-Agora basta atribuir o código a cada botão de comando , no nosso caso so usaremos
o botão que gerencia o movimento e o botão para sair do sistema. 

-No botão que gerencia o movimento - Menu Movimento - iremos carregar o formulário
frmtrans.
-No botão para sair do Sistema inserimos o código que encerra a aplicação.Veja abaixo:

Private Sub SSCommand1_Click(Index As Integer)

   Select Case Index
      Case 0 'botão 1 - Cadastramentos (por sua conta)
      Case 1 'Gerencia movimento           
         frmtransa.Show
      Case 2 'Relatórios 
      Case 3 'Ajuda
      Case 4 'Sair da aplicação
         end
   End Select   
        
End Sub

Conteúdo

Controle Financeiro - Definição das tabelas..

Vamos agora definir o banco de dados e as tabelas utilizadas pelo sistema. A princípio o sistema usará as seguintes tabelas:


- BANCO.MDB   - será o banco de dados do nosso sistema.
- tblcli      - Tabela de cadastro dos clientes.
- tblcontas   - Tabela de cadastro das contas a controlar.
- tblcodtrans - Tabela de cadastro dos códigos das transações realizadas.
- tbltrans    - Tabela onde será registrada toda a transação realizada.

Vejamos agora a definição dos campos de cada tabela e a criação do banco de dados.

1-Crie o seu banco de dados utilizando o Data Manager ou use
 o Microsoft Access e grave-o com o nome de BANCO.MDB.

2-Crie uma tabela com o nome de tblcli com a seguinte estrutura:
  ----------------------------------------------------
   Nome do Campo       Tipo de Dados        Tamanho
  ----------------------------------------------------
    COD_CLI              LONG INTEGER(*)        
    DES_CLI              CARACTER              30
  ---------------------------------------------------- 
  (*)Como cada cliente deve ter um codigo único  garantindo assim a exata 
  identificação do mesmo, defina o tipo de dados para o campo código como
  LONG INTEGER , e ative o atributo Counter e a opção Required.

3-Crie uma tabela com o nome de tblcontas com a seguinte estrutura:
  ----------------------------------------------------
   Nome do Campo       Tipo de Dados        Tamanho
  ----------------------------------------------------
    COD_CLI             LONG 
    COD_CONTA           LONG                   30
    DES_CONTA           TEXT                   30      
  ---------------------------------------------------- 
   
-Defina um índice para os campos cod_cli e cod_conta com o nome de cliconta
 e com as seguintes propriedades: Unique, Primary index , Required. 

4-Crie uma tabela com o nome de tblcodtrans com a seguinte estrutura:
  ----------------------------------------------------
   Nome do Campo       Tipo de Dados        Tamanho
  ----------------------------------------------------
    COD_TRAN            LONG 
    DES_TRAN            TEXT                  30
  ---------------------------------------------------- 
  
-Defina um índice para o campo COD_TRANS  e indique-o como chave primária
  
5-Finalmente , Crie uma tabela com o nome de tblcodtrans com a estrutura:
  ----------------------------------------------------
   Nome do Campo       Tipo de Dados        Tamanho
  ----------------------------------------------------
    COD_LANCA           LONG INTEGER(*)
    COD_TRANS           LONG 
    COD_CLI             LONG
    COD_CONTA           LONG
    DATA_TRANS          DATE/TIME
    LANCAMENTO          CURRENCY
    SALDO               CURRENCY
    NU_DCTO             TEXT                 15
    OBS_TRANS           TEXT                 30
  ---------------------------------------------------- 
(*)Como cada lancamento deve ter um codigo único  garantindo assim sua exata 
  identificação , defina o tipo de dados para o campo cod_lanca
  LONG INTEGER , e ative o atributo Counter e a opção Required.
 
-Defina os seguintes índices para esta tabela:

  ----------------------------------
   nome do indice       composição      
  ----------------------------------    
  - PrimaryKey          cod_lanca      índice - chave primária (já definido) 
  ----------------------------------     
  - datatrans           data_trans     índice - datatrans por data de transação
  ----------------------------------

Conteúdo 

Controle Financeiro - Interface com o usuário.

Vamos agora desenhar a interface com o usuário. Nesta fase iremos construir três formulários que comporão o nosso projeto:

- frmtrans - Formulário que gerencia a movimentação das contas
- frmexcl  - Formulário para exclusão de lançamentos
- frmincl  - Formulário para incluir lançamentos
- frmalt   - Formulário para efetuar alterações nos lancamentos efetuados


1-O formulário frmtrans é o formulário principal de nossa aplicação , pois
através dele iremos gerenciar a movimentação das contas. Ele terá o aspecto da
fig1.0 abaixo:


fig 1.0
Para montar o formulário acima descrito observe os seguintes passos: 

1-Inicie  um novo projeto no Visual Basic.Grave o formulário Form1 
  como frmtrans. 

2-Adicione ao Form1 os objetos e configure as propriedades conforme  
  a tabela 1.0 abaixo :

 Tabela 1.0 - Objetos e propriedades do formulário frmtrans
 ----------------------------------------------------------------------------
  Objeto              Propriedade         Configuração
 ----------------------------------------------------------------------------
  Form                  Name                frmtrans
                        Caption             "Movimentação Contas Correntes"
                        MDIChild            True
 ----------------------------------------------------------------------------
  Frame                 Name                Frame1
                        Caption             Cliente / Conta Corrente
 ----------------------------------------------------------------------------
  Frame                 Name                Frame2
                        Caption             Período / Tipo de Transação
 ----------------------------------------------------------------------------
  ComboBox              Name                CboCliente
                        style               0-Dropdown Combo   
 ----------------------------------------------------------------------------
  ComboBox              Name                CboConta
                        style               0-Dropdown Combo   
 ----------------------------------------------------------------------------
  Label                 Name                Label6
                        Caption             ""
 ----------------------------------------------------------------------------
  MaskedBox             Name                maskini
                        Mask                99/99/99
                        PrompInclude        False
                        PromptChar          " "
 ----------------------------------------------------------------------------
  MaskedBox             Name                maskfim
                        Mask                99/99/99
                        PrompInclude        False
                        PromptChar          " "
 ----------------------------------------------------------------------------
  ComboBox              Name                CboTipo
                        style               0-Dropdown Combo   
 ----------------------------------------------------------------------------
(*)CommandButton        Name                command1(0)
                        Caption             "&Incluir"
 ---------------------------------------------------------------------------
  CommandButton         Name                command1(1)
                        Caption             "&Excluir"
 ---------------------------------------------------------------------------
  CommandButton         Name                command1(2)
                        Caption             "&Alterar"
 ---------------------------------------------------------------------------
  CommandButton         Name                command1(3)
                        Caption             "&Sair"
 ---------------------------------------------------------------------------                         
  CommandButton         Name                command2
                        Caption             "&Processa" 
 ---------------------------------------------------------------------------
  SSPanel               Caption             ""
                        Name                SSPanel1
 ---------------------------------------------------------------------------
  Data                  Name                data1
 ---------------------------------------------------------------------------                        
  DbGrid                Name                DbGrid1
                        Column1             Data
                        Column2             Documento
                        Column3             Transacao
                        Column4             Historico
                        Column5             Valor
                        Column6             Saldo
 ---------------------------------------------------------------------------                        
(**)Label               Caption              **
                        AutoSize             ** 
 ---------------------------------------------------------------------------
(*)Constituem um "control array" - Controles com o mesmo nome e do mesmo 
   tipo, dotados de um índice identificador.

(**)Todos os controles Label possuem a propriedade AutoSize=True e
   Caption sendo igual ao nome do respectivos controle descrito na fig 1.0.

2-O formulário frmincl é o formulário que será usado para incluir lançamentos.

Tem o seguinte aspecto mostrado na fig 2.0 abaixo:

fig 2.0
Para montar o formulário acima descrito observe os seguintes passos: 

1-Inicie  um novo projeto no Visual Basic.Grave o formulário Form1 
  como frmincl. 

2-Adicione ao Form1 os objetos e configure as propriedades conforme  
  a tabela 1.0 abaixo :

 Tabela 1.0 - Objetos e propriedades do formulário frmincl
 ----------------------------------------------------------------------------
  Objeto              Propriedade         Configuração
 ----------------------------------------------------------------------------
  Form                  Name                frmincl
                        Caption             "Lançamentos-Inclusão Debito/Crédito
                        MDIChild            True
 ----------------------------------------------------------------------------
  Frame                 Name                Frame1
                        Caption             Lançamento
 ----------------------------------------------------------------------------
  OptionButton          Name                Option1
                        Caption             Débito
                        Value               True
 ----------------------------------------------------------------------------
  OptionButton          Name                Option2
                        Caption             Crédito
                        Value               False
 ----------------------------------------------------------------------------
  Frame                 Name                Frame2
                        Caption             Movimentação
 ----------------------------------------------------------------------------
  MaskedBox             Name                maskdata
                        Mask                99/99/99
                        PrompInclude        False
                        PromptChar          " "
 ----------------------------------------------------------------------------
  MaskedBox             Name                maskvalor
                        format              $#,##0.00;($#,##0.00)
                        Mask                ""
                        PrompInclude        False
                        PromptChar          " "
 ----------------------------------------------------------------------------
  ComboBox              Name                CboTipo
                        style               0-Dropdown Combo   
 ----------------------------------------------------------------------------
  TextBox               Name                txtnudcto
 ----------------------------------------------------------------------------                        
  TextBox               Name                txtdescr
 ----------------------------------------------------------------------------                        
  SSPanel               Caption             ""
                        Name                SSPanel1
 ---------------------------------------------------------------------------
(*)CommandButton        Name                command1(0)
                        Caption             "&Grava"
 ---------------------------------------------------------------------------
  CommandButton         Name                command1(1)
                        Caption             "&Cancela"
 ---------------------------------------------------------------------------
  CommandButton         Name                command1(2)
                        Caption             "&Sair"
 ---------------------------------------------------------------------------
(*)Constituem um "control array" - Controles com o mesmo nome e do mesmo 
   tipo, dotados de um índice identificador.

(**)Todos os controles Label possuem a propriedade AutoSize=True e
   Caption sendo igual ao nome do respectivos controle descrito na fig 2.0.

3-O formulário frmexcl é o formulário que será usado para excluir lançamentos.
Tem o seguinte aspecto mostrado na fig 3.0 abaixo:

fig 3.0
Para montar o formulário acima descrito observe os seguintes passos: 

1-Inicie  um novo projeto no Visual Basic.Grave o formulário Form1 
  como frmexcl. 

2-Adicione ao Form1 os objetos e configure as propriedades conforme  
  a tabela 1.0 abaixo :

 Tabela 1.0 - Objetos e propriedades do formulário frmexcl
 ----------------------------------------------------------------------------
  Objeto              Propriedade         Configuração
 ----------------------------------------------------------------------------
  Form                  Name                frmexcl
                        Caption             "Exclusão de Dados"
                        MDIChild            True
 ----------------------------------------------------------------------------
  Frame                 Name                Frame1
                        Caption             Excluir Dados
 ----------------------------------------------------------------------------
  OptionButton          Name                Option1
                        Caption             A partir de
                        Value               True
 ----------------------------------------------------------------------------
  OptionButton          Name                Option2
                        Caption             Antes de
                        Value               False
 ----------------------------------------------------------------------------
  OptionButton          Name                Option2
                        Caption             No Período de
                        Value               False
 ----------------------------------------------------------------------------
  TextBox               Name                text2
 ----------------------------------------------------------------------------                        
  TextBox               Name                txtdcto
 ----------------------------------------------------------------------------                        
  TextBox               Name                text1
                        Visible             false
 ----------------------------------------------------------------------------                        
  CommandButton         Name                command2
                        Caption             "OK"
 ---------------------------------------------------------------------------
  CommandButton         Name                command1
                        Caption             "&Cancela"
 ---------------------------------------------------------------------------

Conteúdo 

Controle Financeiro - Código do projeto.


-Código do formulário de menu:frmmenu

Botões de Comando do Menu.

Private Sub SSCommand1_Click(Index As Integer)
   select case index
     case 0
     case 1 'frmtransa
       frmtransa.Show 
     case 2 
     case 3
     case 4 'sair
       end
   end select
End Sub


-Código do formulário das transações:frmtransa


-Caixa de combinação cliente

Private Sub cbocliente_Click()
  If cbocliente.Text < > "" Then
     Dim sql_tmp As String
     sql_tmp = "SELECT * FROM tblcontas WHERE tblcontas.cod_cli=" & cbocliente.ItemData(cbocliente.ListIndex)
     enche_combo cboconta, sql_tmp, "cod_conta", "cod_cli"
  End If
End Sub


-caixa de combinação conta

Private Sub cboconta_Click()
  If cboconta.Text < > "" Then
      Dim arqtemp As Recordset
      Set arqtemp = db.OpenRecordset("tblcontas", dbOpenTable)
      arqtemp.Index = "codconta"
      arqtemp.Seek "=", Val(cboconta.Text)
      Label6.Caption = arqtemp("desc_conta")
      arqtemp.Close
      Maskini.SetFocus
  End If
End Sub


-Código dos botões Incluir, Excluir, Alterar e Sair

Private Sub Command1_Click(Index As Integer)
    Dim msg As String
   
    Set tabela = db.OpenRecordset("tbltrans", dbOpenTable)
    tabela.Index = "cod_conta"
         
    Select Case Index
    Case 0 'incluir
         alterareg = False
         frmtrans_i.Show 1
    Case 1  'excluir
         frmexcl.Show 1
         data2.Refresh
    Case 2 'alterar
         if dbgrid1.columns(0) < > "" then 
            tabela.Seek "=", DBGrid1.Columns(0)
         else
            msgbox "Selecione um lancamento a alterar ! "
            exit sub
         endif
         alterareg = True
         frmtrans_i.Show 1
    Case 3
        Unload Me
        Exit Sub
    End Select
    
    atualiza_grid (sql)
    Data2.Refresh

End Sub


-Código do botão Processar

Private Sub Command2_Click()
  
  Dim msg As String
  Dim x As Integer
  
  '------checa selecao de cliente/conta--
  If cbocliente.ListIndex = -1 Then
    msg = "Selecione um cliente !"
    MsgBox msg, vbExclamation
    cbocliente.SetFocus
    Exit Sub
  End If
  If cboconta.ListIndex = -1 Then
    msg = "Selecione uma conta !"
    MsgBox msg, vbExclamation
    cboconta.SetFocus
    Exit Sub
  End If
    
  '-- atribui cliente/conta as variaveis publicas
  Cliente = cbocliente.ItemData(cbocliente.ListIndex)
  conta = cboconta.Text
  
  '--habilita botões de comandos--
  For x = 0 To 2
    Command1(x).Enabled = True
  Next
  
  '-- estabelece consulta SQL ------
  sql = "SELECT data_trans, cod_trans, lancamento, nu_dcto, saldo, obs_trans  FROM tbltrans"
  sql = sql & " WHERE cod_cli=" & cbocliente.ItemData(cbocliente.ListIndex)
  sql = sql & " AND cod_conta=" & cboconta.Text
  
  '---------define tipo da transacao para consulta--
  If cbotipo.ListIndex < > -1 Then
      sql = sql & " AND cod_trans=" & cbotipo.ItemData(cbotipo.ListIndex)
   End If
  
  '---verifica data inicial/final e define período-----
  If Maskini < > "  /  /  " And maskfim < > "  /  /  " Then
    If Not IsDate(Maskini) Then
      msg = "Data inicial invalida"
      Maskini.SetFocus
      MsgBox msg, vbExclamation
      Exit Sub
    ElseIf Not IsDate(maskfim) Then
      msg = "Data final inválida "
      maskfim.SetFocus
      MsgBox msg, vbExclamation
      Exit Sub
    End If
     sql = sql & " AND data_trans >= " & "#" & Format((Maskini), "mm/dd/yy") & "#"
     sql = sql & " AND data_trans <= " & "#" & Format((maskfim), "mm/dd/yy") & "#" 
    End If
 '-----atualiaza Recordsource------- 
sql="sql" & " ORDER BY data_trans" 
Data2.RecordSource="sql" 
atualiza_grid (sql) 
Data2.Refresh 
End Sub 
-Código de carga do formulário

Private Sub Form_Load()
  Dim x As Integer
  
  '-------define tamanho do form----
  Me.Width = 8295
  Me.Height = 5595
  
  '-- desabilita botões de comando
  For x = 0 To 2
    Command1(x).Enabled = False
  Next

  '---- abre tabela / e define índice ativo---
  'Set tabela = db.OpenRecordset("tbltrans", dbOpenTable)
  'tabela.Index = "clicndtr"
  
  '----configura data control---
  Data2.DatabaseName = App.Path & "\joias.mdb"
  Data2.RecordSource = "SELECT * FROM tbltrans WHERE cod_trans = Null"
  
  '---------formata grid--------------------
  DBGrid1.Columns(0).Width = 900
  DBGrid1.Columns(1).Width = 950
  DBGrid1.Columns(2).Width = 925
  DBGrid1.Columns(3).Width = 2200
  DBGrid1.Columns(4).Width = 1300
  DBGrid1.Columns(5).Width = 1300
  dbgrid1.columns(6).width = 1300
  
  '----------atualiza o grid-------------------
  Data2.Refresh
  
  '-------atualiza combobox  cliente ------------------
  enche_combo cbocliente, "tblcli", "des_cli", "cod_cli"
  enche_combo cbotipo, "tblcodtrans", "des_tran", "cod_tran"
  '----------------------------------------------
 
 End Sub


-Código da função que atualiza o Grid

Public Sub atualiza_grid(sql As String)
  Dim credito, debito As Currency
  Dim saldo_atu As Currency
  Dim arqtemp As Recordset
  saldo_atu = 0
  
  '---------------------------------------------
  Set arqtemp = db.OpenRecordset(sql, dbOpenDynaset)
  '---------------------------------------------
  If arqtemp.EOF Then
    MsgBox "Não há dados no arquivo !", vbExclamation
    arqtemp.Close
    Exit Sub
  End If
  arqtemp.MoveFirst
  Do
    credito = 0
    debito = 0
    If Not IsNull(arqtemp![lancamento]) Then
        If arqtemp![lancamento] > 0 Then
          credito = arqtemp![lancamento]
        Else
          debito = arqtemp![lancamento]
        End If
    Else
        credito = 0
        debito = 0
    End If
    saldo_atu = credito + debito + saldo_atu
    arqtemp.Edit
    arqtemp![saldo] = saldo_atu
    arqtemp.Update
    arqtemp.MoveNext
  Loop While Not arqtemp.EOF
  arqtemp.Close
End Sub


Código do formulário para incluir/alterar dados: Frmincl

Código dos botões Gravar, Cancelar e Sair 

Private Sub Command1_Click(Index As Integer)
    Select Case Index
    Case 0 'gravar
        grava_recs
        tabela.Update
        If alterareg Then
            Unload Me
            Exit Sub
        End If
        tabela.AddNew
        maskdata.SetFocus
    Case 1 'cancelar
        MsgBox "Atenção , as informações não foram gravadas ! "
        If alterareg Then
            Unload Me
            Exit Sub
        End If
        clear_controls
        maskdata.SetFocus
    Case 2 'sair
        Unload Me
    End Select
End Sub


Código de rotina de gravação 
Código da rotina que limpa os controles

Public Sub clear_controls()
    maskdata = "  /  /  "
    maskvalor = ""
    cbotipo.ListIndex = -1
    txtnudcto = ""
    txtdescr = ""
End Sub


Código da rotina que foca a data

Private Sub Form_Activate()
  maskdata.SetFocus
End Sub


Código da carga do formulário

Private Sub Form_Load()
  '------carrega combobox de tipo de transacao -----
  enche_combo cbotipo, "tblcodtrans", "des_tran", "cod_tran"
  'Set tabela = db.OpenRecordset(tbltrans, dbOpenTable)
  If alterareg = True Then
    load_recs
  Else
    clear_controls
  End If
End Sub


Código da carga do formulário load_recs

Public Sub load_rec()
    maskdata = Format$(tabela("data_trans"), "dd/mm/yy")
    If tabela("lancamento") <0 Then 
Option1.Value="True" 
maskvalor="Format(-1" * tabela("lancamento"), "###,###,##0.00") 
Else Option2.Value="True" 
maskvalor="Format$(tabela("lancamento")," "###,###,##0.00") 
End If cbotipo.Text="tabela("cod_trans")" 
txtnudcto="tabela("nu_dcto")" 
txtdescr="tabela("obs_trans")" 
End Sub 
Código do formulário para excluir dados: Frmexcl


Código do botão Cancelar

Private Sub Command1_Click()
    Unload Me
End Sub



Código do botão OK

Private Sub Command2_Click()
Dim sqlexcl As String

If Not IsDate(Text2.Text) Then
    MsgBox "Falta informar da data inicial ", vbCritical
    Text2.SetFocus
    Exit Sub
End If

sqlexcl = "DELETE FROM tbltrans WHERE [cod_cli]=" & cliente
sqlexcl = sqlexcl & " AND tbltrans![cod_conta]=" & conta

If txtdcto < > Empty Then
    sqlexcl = sqlexcl & " AND tbltrans![nu_dcto]=" & Val(txtdcto.Text)
End If

If Option1.Value = True Then
    sqlexcl = sqlexcl & " AND tbltrans![data_trans] >= " & "#" & CDate((Text2.Text)) & "#"
End If
If Option2.Value = True Then
    sqlexcl = sqlexcl & " AND tbltrans![data_trans] <= " & "#" & CDate((Text2.Text)) & "#" 
End If 
If Option3.Value="True" Then 
    If Not IsDate(Text1.Text) Then 
        MsgBox "Data final incorreta !", vbCritical 
         Text1.SetFocus 
           Exit Sub 
      End If 
       sqlexcl="sqlexcl" & " AND tbltrans![data_trans] BETWEEN " & "#" & CDate(Text2.Text) & "#" & " AND " & "#" & CDate(Text1.Text) & "#" 
End If 
   Beep 
If MsgBox("Atenção os registros serão eliminados dos arquivos, Confirma ? ", vbQuestion + vbYesNo + vbDefaultButton2)="vbYes" Then 
    db.Execute sqlexcl 
End If 
Unload Me 
End Sub 
Código de Carga do formulário

Private Sub Form_Load()

'centraliza formulário (no VB 5.0 usar a propriedade StartupPosition)
Left = (Screen.Width - Width) / 2
Top = (Screen.Height - Height) / 2

     
Label2.Visible = False
Text1.Visible = False

End Sub


Código do botão de opção Antes de

Private Sub Option1_Click()
    If Option1.Value = True Then
        Label2.Visible = False
        Text1.Visible = False
    End If
    Text2.SetFocus
End Sub


Código do botão de opção A Partir de
Private Sub Option2_Click()
    If Option2.Value = True Then
        Label2.Visible = False
        Text1.Visible = False
    End If
    Text2.SetFocus
End Sub



Código do botão de opção No período de

Private Sub Option3_Click()
    If Option3.Value = True Then
        Label2.Visible = True
        Text1.Visible = True
    End If
    Text2.SetFocus
End Sub


Código do modulo financa.bas


Código do seção general declarations

Option Explicit
Public area As Workspace
Public db As Database
Public tabela As Recordset
Public consulta As QueryDef
Public alterareg As Boolean
Public sql As String
Public cliente As Long
Public conta As Long


Código de Sub Main

Sub main()
   'define area ativa e abre arquivo de dados
   Set area = DBEngine.Workspaces(0)
   Set db = area.OpenDatabase(App.Path & "\banco.mdb")
   'mostra formulário de menu
   frmmenu.Show
End Sub


Código da função que preenche as combobox

Public Sub enche_combo(combo As Control, data As String, campo As String, indice As String)

'-- cria variável recordset temporária
Dim arqtemp As Recordset
'-----limpa combo
combo.Clear
'-----abre tabela como Snapshot
Set arqtemp = db.OpenRecordset(data, dbOpenSnapshot)
'--inicia loop através da tabela---
Do Until arqtemp.EOF
    combo.AddItem arqtemp(campo)
    combo.ItemData(combo.NewIndex) = arqtemp(indice)
    arqtemp.MoveNext
Loop
'---fecha recordset e não seleciona nada na combo
arqtemp.Close
combo.ListIndex = -1

End Sub

Veja abaixo a tela do formulário transações em tempo em execução:

Conteúdo

DbGrid - Dicas e Truques.

1-Tornando uma coluna invisível

DbGrid1.columns(i).visible= False
Conteúdo
 
Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti