 Visual 
Basic 6 
- Gerando relatórios com DataReport em um intervalo de datas
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 controleEnd 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
 
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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências: