CRYSTAL REPORTS E VB6
Bom dia a todos!
Caros colegas,
Possuo um relatório em crystal exibindo normalmente, relatório de pedido.Tenho que fazer uma tela, onde vai inserir uma data, e vai imprimir todos os relatorios dos pedidos incluido nesta data.
Agradeço a todos pela atenção!
Caros colegas,
Possuo um relatório em crystal exibindo normalmente, relatório de pedido.Tenho que fazer uma tela, onde vai inserir uma data, e vai imprimir todos os relatorios dos pedidos incluido nesta data.
Agradeço a todos pela atenção!
Segue um exemplo que esta rodando em meu sistema
Em um form separado tem o objeto do crystal e abaixo segue os códigos
Estou montando as condições de acordo com o que o usuário selecionar na tela
Dim StrSql As String
Private Sub Form_Load()
Me.MousePointer = vbHourglass
Dim tabelas As String
Dim Ordem1 As String
Dim Ordem2 As String
Dim Condicao1 As String
Dim Condicao2 As String
Dim Condicao3 As String
Dim and1 As String
Dim Where As String
Dim Crystal As New CRAXDDRT.Application
Dim Reports As CRAXDDRT.Report
Set Reports = Crystal.OpenReport(App.Path & [Ô]el_guias.rpt[Ô])
tabelas = [Ô]select * from consguia [Ô]
Condicao3 = [Ô] and codempr > 0 and exercicio [Ô] & IIf(val(FrmConsGuias.MskExercicio.Text) > 0, [Ô]=[Ô] & FrmConsGuias.MskExercicio.Text, [Ô]<> 0[Ô])
If FrmConsGuias.optTodasEmpr <> True Then
If FrmConsGuias.optEmpresa.Value = True Then
Where = [Ô] where [Ô]
Condicao1 = [Ô] nomeEmpr =[ô][Ô] & FrmConsGuias.lblEmpresa.Caption & [Ô][ô] [Ô]
Reports.FormulaFields(2).Text = Chr(34) & [Ô]Relação de Guias (GERAL)[Ô] & Chr(34)
End If
If FrmConsGuias.optAtividade = True Then
Where = [Ô] where [Ô]
Condicao1 = [Ô] descrAtividade =[ô][Ô] & FrmConsGuias.cmbAtividade.Text & [Ô][ô] [Ô]
Reports.FormulaFields(2).Text = Chr(34) & [Ô]Relação de TÃtulos (ATIVIDADE)[Ô] & Chr(34)
End If
End If
Dim dtInicio, DtFim As String
dtInicio = Mid(FrmConsGuias.txtDtInicio, 4, 3) & Mid(FrmConsGuias.txtDtInicio, 1, 3) & Mid(FrmConsGuias.txtDtInicio, 7, 4)
DtFim = Mid(FrmConsGuias.txtDtFim, 4, 3) & Mid(FrmConsGuias.txtDtFim, 1, 3) & Mid(FrmConsGuias.txtDtFim, 7, 4)
If FrmConsGuias.optVencimento = True And dtInicio <> [Ô]__/__/____[Ô] And DtFim <> [Ô]__/__/____[Ô] Then
[ô]Vencimento sem estarem pagas
Where = [Ô] where [Ô]
Condicao2 = Condicao & [Ô] vencimento between #[Ô] & dtInicio & [Ô]# and #[Ô] & DtFim & [Ô]# and isnull(dtpagto) [Ô]
ElseIf FrmConsGuias.optEmissao = True And dtInicio <> [Ô]__/__/____[Ô] And DtFim <> [Ô]__/__/____[Ô] Then
[ô]Emitidas
Where = [Ô] where [Ô]
Condicao2 = Condicao & [Ô] dtEmissao between #[Ô] & dtInicio & [Ô]# and #[Ô] & DtFim & [Ô]# [Ô]
ElseIf FrmConsGuias.optPagos = True And dtInicio <> [Ô]__/__/____[Ô] And DtFim <> [Ô]__/__/____[Ô] Then
[ô]Pagas
Where = [Ô] where [Ô]
Condicao2 = Condicao & [Ô] dtpagto between #[Ô] & dtInicio & [Ô]# and #[Ô] & DtFim & [Ô]# [Ô]
End If
If Condicao1 <> [Ô][Ô] Then
and1 = [Ô] and [Ô]
End If
If FrmConsGuias.optCons1DtVenc = True Then
Ordem1 = [Ô] order by vencimento [Ô]
ElseIf FrmConsGuias.optCons1Empr = True Then
Ordem1 = [Ô] order by nomeEmpr [Ô]
ElseIf FrmConsGuias.optCons1NN = True Then
Ordem1 = [Ô] order by nossoNumero [Ô]
ElseIf FrmConsGuias.optCons1SN = True Then
Ordem2 = [Ô] order by codguia[Ô]
End If
If FrmConsGuias.optCons2DtVenc = True Then
Ordem2 = [Ô], Vencimento[Ô]
ElseIf FrmConsGuias.optCons2Empr = True Then
Ordem2 = [Ô], nomeEmpr[Ô]
ElseIf FrmConsGuias.optCons2NN = True Then
Ordem2 = [Ô], nossoNumero[Ô]
ElseIf FrmConsGuias.optCons2SN = True Then
Ordem2 = [Ô], codguia[Ô]
End If
If Ordem = [Ô][Ô] Then
Ordem = [Ô] order by nomeempr[Ô]
End If
StrSql = tabelas & Where & Condicao1 & and1 & Condicao2 & Condicao3 & Ordem1 & Ordem2
Reports.Database.SetDataSource Conexao
Reports.SQLQueryString = StrSql
Reports.EnableParameterPrompting = False
CRV.ReportSource = Reports
CRV.ViewReport
CRV.EnablePrintButton = True
Screen.MousePointer = vbDefault
Me.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRV.Top = 0
CRV.Left = 0
CRV.Height = ScaleHeight
CRV.Width = ScaleWidth
End Sub
Acho que isso pode te ajudar
Em um form separado tem o objeto do crystal e abaixo segue os códigos
Estou montando as condições de acordo com o que o usuário selecionar na tela
Dim StrSql As String
Private Sub Form_Load()
Me.MousePointer = vbHourglass
Dim tabelas As String
Dim Ordem1 As String
Dim Ordem2 As String
Dim Condicao1 As String
Dim Condicao2 As String
Dim Condicao3 As String
Dim and1 As String
Dim Where As String
Dim Crystal As New CRAXDDRT.Application
Dim Reports As CRAXDDRT.Report
Set Reports = Crystal.OpenReport(App.Path & [Ô]el_guias.rpt[Ô])
tabelas = [Ô]select * from consguia [Ô]
Condicao3 = [Ô] and codempr > 0 and exercicio [Ô] & IIf(val(FrmConsGuias.MskExercicio.Text) > 0, [Ô]=[Ô] & FrmConsGuias.MskExercicio.Text, [Ô]<> 0[Ô])
If FrmConsGuias.optTodasEmpr <> True Then
If FrmConsGuias.optEmpresa.Value = True Then
Where = [Ô] where [Ô]
Condicao1 = [Ô] nomeEmpr =[ô][Ô] & FrmConsGuias.lblEmpresa.Caption & [Ô][ô] [Ô]
Reports.FormulaFields(2).Text = Chr(34) & [Ô]Relação de Guias (GERAL)[Ô] & Chr(34)
End If
If FrmConsGuias.optAtividade = True Then
Where = [Ô] where [Ô]
Condicao1 = [Ô] descrAtividade =[ô][Ô] & FrmConsGuias.cmbAtividade.Text & [Ô][ô] [Ô]
Reports.FormulaFields(2).Text = Chr(34) & [Ô]Relação de TÃtulos (ATIVIDADE)[Ô] & Chr(34)
End If
End If
Dim dtInicio, DtFim As String
dtInicio = Mid(FrmConsGuias.txtDtInicio, 4, 3) & Mid(FrmConsGuias.txtDtInicio, 1, 3) & Mid(FrmConsGuias.txtDtInicio, 7, 4)
DtFim = Mid(FrmConsGuias.txtDtFim, 4, 3) & Mid(FrmConsGuias.txtDtFim, 1, 3) & Mid(FrmConsGuias.txtDtFim, 7, 4)
If FrmConsGuias.optVencimento = True And dtInicio <> [Ô]__/__/____[Ô] And DtFim <> [Ô]__/__/____[Ô] Then
[ô]Vencimento sem estarem pagas
Where = [Ô] where [Ô]
Condicao2 = Condicao & [Ô] vencimento between #[Ô] & dtInicio & [Ô]# and #[Ô] & DtFim & [Ô]# and isnull(dtpagto) [Ô]
ElseIf FrmConsGuias.optEmissao = True And dtInicio <> [Ô]__/__/____[Ô] And DtFim <> [Ô]__/__/____[Ô] Then
[ô]Emitidas
Where = [Ô] where [Ô]
Condicao2 = Condicao & [Ô] dtEmissao between #[Ô] & dtInicio & [Ô]# and #[Ô] & DtFim & [Ô]# [Ô]
ElseIf FrmConsGuias.optPagos = True And dtInicio <> [Ô]__/__/____[Ô] And DtFim <> [Ô]__/__/____[Ô] Then
[ô]Pagas
Where = [Ô] where [Ô]
Condicao2 = Condicao & [Ô] dtpagto between #[Ô] & dtInicio & [Ô]# and #[Ô] & DtFim & [Ô]# [Ô]
End If
If Condicao1 <> [Ô][Ô] Then
and1 = [Ô] and [Ô]
End If
If FrmConsGuias.optCons1DtVenc = True Then
Ordem1 = [Ô] order by vencimento [Ô]
ElseIf FrmConsGuias.optCons1Empr = True Then
Ordem1 = [Ô] order by nomeEmpr [Ô]
ElseIf FrmConsGuias.optCons1NN = True Then
Ordem1 = [Ô] order by nossoNumero [Ô]
ElseIf FrmConsGuias.optCons1SN = True Then
Ordem2 = [Ô] order by codguia[Ô]
End If
If FrmConsGuias.optCons2DtVenc = True Then
Ordem2 = [Ô], Vencimento[Ô]
ElseIf FrmConsGuias.optCons2Empr = True Then
Ordem2 = [Ô], nomeEmpr[Ô]
ElseIf FrmConsGuias.optCons2NN = True Then
Ordem2 = [Ô], nossoNumero[Ô]
ElseIf FrmConsGuias.optCons2SN = True Then
Ordem2 = [Ô], codguia[Ô]
End If
If Ordem = [Ô][Ô] Then
Ordem = [Ô] order by nomeempr[Ô]
End If
StrSql = tabelas & Where & Condicao1 & and1 & Condicao2 & Condicao3 & Ordem1 & Ordem2
Reports.Database.SetDataSource Conexao
Reports.SQLQueryString = StrSql
Reports.EnableParameterPrompting = False
CRV.ReportSource = Reports
CRV.ViewReport
CRV.EnablePrintButton = True
Screen.MousePointer = vbDefault
Me.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRV.Top = 0
CRV.Left = 0
CRV.Height = ScaleHeight
CRV.Width = ScaleWidth
End Sub
Acho que isso pode te ajudar
Alvear
Deixa eu te dar uma idéia, já que seu relatório em cristal esta funcionando blz, porque não imprimir o relatório dos pedidos por perÃodo?
Tipo, vc clica em imprimir e ele lhe pede a primeira data de emissão dos pedidos através de um inputbox, em seguida lhe pede a segunda data preenchida também por inputbox, ae então gera o relatório para ser impresso no perÃodo selecionado!
Olha o código! SQL no cristal....
Obs: cr4 é o name do cristal reporte
**************
‘clicou no botão imprimir:
dim imp1 as date
dim imp2 as date
On Error GoTo fora13
‘este on error... é um tratamento caso o usuário não coloque datas válidas
imp1 = InputBox([Ô]Digite a primeira data de Vencimento![Ô], [Ô]Relatório[Ô])
imp2 = InputBox([Ô]Digite a segunda data de Vencimento![Ô], [Ô]Relatório[Ô])
cr4.SelectionFormula = [Ô]{pedidos.data} in date ( [Ô] & Year(imp1) & [Ô],[Ô] & Month(imp1) & [Ô],[Ô] & Day(imp1) & [Ô]) to date ( [Ô] & Year(imp2) & [Ô],[Ô] & Month(imp2) & [Ô],[Ô] & Day(imp2) & [Ô])[Ô]
cr4.Action = 1
‘onde pedidos é a tabela e data é o campo a ser feito o filtro
fora13:
If Err.Number = 13 Then Exit Sub
**************
Abraço.
Deixa eu te dar uma idéia, já que seu relatório em cristal esta funcionando blz, porque não imprimir o relatório dos pedidos por perÃodo?
Tipo, vc clica em imprimir e ele lhe pede a primeira data de emissão dos pedidos através de um inputbox, em seguida lhe pede a segunda data preenchida também por inputbox, ae então gera o relatório para ser impresso no perÃodo selecionado!
Olha o código! SQL no cristal....
Obs: cr4 é o name do cristal reporte
**************
‘clicou no botão imprimir:
dim imp1 as date
dim imp2 as date
On Error GoTo fora13
‘este on error... é um tratamento caso o usuário não coloque datas válidas
imp1 = InputBox([Ô]Digite a primeira data de Vencimento![Ô], [Ô]Relatório[Ô])
imp2 = InputBox([Ô]Digite a segunda data de Vencimento![Ô], [Ô]Relatório[Ô])
cr4.SelectionFormula = [Ô]{pedidos.data} in date ( [Ô] & Year(imp1) & [Ô],[Ô] & Month(imp1) & [Ô],[Ô] & Day(imp1) & [Ô]) to date ( [Ô] & Year(imp2) & [Ô],[Ô] & Month(imp2) & [Ô],[Ô] & Day(imp2) & [Ô])[Ô]
cr4.Action = 1
‘onde pedidos é a tabela e data é o campo a ser feito o filtro
fora13:
If Err.Number = 13 Then Exit Sub
**************
Abraço.
Boa Tarde a todos!
Realizei a Select como parametro a data, por comando no VB e no crystal coloquei o relatorio inteiro dentro do Group.Funcionou!
Agradeço a todos pela atenção e ajuda!
Realizei a Select como parametro a data, por comando no VB e no crystal coloquei o relatorio inteiro dentro do Group.Funcionou!
Agradeço a todos pela atenção e ajuda!
Tópico encerrado , respostas não são mais permitidas