Sua solução Amigão:
Resstruturei todo o FormImprime
1 - Caixas texto DstaInicial e Final
2 - Botão CarregaR Boleto que executa código para carregar o RecordSource do Form
2.1 - As caixa texto ficam em ocultas, so tornando-se visiveis após o carregamento do RecordSource do Form, para não aparecerem com erro visto que o form não esta carregado
3 - List Box carregada tambem atraves do botão, carregando com as informações filtradas pelos campos data acima
3.1 - Observe que é possivel navegar pelos registros ao click da listBox
3.2 - Caixa texto abaixo da list que conta os registros existentes entre as datas
4 - Botão Imprimir boletos, este botão executa o FrmProgresso que utiliza a informação da Caixatexto com o numero de registros, para fazer o loop nos registros filtrados, efetuando assim sua contagem no progresso...
5 - Apos o final do loop o formProgresso é fechado e é aberto o relatorio que tem por base a consulta imprimeBoleto, que tem como critérios os campos no form, e assim abrindo a informação compatível no form...
Cósigos:
BOTÃO CARREGAR BOLETO
- Código:
Private Sub Comando5_Click()
Dim rs As DAO.Recordset
Dim StrSQL As String
Dim StrSQLList As String
If IsNull(Me.txtDataInicial) Or Me.txtDataInicial = "" Then
MsgBox "Preencha uma data válida", vbCritical, "Atenção"
Exit Sub
Else
StrSQL = "SELECT tbl_Parcelas.Num_seq AS BolCodi, Contratos.Num_OR AS Contrato," _
& "tbl_Parcelas.Num_parc AS Parcela, tbl_Parcelas.Val_parc AS BolValor," _
& "tbl_Parcelas.Data_venc AS Boldtvencto," _
& "CodBarrasBB('001','9',[BolValor],'867598' & [NossoNumero] & '21') AS CodBarra," _
& "Mid([CodBarra],5,1) AS DVCodBarras, NossoNumero([BolCodi] & '1087615') AS NossoNumero," _
& "LinhaDig('00191087615' & [NossoNumero] & '21',[DVCodBarras],[BolValor]) AS LinhaDig," _
& "18 AS Carteira, '0435-9' AS Agencia, '21983-5' AS Cedente, ' ' AS CLI_CODI," _
& "Clientes.Nome AS BolSAcado, Clientes.LogrTipo, Clientes.Endereço AS LogrNome, Clientes.Nº AS LogrNum," _
& "Clientes.Complemento AS LogrCompl, Clientes.Bairro AS LogrBairro, Clientes.Cep AS LogrCep," _
& "Clientes.Cidade AS LogrCidade, Clientes.Estado AS LogrEstado, Clientes.UF AS LogrUF," _
& "ConLote.Loteamentos AS Loteamento, ConLote.Quadra, ConLote.Lote" _
& " FROM ((Contratos INNER JOIN tbl_Parcelas ON Contratos.Num_OR = tbl_Parcelas.Num_OR)" _
& " INNER JOIN Clientes ON Contratos.Nome_Cliente = Clientes.CodCli)" _
& "INNER JOIN ConLote ON Contratos.CodLote = ConLote.CodLote WHERE ((tbl_Parcelas.Data_venc >=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "#) And (tbl_Parcelas.Data_venc <=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "#));"
StrSQLList = "SELECT tbl_Parcelas.Num_seq, Contratos.Num_OR AS Contrato, tbl_Parcelas.Val_parc AS BolValor," _
& "tbl_Parcelas.Data_venc AS Boldtvencto,Clientes.Nome AS BolSAcado" _
& " FROM ((Contratos INNER JOIN tbl_Parcelas ON Contratos.Num_OR = tbl_Parcelas.Num_OR)" _
& " INNER JOIN Clientes ON Contratos.Nome_Cliente = Clientes.CodCli)" _
& "INNER JOIN ConLote ON Contratos.CodLote = ConLote.CodLote WHERE ((tbl_Parcelas.Data_venc >=#" & Format(Me.txtDataInicial, "dd/mm/yyyy") & "#) And (tbl_Parcelas.Data_venc <=#" & Format(Me.txtDataFinal, "dd/mm/yyyy") & "#));"
Me.RecordSource = StrSQL
Me.ListDados.RowSource = StrSQLList
Me.Rótulo0.Visible = True
Me.Rótulo1.Visible = True
Me.Rótulo2.Visible = True
Me.Contrato.Visible = True
Me.Boldtvencto.Visible = True
Me.BolSAcado.Visible = True
Me.BtnRelatorio.Enabled = True
End If
End Sub
CLICK DA LISTA
- Código:
Private Sub ListDados_AfterUpdate()
' Localizar o registo que corresponde ao controlo.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[BolCodi] = " & Str(Nz(Me![ListDados], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
BOTÃO IMPRIMIR BOLETO
- Código:
Private Sub BtnRelatorio_Click()
DoCmd.OpenForm "frmProgresso"
End Sub
AO ABRIR O FORMPROGRESSO (Observe a referencia a caixa texto com o valor dos registros (aqui é usado para efetuar o loop)
Private Sub Form_Open(Cancel As Integer)
n_Reg = Forms!FormImprime.txtNumBol On Error GoTo Proc_Err
If Len(Me.OpenArgs & "") > 0 Then
n_Reg = Me.OpenArgs
End If
RegOcx "MSCOMCTL.OCX"
Proc_Exit:
Exit Sub
Proc_Err:
Select Case Err.Number
Case Else
Select Case ErrorDisplay(Err.Number, Error$, mcStrModule, "Form_Open", Erl())
Case errContinue
Resume Next
Case errexit
Resume Proc_Exit
End Select
End Select
rs.Close
End Sub
http://dl.dropbox.com/u/26441349/Gerson_Boletos.rar
Saudações