StdFormat - Formatando dados em um Grid

Existem recursos no VB que não estão bem documentados. Ficam como escondidos até que alguém os descubra. Nesta dica vou mostrar como usar um recurso oferecido no VB para formatação de dados em tempo de execução em um DataGrid. Estou falando do objeto StdFormat que usaremos para aplicar a formatação nas colunas do grid.

-Inicie um novo projeto no VB e no formulário padrão insira um componente DatGrid - DataGrid1 - e dois botões de comando: command1 e command2 ,conforme o layout abaixo:

- Agora , o mais importante , faça as seguintes referências no seu projeto :

- Microsoft ActiveX Data Objects 2.x

- Microsoft data Formatting Object Library 6.0 (MSSTDFMT.DLL)

- No evento click do botão de comando - command1 - insira o código que irá fazer a conexão com o banco de dados Northwind.mdb que esta na pasta - c:\teste - e exibir os dados da tabela - Pedidos.

Private Sub Command1_Click()

Dim SQL As String
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

Set CN = New ADODB.Connection

With CN
  .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=c:\teste\Northwind.mdb"
  .Open
End With

Set RS = New ADODB.Recordset
Set RS.ActiveConnection = CN
RS.CursorLocation = adUseClient

SQL = "Select NúmerodoPedido , CódigodoCliente , DatadoPedido , Frete from Pedidos"

RS.Open SQL

Set DataGrid1.DataSource = RS

End Sub

quando você executar o projeto e clicar no botão - Exibir dados no Grid - irá obter a seguinte tela:

perceba que os dados não estão formatados. Vamos agora formatar as colunas: NúmerodoPedido , DatadoPedido e Frete.

No evento click do botão de comando - command2 - insira o código que irá usar o objeto StdFormat e realizar a formatação em tempo de execução conforme a sua escolha.

Private Sub Command2_Click()

Set codfmt = New StdFormat.StdDataFormat
Set datfmt = New StdFormat.StdDataFormat
Set valfmt = New StdFormat.StdDataFormat

codfmt.Format = "@.@@@-@"
datfmt.Format = "mm-dd-yyyy"
valfmt.Format = "R$##,##0.00"

DataGrid1.Columns(1).Alignment = dbgCenter
DataGrid1.Columns(2).Alignment = dbgRight
DataGrid1.Columns(3).Alignment = dbgRight

Set DataGrid1.Columns("Númerodopedido").DataFormat = codfmt
Set DataGrid1.Columns("DatadoPedido").DataFormat = datfmt
Set DataGrid1.Columns("Frete").DataFormat = valfmt

End Sub

Quando você clicar no botão - Formatar dados - irá obter o seguinte resultado:

Agora sim !!! Usando uma formatação definida pelo usuário em tempo de execução obtemos os dados formatados. A formatação definida usada foi:

codfmt.Format = "@.@@@-@"
datfmt.Format = "mm-dd-yyyy"
valfmt.Format = "R$##,##0.00"

Embora 'escondida' o objeto StdFormat é uma poderosa ferramenta que você pode agregar ao seu arsenal.

Até a próxima....