INSTRUCAO TRANSFORM COM CLAUSULA TOP

GIOVANI.ARRUDA 02/06/2007 11:47:15
#219462
Eu uso esse query porque preciso pegar o quantidade em estoque de cada empresa com o nome da empresa na coluna

TRANSFORM Sum(Estoque.[Quantidade estoque]) AS [SomaDeQuantidade estoque] SELECT Produtos.[Codigo do produto], Produtos.[Descricao do produto], Produtos.[Unidade de medida], Produtos.[Valor de venda], Produtos.Garantia, produtos.[Dt ultima compra] FROM (Produtos LEFT JOIN Estoque ON Produtos.[Codigo do produto] = Estoque.[Codigo do produto]) LEFT JOIN Empresa ON Estoque.[Codigo da empresa] = Empresa.[Codigo da empresa] WHERE ((Produtos.[Codigo do produto]<>0) And (Produtos.[Ativo] = -1)) and Produtos.[Descricao do produto] like '*SERIAL*' GROUP BY Produtos.[Codigo do produto], Produtos.[Descricao do produto], Produtos.[Unidade de medida], Produtos.[Valor de venda], Produtos.Garantia, produtos.[Dt ultima compra] ORDER BY PRODUTOS.[DESCRICAO DO PRODUTO] PIVOT Empresa.Descrição;


O problema é que com o tempo ela foi ficando lenta por que eu mando colocar no grid somente os registros que fecham com o criterio e eliminar os demais, eu faço isso no change do txtpesquisa, então eu decidi colocar um Top 50 depois do select mas não deu certo! O erro é esse: Values specified in TOP clause are not allowed in delete queries or reports

Desde já agradeço
MJAC 09/09/2007 13:14:19
#234813
Resposta escolhida
Realmente não é permitido uma limitação por TOP mas existe um substituto que gerará o mesmo efeito é o comando LIMIT que limita a quantidade de registro de retorno e com um adicional que é possível ignorar umas linhas antes se desejar. A sintaxe de uso é assim:
Citação:


LIMIT [início,] linhas : Retorna o número de linhas especificado. Se o valor início for fornecido, aquelas linhas são puladas antes do dado ser retornado. A primeira linha é 0.


Então sua consulta ficaria assim:
Citação:


TRANSFORM Sum(Estoque.[Quantidade estoque]) AS [SomaDeQuantidade estoque] SELECT Produtos.[Codigo do produto], Produtos.[Descricao do produto], Produtos.[Unidade de medida], Produtos.[Valor de venda], Produtos.Garantia, produtos.[Dt ultima compra] FROM (Produtos LEFT JOIN Estoque ON Produtos.[Codigo do produto] = Estoque.[Codigo do produto]) LEFT JOIN Empresa ON Estoque.[Codigo da empresa] = Empresa.[Codigo da empresa] WHERE ((Produtos.[Codigo do produto]<>0) And (Produtos.[Ativo] = -1)) and Produtos.[Descricao do produto] like '*SERIAL*' GROUP BY Produtos.[Codigo do produto], Produtos.[Descricao do produto], Produtos.[Unidade de medida], Produtos.[Valor de venda], Produtos.Garantia, produtos.[Dt ultima compra] ORDER BY PRODUTOS.[DESCRICAO DO PRODUTO] LIMIT 0,50 PIVOT Empresa.Descrição;


Tópico encerrado , respostas não são mais permitidas