INSTRUCAO PARA GRAVAR OS 5 DE CADA MATRICULA

USUARIO.EXCLUIDOS 10/04/2004 19:24:45
#19855
Estou tentando gravar os 5 maiores pontos de cada matricula da tabela súmula para a tabela temp.
Ou seja na tabela súmula tenho 8 registro para cada matricula preciso gravar na tabela temp somnete os 5 maiores de cada matricula segue codigo que estou tentanto:
Dim Temp As Recordset
BancoDeDados.Execute ("delete * from temp") 'limpo a tabela

BancoDeDados.Execute ("INSERT INTO temp (Matricula, Número, Nome, Categoria, Idade, Data, Pontos)values(SELECT Matricula, Número, Nome, Categoria, Idade, Data, Pontos From Súmula GROUP BY Matricula, Número, Nome, Categoria, Idade, Data, Pontos Having (Count(Matricula) = 5) and Matricula ='" & Matricula.Text & "' and Idade '" & TxtIdade.Text & "'and Categoria = '" & DbcCAtegoria.Text & "'and Data = #" & Format(DataInicial, "mm/dd/yyyy") & "# and data= #" & Format(DataFinal, "mm/dd/yyyy") & "# order by Pontos desc")


Qualquer outra suigestão sera bem vinda....
obrigado!!!!
USUARIO.EXCLUIDOS 10/04/2004 21:21:31
#19869
Resposta escolhida
Geroane,
Eu tambem já respondi outro post sobre o mesmo assunto, inclusive fui eu quem postou essa query !
Há um problema de postagem na query com o sinal de MENORQUE na clausula HAVING. Troque Having (Count(Matricula) = 5) por Having (Count(Matricula) MENORouIGUAL 5)

E esse pedaço abaixo que vc inclui deve sair da clausula HAVING e ir para a clausula WHERE !
and Matricula ='" & Matricula.Text & "' and Idade '" & TxtIdade.Text & "'and Categoria = '" & DbcCAtegoria.Text & "'and Data = #" & Format(DataInicial, "mm/dd/yyyy") & "# and data= #" & Format(DataFinal, "mm/dd/yyyy") & "#"


Qual o problema que você encontrou além do especificado acima ???

USUARIO.EXCLUIDOS 12/04/2004 14:32:34
#20064
Você introduziu 4 erros que não estavam na query original que eu havia postado:
i) Remova o "VALUES";
ii) Insira WHERE;
iii) Troque "Idade" por "Idade ="
iv) Remova um dos campos "Data" do WHERE (ele esta repetido);
v) E conforme eu havia pedido troque "Having (Count(Matricula) =5)" por "Having (Count(Matricula) MENORouIGUAL 5)"

BancoDeDados.Execute "INSERT INTO temp (Matricula, [Número], Nome, Categoria, Idade, Data, Pontos) SELECT Matricula, [Número], Nome, Categoria, Idade, Data, Pontos From [Súmula] WHERE Matricula ='" & Matricula.Text & "' AND Idade = '" & txtidade.Text & "' AND Categoria = '" & DbcCAtegoria.Text & "' AND data = #" & Format(DataInicial, "mm/dd/yyyy") & "# GROUP BY Matricula, [Número], Nome, Categoria, Idade, Data, Pontos Having (Count(Matricula) MENORouIGUAL 5) ORDER BY Matricula ASC, Pontos DESC"
USUARIO.EXCLUIDOS 12/04/2004 17:11:37
#20108
Geroane, releia os itens, 3 e 4 que posteie + a query que colei já com as correções, você nem ao menos teve o trabalho de ler a minha reposta ! E esta comentendo os mesmo erros os quais eu já correigi no item anteior !

Não posso te ajudar se vc não tem o minimo de cuidado com o que digita !
USUARIO.EXCLUIDOS 12/04/2004 17:17:43
#20115
Mais uma coisa: No post orignal eu te indicava usar o metodo Execute do objeto Command e não um RECORDSET !

O comando que te passei le dados de uma tabela e ja insere em outra, Logo não ser utilizado um RECORDSET !!!
USUARIO.EXCLUIDOS 12/04/2004 17:27:36
#20123
O seu programa deveria parecer algo com isso aqui (e nada alem disso) :

BancoDeDados.Execute "delete * from temp"

BancoDeDados.Execute "SELECT Matricula, [Número], Nome, Categoria, Idade, Data, Pontos From [Súmula] WHERE Matricula ='" & Matricula.Text & "' AND Idade ='" & TxtIdade.Text & "' AND Categoria = '" & DbcCAtegoria.Text & "' and Data = #" & Format(DataInicial, "mm/dd/yyyy") & "# GROUP BY Matricula, [Número], Nome, Categoria, Idade, Data, Pontos Having (Count(Matricula) MENORouIGUAL 5) ORDER BY Matricula ASC, Pontos DESC"

USUARIO.EXCLUIDOS 12/04/2004 17:29:23
#20125
Desculpe pelo ultimo post errado !!! Copie sua query a colei sem ve-la !
O seu programa deveria parecer algo com isso aqui (e nada alem disso) :

BancoDeDados.Execute "delete * from temp"

BancoDeDados.Execute "INSERT INTO temp (Matricula, Número, Nome, Categoria, Idade, Data, Pontos) SELECT Matricula, [Número], Nome, Categoria, Idade, Data, Pontos From [Súmula] WHERE Matricula ='" & Matricula.Text & "' AND Idade ='" & TxtIdade.Text & "' AND Categoria = '" & DbcCAtegoria.Text & "' and Data = #" & Format(DataInicial, "mm/dd/yyyy") & "# GROUP BY Matricula, [Número], Nome, Categoria, Idade, Data, Pontos Having (Count(Matricula) MENORouIGUAL 5) ORDER BY Matricula ASC, Pontos DESC"

USUARIO.EXCLUIDOS 12/04/2004 18:50:30
#20160
Confome mensagem interna: estou aguardando seu banco de dados...
Tanto logo eu receba o banco verificarei e te dou um retorno !
Tópico encerrado , respostas não são mais permitidas