CRYSTAL REPORT + SELE?ÃO DE REGISTROS

DINHORSO 17/11/2016 02:10:01
#468981
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?
SINCLAIR 17/11/2016 08:52:41
#468985
Resposta escolhida
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:

    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.




DINHORSO 19/11/2016 09:48:04
#469038
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
DINHORSO 24/11/2016 08:08:23
#469199
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.
Tópico encerrado , respostas não são mais permitidas