VB COM SQL - CONTAR REGISTROS TOTALIZANDO EM OUTRA
sabe qual o problema
estes campos
IDADE/Texto/6
IDADEMES/Texto/6
IDADEDIA/Texto/6
eles deveriam ser do tipo numero, para a consulta funcionar assim
... [Ô]WHERE [Idade] = 0 And [Idademes] = 0 And [Idadedia] > 0 And [A_sexo] = [ô]F[ô][Ô]
como numero esta consulta funcionaria.
estes campos
IDADE/Texto/6
IDADEMES/Texto/6
IDADEDIA/Texto/6
eles deveriam ser do tipo numero, para a consulta funcionar assim
... [Ô]WHERE [Idade] = 0 And [Idademes] = 0 And [Idadedia] > 0 And [A_sexo] = [ô]F[ô][Ô]
como numero esta consulta funcionaria.
Marcelo
Vou testar e posto aqui!
Enéa
Vou testar e posto aqui!
Enéa
Substitua:
Dim Qtreg As Integer
por:
Dim Qtreg As Long
Dim Qtreg As Integer
por:
Dim Qtreg As Long
Boa tarde colaboradores!
Consegui concluir a rotina, juntando as dicas dos colegas e posto abaixo como ficou:
Private Function Contagem() As Double
Dim SQL As String
Dim QtReg As Integer
Dim Criancas As RecordSet
Dim Total As Integer
SQL = [Ô]SELECT Count(Criancas.Idadedia) as Total From Criancas Where[Ô] & _
[Ô]((Criancas.Idadedia > 0) And (Criancas.A_sexo = [ô]F[ô]))[Ô]
Set Criancas = vgDb(2).OpenRecordSet(SQL, dbOpenDynaset)
QtReg = Criancas!Total
Contagem = QtReg
End Function
ConcluÃda, mas resta ainda resolver o problema de lentidão e repetição da contagem nas linhas (mesma quantidade de linhas da tabela básica), ou seja:
a) para contagem dos registros de uma tabela com 5.316 registros, levou 7 minutos!!!
b) o valor da contagem (TOTAL) é repetido nas mesmas 5.316 linhas da tabela destino!!!
Teria como solucionar essas pendências?
Do modo como está é inviável utilizar essa rotina!
Enéa
Consegui concluir a rotina, juntando as dicas dos colegas e posto abaixo como ficou:
Private Function Contagem() As Double
Dim SQL As String
Dim QtReg As Integer
Dim Criancas As RecordSet
Dim Total As Integer
SQL = [Ô]SELECT Count(Criancas.Idadedia) as Total From Criancas Where[Ô] & _
[Ô]((Criancas.Idadedia > 0) And (Criancas.A_sexo = [ô]F[ô]))[Ô]
Set Criancas = vgDb(2).OpenRecordSet(SQL, dbOpenDynaset)
QtReg = Criancas!Total
Contagem = QtReg
End Function
ConcluÃda, mas resta ainda resolver o problema de lentidão e repetição da contagem nas linhas (mesma quantidade de linhas da tabela básica), ou seja:
a) para contagem dos registros de uma tabela com 5.316 registros, levou 7 minutos!!!
b) o valor da contagem (TOTAL) é repetido nas mesmas 5.316 linhas da tabela destino!!!
Teria como solucionar essas pendências?
Do modo como está é inviável utilizar essa rotina!
Enéa
porque é contado duas vezes?
quantos usuários acessam o bd ? o bd está em rede ou local ? não compreendi tabela destino , a consulta te mostra somente o valor total de registros encontrados com os devidos filtros. voce está chamando esta função de outra consulta? fiz o teste aqui e levou 1 segundo.
Por enquanto estou nos testes de laboratório.
Somente uma máquina!
A Linha [Ô]Contagem = QtReg[Ô] é que atualiza campo de outra tabela. Estou fazendo essa rotina para lançamento em outra tabela do BD.
Enéa
Somente uma máquina!
A Linha [Ô]Contagem = QtReg[Ô] é que atualiza campo de outra tabela. Estou fazendo essa rotina para lançamento em outra tabela do BD.
Enéa
Obrigado a todos pela ajuda que prestaramaomeu tópico.Em especial ao Marcelo.Treze.
Ainda nçao consegui acelerar a rotina, mas várias dúvidas sobre SQL foram satisfeitas.
Encerro o tópico!
Ainda nçao consegui acelerar a rotina, mas várias dúvidas sobre SQL foram satisfeitas.
Encerro o tópico!
Tópico encerrado , respostas não são mais permitidas