Ir para conteúdo
Fórum Script Brasil
  • 0

Crystal Report


Ceh

Pergunta

Pessoal, existe alguma forma de gerar um relatório no Cystal Report com os dados enviados pelo vb? É que os tutos que eu vejo por aí, você faz o relatório no Crystal e depois abre no vb, mas isso não é funcional pra mim, pois preciso gerar "folha" por "folha"... tenho inúmeros clientes cadastrados e inúmeros anos... preciso gerar um relatório a cada vez que o usuário seleciona um ano e um cliente.

[ ]'s

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

não entendi bem o q você quer fazer, mas voce pode alterar a formula de seleção do relatorio a partir do visual basic, assim como pode passar valor para campos parametros.

Se você estivar usando o componente Crystal reporte Viewer Control, porde fazer assim:

Dim crAppl As CRAXDRT.Application
Dim crRep As CRAXDRT.Report

Set crRep = crAppl.OpenReport("NomeDoRelatórioJáSalvo.rpt")
crRep.RecordSelectionFormula=" - Adiciona a Formula na Sintaxe do Crystal -"

CRViewer1.ReportSource = crRep
CRViewer1.ViewReport

No campo da Formula, você seleciona o Ano e o Cliente.

se você explicar com mais detalhes, posse te dar uma ajuda melhor.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tenho então que gerar um relatório no Crystal Reports por ano? já que cada ano é uma tabela no meu banco? Eu não entendi muito bem...

Quero gerar o relatório por cliente e por ano. Assim, quando o usuário imprimi o relatório vai imprimi só a folha selecionada pelo cliente e ano. Tendeu?

[ ]'s

Link para o comentário
Compartilhar em outros sites

  • 0

não entendi bem...

pra falar a verdade complicou...

entendi q você quer fazer um programa tipo assim:

o usuario abre e vai ter um formulario

Digite o Ano:

Escolha o Cliente:

Ele escolhe o ano e o cliente e em seguida o relatorio mostra o ano e o cliente que ele escolheu.

não é isso?

se for assim faca do jeiot q eu falei.

crie um relatorio .rtp no crystal e faca como se fosse imprimir todos os clientes todos os anos.

pelo visual basic, usando a formula q eu postei, voce altera a selecao cada vez q for imprimir.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom não entendi muito bem , mas segue os codigos que você ira usar para selecionar em list Box por ex:

você Quer que saia tudo o que apenas um cliente comprou por exemplo, então você vai selecionar o nome dele em um list colocar um perido e segue o codigo abaixo:

Private Sub Command1_Click(Index As Integer)

Select Case Index

Case 0 'imprimir

'--------------------------------------------------------------------------------------------

Dim criterio1 As String

Dim criterio2 As String

Dim anoi As Integer

Dim mesi As Integer

Dim diai As Integer

Dim anof As Integer

Dim mesf As Integer

Dim diaf As Integer

Dim Data1 As String

Dim Data2 As String

Dim dataok As String

Dim selecao As String

criterio1 = ""

criterio2 = ""

anoi = Year(maskini)

mesi = Month(maskini)

diai = Day(maskini)

anof = Year(maskfim)

mesf = Month(maskfim)

diaf = Day(maskfim)

Data1 = diai & "/" & mesi & "/" & anoi

Data2 = diaf & "/" & mesf & "/" & anof

cr1.DataFiles(0) = App.Path & "\financas.mdb"

dataok = Data1 & " - " & Data2

criterio1 = "date(" & anoi & "," & mesi & "," & diai & ")"

criterio2 = "date(" & anof & "," & mesf & "," & diaf & ")"

cr1.WindowState = 2

cr1.WindowControlBox = True

cr1.ReportFileName = App.Path & "\extrato.rpt"

cr1.Formulas(0) = ""

cr1.Formulas(1) = "periodo= " & Chr(34) & dataok & Chr(34)

selecao = "{tbltrans.data_trans}>=" & criterio1 & " AND " & "{tbltrans.data_trans}<=" & criterio2

'--------------------------------------------------------------------------------------------

If cbocliente.ListIndex <> -1 Then

selecao = selecao & " AND {tbltrans.cod_cli}=" & cbocliente.ItemData(cbocliente.ListIndex)

End If

If cboconta.ListIndex <> -1 Then

selecao = selecao & " AND {tbltrans.cod_conta}=" & cboconta.ItemData(cboconta.ListIndex)

End If

If cbotransacao.ListIndex <> -1 Then

cr1.Formulas(0) = "transacao= " & Chr(34) & UCase(cbotransacao.Text) & Chr(34)

selecao = selecao & " AND {tbltrans.cod_trans}=" & cbotransacao.ItemData(cbotransacao.ListIndex)

End If

'--------------------------------------------------------------------------------------------

'imprime relatorio

If List1.ListIndex = 0 Then

'defina o criterio para filtragem no crystal reports

cr1.SelectionFormula = selecao

ElseIf List1.ListIndex = 1 Then

'relatorio para despesas fixas

'usamos formulas para inserir o cabecalho em tempo de execucao

cr1.Formulas(0) = "transacao=" & Chr(34) & "DESPESAS FIXAS" & Chr(34)

selecao = selecao & " AND {tbltrans.lancamento} < 0"

selecao = selecao & " AND {tbltrans.custofixo}=" & True

cr1.SelectionFormula = selecao

ElseIf List1.ListIndex = 2 Then

'relatorio para despesas fixas

'usamos formulas para inserir o cabecalho em tempo de execucao

cr1.Formulas(0) = "transacao=" & Chr(34) & "RECEITAS FIXAS" & Chr(34)

selecao = selecao & " AND {tbltrans.lancamento} > 0"

selecao = selecao & " AND {tbltrans.custofixo}=" & True

cr1.SelectionFormula = selecao

ElseIf List1.ListIndex = 3 Then

'relatorio ref. cruzada

criterio1 = ""

criterio2 = ""

anoi = Year(maskini)

mesi = Month(maskini)

diai = Day(maskini)

anof = Year(maskfim)

mesf = Month(maskfim)

diaf = Day(maskfim)

Data1 = diai & "/" & mesi & "/" & anoi

Data2 = diaf & "/" & mesf & "/" & anof

dataok = Data1 & " - " & Data2

criterio1 = "date(" & anoi & "," & mesi & "," & diai & ")"

criterio2 = "date(" & anof & "," & mesf & "," & diaf & ")"

If cbocliente.ListIndex = -1 Then

MsgBox "Selecione um cliente"

Exit Sub

End If

If cboconta.ListIndex = -1 Then

MsgBox "Selecione uma conta"

End If

'note que usamos o chr(34) que igual a (") senao teriamos um erro

cr1.ReportFileName = App.Path & "\ref_cruz.rpt"

cr1.Formulas(0) = "nome= " & Chr(34) & cbocliente.Text & Chr(34)

cr1.Formulas(1) = "conta= " & Chr(34) & cboconta.Text & Chr(34)

cr1.Formulas(2) = "periodo= " & Chr(34) & dataok & Chr(34)

cr1.SelectionFormula = selecao

End If

'--------------------------------------------------------------------------------------------

If Opttela.Value Then

cr1.Destination = 0

Else

cr1.Destination = 1

End If

'conexao do crystal para não pedir a senha ao imprimir

cr1.Connect = "DSN=;UID=;PWD=" & password

cr1.password = password

cr1.Action = 1

cr1.SelectionFormula = ""

If Opttela.Value Or Optimpressora.Value Then

cr1.Formulas(0) = ""

cr1.Formulas(1) = ""

End If

'--------------------------------------------------------------------------------------------

Case 1 'sair

Unload Me

End Select

End Sub

Private Sub Form_Load()

Dim ano As Integer

ano = Year(Now)

maskini = "01/01/" & ano

maskfim = "31/12/" & ano

Me.Width = 7890

Me.Height = 3705

List1.AddItem "Extrato de Lancamentos em um período"

'List1.AddItem "Despesas Fixas em um período"

'List1.AddItem "Receitas Fixas em um período"

List1.AddItem "Transações por período totalizadas"

List1.ListIndex = 0

enche_combo cbotransacao, "tblcodtrans", "des_tran", "cod_tran"

enche_combo cbocliente, "tblcli", "des_cli", "cod_cli"

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...