CRYSTAL REPORTS E VB6

ALVEAR 02/10/2009 10:36:09
#324251
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!
ALVAROVB2009 02/10/2009 12:53:35
#324258
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
MAYCONIGHT 02/10/2009 14:11:49
#324261
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.
ALVEAR 07/10/2009 17:46:33
#324730
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!
Tópico encerrado , respostas não são mais permitidas