CRYSTAL REPORT + SELE?ÃO DE REGISTROS
Boa noite
Estou desenvolvendo um Aplicativo para emissão de Recibos. O bando de dados que uso é o Firebird e para gerar os relatórios o Crystal Report. No aplicativo usei a seguite rotina para impressão de um Recibo.
With crRecibo
.ReportFileName = App.Path & [Ô]\Recibos.rpt[Ô]
.SelectionFormula = [Ô]{TbRecibo.Codigo}=[Ô] & intCodigo
.Action = 1
End With
Minha duvida é como devo fazer quando selecionar mais de um recibo?
Estou desenvolvendo um Aplicativo para emissão de Recibos. O bando de dados que uso é o Firebird e para gerar os relatórios o Crystal Report. No aplicativo usei a seguite rotina para impressão de um Recibo.
With crRecibo
.ReportFileName = App.Path & [Ô]\Recibos.rpt[Ô]
.SelectionFormula = [Ô]{TbRecibo.Codigo}=[Ô] & intCodigo
.Action = 1
End With
Minha duvida é como devo fazer quando selecionar mais de um recibo?
Colega DINHORSO,
Primeiro deixa eu esclarecer um problema que eu também tenho e por isto me cuido muito: ao desejar escrever banCo de dados, acaba-se escrevendo banDo de dados. Cometi este erro muitas vezes e os corretores ortográficos não acusam erro, porque [Ô]bando[Ô] é uma palavra ortograficamente correta. Você também escreveu assim logo acima. Não é crÃtica colega, de forma alguma. Como eu disse, eu mesmo também tenho que cuidar disto que já cometi várias vezes. Apenas observei que mais um colega também passa pelo [Ô]problema[Ô] de banCo e banDo.
Em relação a sua dúvida, basta colocar algo como isto:
Ou seja, você apenas precisa acumular na variável str_Codigo todos os códigos que deseja serem impressos. Observe que é uma variável string na qual você deverá acumular, separando por vÃrgulas, todos os códigos (estes sim, podem vir de dados na sua tabela ou mesmo de outras variáveis).
Tudo de bom.
Primeiro deixa eu esclarecer um problema que eu também tenho e por isto me cuido muito: ao desejar escrever banCo de dados, acaba-se escrevendo banDo de dados. Cometi este erro muitas vezes e os corretores ortográficos não acusam erro, porque [Ô]bando[Ô] é uma palavra ortograficamente correta. Você também escreveu assim logo acima. Não é crÃtica colega, de forma alguma. Como eu disse, eu mesmo também tenho que cuidar disto que já cometi várias vezes. Apenas observei que mais um colega também passa pelo [Ô]problema[Ô] de banCo e banDo.
Em relação a sua dúvida, basta colocar algo como isto:
str_Codigo = [Ô]1,25,30,45,80[Ô]
With crRecibo
.ReportFileName = App.Path & [Ô]\Recibos.rpt[Ô]
.SelectionFormula = [Ô]{TbRecibo.Codigo} IN [Ô] & strCodigo
.Action = 1
End With
Ou seja, você apenas precisa acumular na variável str_Codigo todos os códigos que deseja serem impressos. Observe que é uma variável string na qual você deverá acumular, separando por vÃrgulas, todos os códigos (estes sim, podem vir de dados na sua tabela ou mesmo de outras variáveis).
Tudo de bom.
Não funcionou, aparece uma mensagem de erro. Lembrando que Código é uma Integer, tentei modificar o código e mesmo assim não funcionou. Fiz uma alteração no código, criei uma tabela para filtrar somente os dados a serem impressos, porém sempre sempre aparece os dados do filtro anterior, ou seja, tenho que fechar a tela e emitir um novo relatorio.
Dim sqlString As New ADODB.Recordset
BaseDados.Execute ([Ô]Delete from tbRltRecibo[Ô])
Do While tbAuxRecibo.EOF = False
sqlString.Open [Ô]Select * From tbRecibo where Codigo=[Ô] & tbAuxRecibo!CodigoRecibo, BaseDados
tbRltRecibo.AddNew
tbRltRecibo!Codigo = sqlString!Codigo
tbRltRecibo!CodCliente = sqlString!CodCliente
tbRltRecibo!Contrato = sqlString!Contrato
tbRltRecibo!Competencia = sqlString!Competencia
tbRltRecibo!Valor = sqlString!Valor
tbRltRecibo!Vencimento = sqlString!Vencimento
tbRltRecibo!Processamento = sqlString!Processamento
tbRltRecibo!Extenso = sqlString!Extenso
tbRltRecibo.Update
sqlString.Close
tbAuxRecibo.MoveNext
Loop
tbAuxRecibo.Close
With crRecibo
.DiscardSavedData = True
.WindowShowRefreshBtn = True
.ReportFileName = App.Path & [Ô]\Recibo.rpt[Ô]
.Action = 1
End With
Dim sqlString As New ADODB.Recordset
BaseDados.Execute ([Ô]Delete from tbRltRecibo[Ô])
Do While tbAuxRecibo.EOF = False
sqlString.Open [Ô]Select * From tbRecibo where Codigo=[Ô] & tbAuxRecibo!CodigoRecibo, BaseDados
tbRltRecibo.AddNew
tbRltRecibo!Codigo = sqlString!Codigo
tbRltRecibo!CodCliente = sqlString!CodCliente
tbRltRecibo!Contrato = sqlString!Contrato
tbRltRecibo!Competencia = sqlString!Competencia
tbRltRecibo!Valor = sqlString!Valor
tbRltRecibo!Vencimento = sqlString!Vencimento
tbRltRecibo!Processamento = sqlString!Processamento
tbRltRecibo!Extenso = sqlString!Extenso
tbRltRecibo.Update
sqlString.Close
tbAuxRecibo.MoveNext
Loop
tbAuxRecibo.Close
With crRecibo
.DiscardSavedData = True
.WindowShowRefreshBtn = True
.ReportFileName = App.Path & [Ô]\Recibo.rpt[Ô]
.Action = 1
End With
Bom dia
Conseguir gerar o relatório só que o problema agora o mesmo não atualiza os dados para impressão. Por exemplo seleciono os registro 1,2 e 3 em faço a impressão, em seguida selecione os registro 4 e 5 e o relatório continua aparecendo 1,2 e 3. Tenho que fechar a tela da impressão e gerar novamente para poder atualizar. Já deixei do DiscardSaveDate = True e Save Data With Report desmarcado. Não sei mais o que fazer, gostaria de alguma dica dos amigos. Estou usando o Crystal Report 8 e o VB6.
Conseguir gerar o relatório só que o problema agora o mesmo não atualiza os dados para impressão. Por exemplo seleciono os registro 1,2 e 3 em faço a impressão, em seguida selecione os registro 4 e 5 e o relatório continua aparecendo 1,2 e 3. Tenho que fechar a tela da impressão e gerar novamente para poder atualizar. Já deixei do DiscardSaveDate = True e Save Data With Report desmarcado. Não sei mais o que fazer, gostaria de alguma dica dos amigos. Estou usando o Crystal Report 8 e o VB6.
Tópico encerrado , respostas não são mais permitidas