VB - Tutorial DBGrid - revisitado


Cá estou eu falando no DBGrid do VB6 . Mas ora bolas não é Visual Basic ??? Então vamos em frente...

Vou repetir as palavras do artigo anterior (estou sem inspiração ultimamente...)

Ninguém pode falar que eu não tratei do assunto DBGrid no site... Acho que até falei demais sobre ele , basta olhar a relação abaixo dos artigos sobre DBGrid no site :

1- Personalizando e incrementando o DBGrid
2-
DBGrid - Revisitado
3-
Utilização da Grade Vinculada aos dados: DbGrid
4-
Acessando Arquivo Texto c/DBGrid e o Controle Data
5-
Ordenando a coluna com o foco em um DBGrid
6-
Usando o DBGrid no modo não vinculado
7-
DBGrid - Capturando o conteúdo de uma célula

Em tempos de VB.NET e diversas mudanças eu creio que o DBGrid não deverá ser tão usado , eu especialmente não o utilizo mais. Mas como muita gente me envia dúvidas sobre este controle eu estarei falando mais uma vez sobre o DBGrid. Vou mostrar algumas utilizações onde usamos propriedades que podem tornar mais fácil a vida daqueles que usam o DBGrid.

Neste artigo vou mostrar duas coisas interessantes que você pode fazer se for usar o DBGrid. Lembre-se para usar o DBGrid no modo vinculado você usa um Data Control e não um ADO Data Control.

1- Usando os eventos do DBGrid para gerenciar a manutenção de dados do grid.

O DBGrid possui uma série de eventos que podemos usar no tratamento dos dados exibidos no GRID. Como você já deve estar cansado de saber para exibir os dados de uma tabela em um DBGrid basta incluir em um formulário um controle DBGrid e um controle Data Control e a seguir definir as propriedades :

Clique com o botão direito do mouse sobre o DBGRid e selecione a opção Edit ; em seguida selecione Append e inclua tantas quantas colunas você deseja criar. Finalmente clique em Properties e vincule as colunas aos campos da tabela que voce vai mostrar. Abaixo o formulário para o nosso exemplo:

Os eventos do controle DBGrid que vamos usar neste artigo podem ser visto no formulário , conforme abaixo :

Usando estes eventos podemos fazer o tratamento da entrada de dados no DBGrid para alteração , inclusão e exclusão de dados em cada coluna do GRID. Veja abaixo como fica o código. (È uma das possibilidades ...)

Option Explicit

Private Sub DBGrid1_AfterColUpdate(ByVal ColIndex As Integer)

  
' informa ao usuario a atualização da coluna
   MsgBox "Coluna foi atualizada", vbInformation, "DBGrid.AfterColUpdate"

End Sub

Private Sub DBGrid1_AfterDelete()

   ' Informa ao usuario que o registro foi excluido
   MsgBox "Registro foi excluido !", vbInformation, "DBGrid.AfterDelete"
End Sub

Private Sub DBGrid1_AfterInsert()

   ' Informa a inclusao do novo registro
   MsgBox "O novo registro foi gravado no arquivo !", vbInformation, "DBGrid.AfterInsert"
End Sub


Private Sub DBGrid1_AfterUpdate()

    ' Registro atualizado
    MsgBox "O registro foi atualizado com sucesso.", vbInformation, "DBGrid.AfterUpdate"
End Sub

Private Sub DBGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)

  ' solicita o usuario confirmação para excluir
  Dim nResultado As Integer
  '
  nResultado = MsgBox("Confirma alteração de dados ?", vbInformation + vbYesNo, "DBGrid.BeforeColUpdate")
  If nResultado = vbNo Then
        Cancel = False ' cancela alteracao e retorna os dados anteriores
    End If
End Sub

Private Sub DBGrid1_BeforeDelete(Cancel As Integer)

  ' solicita confirmacao de exclusao
  Dim nResultado As Integer

   nResultado = MsgBox("Confirma exclusão deste registro ?", vbInformation + vbYesNo, "DBGrid.BeforeDelete")
   If nResultado = vbNo Then
      Cancel = True ' cancela exclusao
  End If
End Sub

Private Sub DBGrid1_BeforeInsert(Cancel As Integer)

   'solicita confirmacao de inclusao
   Dim nResultado As Integer

   nResultado = MsgBox("Deseja incluir um novo registro?", vbInformation + vbYesNo, "DBGrid.BeforeInsert")
   If nResultado = vbNo Then
     Cancel = True ' cancela inclusao
   End If
End Sub

Private Sub DBGrid1_BeforeUpdate(Cancel As Integer)

' confirma operacao de atualizacao
Dim nResultado As Integer

  nResultado = MsgBox("Salva as alterações no arquivo ?", vbInformation + vbYesNo, "DBGrid.BeforeUpdate")
  If nResultado = vbNo Then
     Cancel = True    ' ignora mudancas
     DBGrid1.ReBind   ' reseta todos os valores
     DBGrid1.Refresh
   End If
End Sub

Private Sub mnuSair_Click()
   End
End Sub
 

Ao executar o projeto e testar a entrada de dados temos abaixo um exemplo de resultado:

Até mais ver ...


José Carlos Macoratti