Olá Pessoal.
O código abaixo funciona perfeitamente. No entanto quando os valores do campo "Recibo" é um número grande (Ex:100.000), aí da erro.
Option Compare Database
Option Explicit
Dim Rst As DAO.Recordset, NrAnterior As Integer, NrInicio As Integer
Private Sub CabeçalhoDoGrupo0_Format(Cancel As Integer, FormatCount As Integer)
'By Alexandre Neves 25/05/2012
'Alterado por Luiz Gustavo
Me!Recibos = Null
Set Rst = CurrentDb.OpenRecordset("SELECT NF,Recibo FROM cst1 WHERE NF=" & Me.txtNF & " ORDER BY Recibo;")
NrAnterior = 0: NrInicio = 0
Do While Not Rst.EOF
If Rst.AbsolutePosition = 0 Then
NrInicio = Rst(1)
Else
If Rst(1) > NrAnterior + 1 Then
If NrInicio = NrAnterior Then
Me!Recibos = Me!Recibos & ", " & NrInicio
Else
Me!Recibos = Me!Recibos & ", " & NrInicio & " a " & NrAnterior
End If
NrInicio = Rst(1)
End If
End If
NrAnterior = Rst(1)
Rst.MoveNext
If Rst.EOF Then
Rst.MovePrevious
If NrInicio = NrAnterior Then
Me!Recibos = Me!Recibos & ", " & NrInicio
Else
Me!Recibos = Me!Recibos & ", " & NrInicio & " a " & NrAnterior
End If
Rst.MoveNext
End If
Loop
'retira 1ª vírgula
Me!Recibos = Mid(Me!Recibos, 2)
End Sub
Anexo estou postando um pequeno BD de exemplo.
Agradeço aos que puderem ajudar-me.
Abraços
Obrigado
Luiz Gustavo
O código abaixo funciona perfeitamente. No entanto quando os valores do campo "Recibo" é um número grande (Ex:100.000), aí da erro.
Option Compare Database
Option Explicit
Dim Rst As DAO.Recordset, NrAnterior As Integer, NrInicio As Integer
Private Sub CabeçalhoDoGrupo0_Format(Cancel As Integer, FormatCount As Integer)
'By Alexandre Neves 25/05/2012
'Alterado por Luiz Gustavo
Me!Recibos = Null
Set Rst = CurrentDb.OpenRecordset("SELECT NF,Recibo FROM cst1 WHERE NF=" & Me.txtNF & " ORDER BY Recibo;")
NrAnterior = 0: NrInicio = 0
Do While Not Rst.EOF
If Rst.AbsolutePosition = 0 Then
NrInicio = Rst(1)
Else
If Rst(1) > NrAnterior + 1 Then
If NrInicio = NrAnterior Then
Me!Recibos = Me!Recibos & ", " & NrInicio
Else
Me!Recibos = Me!Recibos & ", " & NrInicio & " a " & NrAnterior
End If
NrInicio = Rst(1)
End If
End If
NrAnterior = Rst(1)
Rst.MoveNext
If Rst.EOF Then
Rst.MovePrevious
If NrInicio = NrAnterior Then
Me!Recibos = Me!Recibos & ", " & NrInicio
Else
Me!Recibos = Me!Recibos & ", " & NrInicio & " a " & NrAnterior
End If
Rst.MoveNext
End If
Loop
'retira 1ª vírgula
Me!Recibos = Mid(Me!Recibos, 2)
End Sub
Anexo estou postando um pequeno BD de exemplo.
Agradeço aos que puderem ajudar-me.
Abraços
Obrigado
Luiz Gustavo
- Anexos
- Estouro.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (27 Kb) Baixado 32 vez(es)