Visual Basic 6 - Gerando relatórios com DataReport em um intervalo de datas
Pensei que nunca mais irei voltar a falar do DataReport mas atendendo solicitações eu vou mostrar neste artigo , de forma rápida e simples, como você pode gerar relatórios com DataReport em intervalo de datas.
Inicie um novo projeto no VB6 e insira um componente DataEnvironment no seu projeto. Vamos usar este componente apenas para criar o comando SHAPE que irá gerar a instrução SQL para extrair os dados das tabelas Orders e Customers do banco de dados Norhtwind.mdb.
Antes de criarmos a conexão aproveite e inclua no formulário padrão, que eu vou chamar de frmDataEnv, os componentes:
O código deste formulário é dado a seguir:
No código eu estou inicializando os controles DTPicker , fazendo uma validação de datas e exibindo o relatório gerado.
Option Explicit Private Sub cmdVisualiza_Click() 'Exibe o relatório no modo visualização DataReport1.Show vbModal End Sub Private Sub DTPicker1_Change() 'Verifica se o valor da primeira data é menor que o da segunda e faz o ajuste If DTPicker1.Value > DTPicker2.Value Then DTPicker1.Value = DTPicker2.Value End If End Sub Private Sub DTPicker2_Change() 'Verifica se o valor da segunda data é maior que o da primeira e faz o ajuste If DTPicker2.Value < DTPicker1.Value Then DTPicker2.Value = DTPicker1.Value End If End Sub Private Sub Form_load() DTPicker1.Value = CDate("01/01/1994") 'inicia os valores para o primeiro controle DTPicker2.Value = CDate("12/21/1996") 'inicia os valores para o segundo controle End Sub |
Voltando ao DataEnvironment faça o seguinte:
Inclua um descritor DataReport - DataReport1 - no projeto e crie um relatório conforme abaixo:
Agora no evento Initialize do DataReport inclua o código SQL (comando SHAPE) gerado:
Private Sub DataReport_Initialize() 'define as variáveis usadas no projeto Dim strSQL As String Dim strAte As String Dim strInicio As String Dim oConn As New ADODB.Connection Dim oRS As New ADODB.Recordset oConn.CursorLocation = adUseClient 'estou usando a conexão que ja foi criada no dataenvironment oConn.ConnectionString = DataEnvironment1.Connection1 'abre a conexão com o banco de dados Norhtwind.mdb em d:\teste oConn.Open 'pega as datas de inicio e de fim With frmDataEnv strInicio = .DTPicker1.Value strAte = .DTPicker2.Value End With 'define o titulo do relatório DataReport1.Title = "De: " & strInicio & " Até: " & strAte 'define o comando SHAPE strSQL = "SHAPE { " strSQL = strSQL & "SELECT DISTINCT C.* " strSQL = strSQL & "FROM Customers C INNER JOIN Orders O ON C.CustomerID = O.CustomerID " strSQL = strSQL & "WHERE O.Orderdate " strSQL = strSQL & "BETWEEN #" & strInicio & "# " strSQL = strSQL & "AND #" & strAte & "# " strSQL = strSQL & "ORDER BY C.CompanyName " strSQL = strSQL & "} AS Command1 " strSQL = strSQL & "APPEND ({ " strSQL = strSQL & "SELECT Orders.* " strSQL = strSQL & "FROM Orders " strSQL = strSQL & "WHERE Orderdate " strSQL = strSQL & "BETWEEN #" & strInicio & "# " strSQL = strSQL & "AND #" & strAte & "# " strSQL = strSQL & "} AS Command2 " strSQL = strSQL & "RELATE 'CustomerID' TO 'CustomerID') " strSQL = strSQL & "AS Command2 " oRS.Open strSQL, oConn, adOpenForwardOnly 'atribui o recordset gerado ao datareport Set DataReport1.DataSource = oRS End Sub
|
No código acima estou definindo o comando SHAPE. Lembra dele ? Não !!! Então para saber mais leia os seguintes artigos do site :
O comando SHAPE / APPEND define a estrutura da hierarquia de um recordset e os comandos necessários para preencher o recordset com os dados da hierarquia. O comando atribui um recordset filho para a propriedade Value dos objetos Fields de um Recordset Pai.
A sintaxe é :
Onde :
A sintaxe usada é a da linguagem DATA SHAPING . Podemos dividir a instrução em três partes:
A sintaxe é a seguinte:
"SHAPE {parent-command} [[AS]
table-alias] APPEND {child-command} RELATE(parent-column TO child-column)" |
"SHAPE {<
INSTRUÇÃO SQL 1 >}
[[AS] table-alias] APPEND {<INSTRUÇÃO SQL 2>} RELATE(<INSTRUÇÃO SQL 3>)" |
Nota: O aliás usado no comando SHAPE , ([AS] table-alias]) é opcional
Agora é só rodar e verificar o relatório gerado:
Pegue o projeto aqui : drpt_dat.zip
Eu sei é apenas VB , mas eu gosto...
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 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: