INSTRUCAO PARA GRAVAR OS 5 DE CADA MATRICULA
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!!!!
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!!!!
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 ???
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 ???
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"
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"
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 !
Não posso te ajudar se vc não tem o minimo de cuidado com o que digita !
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 !!!
O comando que te passei le dados de uma tabela e ja insere em outra, Logo não ser utilizado um RECORDSET !!!
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"
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"
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"
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"
Confome mensagem interna: estou aguardando seu banco de dados...
Tanto logo eu receba o banco verificarei e te dou um retorno !
Tanto logo eu receba o banco verificarei e te dou um retorno !
Tópico encerrado , respostas não são mais permitidas