Subformulários no Visual Basic ?


Se você utiliza o Visual Basic e conhece a facilidade com o Access  cria um formulário
com um subformulário já deve ter ficado com dor de cotovelo, afinal o VB não possui tal
recurso. Será que não possui mesmo ? E se... criarmos algo parecido...  vamos lá.

A idéia básica e montar um projeto com os seguintes elementos:
1-Inicie  um novo projeto no Visual Basic. Grave o formulário como Form1 

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 Agenda
 ----------------------------------------------------------------------------
  Objeto             Propriedade        Configuração
 ----------------------------------------------------------------------------
  Form                  Name                Form1
                        Caption             "Formulário/Subformulário"
 ----------------------------------------------------------------------------
  Data                  Name                Data1
                        Caption             Tabela -> Pedidos (NWIND.MDB)
                        Connect             Access
                        DatabaseName        C:\ACCESS2\APLEXEMP\NWIND.MDB
                        RecordSetType       1-Dynaset
                        RecordSource        Pedidos
 ----------------------------------------------------------------------------
  Data                  Name                Data2
                        Caption             Data2
                        Connect             Access
                        DatabaseName        C:\ACCESS2\APLEXEMP\NWIND.MDB
                        RecordSetType       1-Dynaset
                        RecordSource        Detalhes do Pedido
                        Visible             False
 ----------------------------------------------------------------------------
 (4) DBGrid             Name                DBGrid1
                        Caption             Detalhes dos Pedidos(NWIND.MDB)
                        DataSource          Data2
                        Column1             Número do Pedito
                        Column2             Preço Unitário
                        Column3             Quantidade                        
 ----------------------------------------------------------------------------
  TextBox               Name                Text1
                        Caption             ""
                        DataField           Número do Pedido
                        DataSource          Data1
 ----------------------------------------------------------------------------
  TextBox               Name                Text2
                        Caption             ""
                        DataField           Nome do destinatário
                        DataSource          Data1
 ----------------------------------------------------------------------------
  Label                 Name                Label1
                        Caption             Número Pedido
                        AutoSize            True
 ----------------------------------------------------------------------------
  Label                 Name                Label2
                        Caption             Destinatário
                        AutoSize            True
 ----------------------------------------------------------------------------
  CommandButton         Name                Command1
                        Caption             &Sair
 ----------------------------------------------------------------------------


3- O seu formulário deverá ter o seguinte jeitão:


fig 1.0


4- Para incluir as colunas no DBGrid faça o seguinte:
   
-Após configurar os controles data1 e data2 como indicados e ter colocado
 o controle DBGrid no seu formulário, dimensione-o como na figura 1.0. acima.
-Selecione o controle DBGrid e clique com o botão direito do mouse sobre o mesmo;
 o menu da figura 2.0 deverá surgir , nele clique na opção Edit.
-Clique novamente com o botão direito do mouse sobre o controle DBGrid para obter
 o menu da figura 3.0 .
fig 2.0
fig 3.0

-Nele notamos as opções Insert , para inserir colunas em determinada posição e Append para inserir após a última coluna. -Clique em Insert para inserir mais uma coluna. -Agora clique na opção Properties... do menu da figura 3.0 . Voce deverá obter a tela da figura 4.0, onde na selecionando Columns você atribui a cada coluna o campo do RecordSource atribuido ao controle Data2.


 

fig 4.0

 5- Agora falta somente acrescentar o seguinte código ao evento reposition do controle Data1

Private Sub Data1_Reposition()  Dim SQL As String
If Text1.Text = "" Then
   SQL = "SELECT * FROM [Detalhes do Pedido]"
Else
   SQL = "SELECT * FROM [Detalhes do Pedido] WHERE [NúmeroDopedido] = " & CLng(Text1.Text)
End If
Data2.RecordSource = SQL
Data2.Refresh  
End Sub

6- E o código para encerrar o programa no botão de comando: 

Private Sub Command1_Click() 

    End 

End Sub

  7- Se você fez tudo direitinho ao executar o projeto obtera a tela da figura 5.0, e ao clicar para movimentar-se pelos registros da tabela pedido os registros dos detalhes do pedido serão mostrados simulando um sub formulário.

 
fig 5.0 -

E Então ? Com o VB podemos ou não criar formulário/Sub formulário ???


José Carlos Macoratti