USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Contador de registros.
ChicoVieira
CRUZEIRO
SP - BRASIL
Postada em 02/03/2006 09:21 hs            
Oi. Tô aqui de novo, enchendo a paciência de vocês...
No exemplo abaixo, consulto um CPF e o sistema me retorna a informação da quantidade de declarações por CPF. Só que a instrução <tabela.moveNext> antes do Loop abre o próximo registro após o último registro encontrado. Daí, tenho de voltar para o registro anterior, onde então localizo o último que satisfez o critério da consulta... Já tentei modificar a consulta, mas se tiro a instrução <tabela.MoveNext>, o sistema não funciona...
Eis o código da consulta. Se alguém puder descobrir o furo, agradeço a colaboração...
Private Sub cmdConsultarCPF_Click()
   Set BancoDeDados = OpenDatabase(App.Path & "Contribuinte.mdb")
   Set Tabela = BancoDeDados.OpenRecordset("Fisica", dbOpenTable)
   Dim ProcuraCPF As String, Contador As String
   Tabela.Index = "CPF"
   ProcuraCPF = InputBox("Digite o número do CPF:" & Chr(13) & _
   "Obs.: não utilize pontos nem hífen.", "Procura pelo CPF")
   If ProcuraCPF = "" Then          'Se não digitar nada,
       cmdOrganizar.Visible = True  'Cancela a procura e
       cmdOrganizar_Click           'Reorganiza a tabela.
       cmdOrganizar.Visible = False
       Exit Sub
   Else
   Tabela.Seek "=", ProcuraCPF
   If Tabela.NoMatch = False Then
        Contador = 0
        Do While Not Tabela.EOF
            If Tabela!CPF = ProcuraCPF Then
            Contador = Contador + 1
        Else
            Exit Do
            End If
            Tabela.MoveNext
        Loop
        MsgBox Str(Contador) & " registros encontrados."
        AtualizaFormulario
        cmdPrimeiro.Enabled = False
        cmdUltimo.Enabled = False
        cmdOrganizar.Visible = True
        cmdProximo.SetFocus
   Else
        MsgBox "Não foram encontrados registros" & Chr(13) & _
        "para o CPF (" & ProcuraCPF & ").", vbInformation
        cmdOrganizar.Visible = True
        cmdOrganizar_Click
        cmdOrganizar.Visible = False
        AtualizaFormulario
        End If
   End If
End Sub
     
Daniel
Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 02/03/2006 10:04 hs            
PORQUE VC NÃO FAZ UMA CONSULTA ASSIM:
DIM RS_TEMP AS RECORDSET
SET RS_TEMP=BancoDeDados.OpenRecordset("SELECT Count(Fisica.CPF) AS Contarcpf FROM Fisica HAVING (((Count(Fisica.CPF))='" & ProcuraCPF & "'));
IF RS_TEMP.RECORDCOUNT=0 THEN
    MSGBOX("Nenhum")
else
    MSGBOX("Total: " & rs_temp.recordcount)
end if

dsmn
   
Daniel
Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 02/03/2006 10:06 hs            
desculpa troque a linha
   MSGBOX("Total: " & rs_temp.recordcount)
 
por:
   MSGBOX("Total: " & rc_temp("Contarcpf"))
 
 

dsmn
     
ChicoVieira
CRUZEIRO
SP - BRASIL
Postada em 02/03/2006 10:26 hs            
Olá Daniel.
Tentei transpor seu código, mas deu um erro de compilação (Compiler error: expected: list separator or ")", na segunda linha do código (Set RS.Temp...).
     
PH1959
Pontos: 2843
SÃO JOSÉ DOS CAMPOS
SP - BRASIL
Postada em 02/03/2006 10:34 hs            
se eu entendi bem, vc quer pegar o ultimo registro é isso?
se for então coloque os dados que vc quer do registro dentro do loop. tipo assim:
  Tabela.Seek "=", ProcuraCPF
   If Tabela.NoMatch = False Then
        Contador = 0
        Do While Not Tabela.EOF
            If Tabela!CPF = ProcuraCPF Then
            Contador = Contador + 1
            'OS_DADOS_Q_VC_QUER_DO_ULTIMO_REGISTRO= tabela("OS_CAMPOS_Q_VC_QUER")
        Else
            Exit Do
            End If
            Tabela.MoveNext
        Loop

DESTA FORMA OS DADOS DO ULTIMO REGISTRO FICARÃO ARMAZENADOS EM VARIAVEIS
     
Daniel
Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 02/03/2006 10:40 hs            
na linha de set rs_temp na comparação HAVING (((Count(Fisica.CPF))= ASPAS SIMPLES ASPAS DUPLAS & ProcuraCPF & ASPAS DUPLAS ASPAS SIMPLES ));ASPAS DUPLAS)
VEJA SE FUNCIONA AGORA

dsmn
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página