Ir para conteúdo
Fórum Script Brasil
  • 0

Tquery Erro: Invalid Use Of Keyword. Token Select


Guest - Fabi -

Pergunta

Olá, sou eu novamente.

Pessoal, estou tentando fazer uma consulta no SQL Server utilizando o componente TQuery da seguinte forma:

with DM_PDOX.CAIXAGER do

begin

Close;

SQL.Clear;

SQL.Add('SELECT COUNT(*) FROM(');

SQL.Add('SELECT CX.COO, CX.SEQUENCIAL FROM CAIXAGERAL CX, ADMCARTAO ADM ');

SQL.Add('WHERE CX.CODADMCARTAO = ADM.CODADMCARTAO ');

SQL.Add(') qtde');

Open;

End;

Mas ele me retorna o seguinte erro: "Invalid use of keyword. Token SELECT".

Eu Imagino que tenha alguma coisa a ver com a subquery, mas testei no SQL Server e funcionou.

Se puderem ajudar...

Tks

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

Oi Micheus,

Na verdade estou tentando fazer uma subquery mesmo. Preciso saber a qdte de registros na tabela CAIXAGERAL agrupado por SEQUENCIAL E COO.

Select COUNT(*) From(Select CX.sequencial, CX.coo

From CaixaGeral CX, AdmCartao ADM

WHERE CX.codAdmCartao = ADM.codAdmCartao

GROUP BY CX.sequencial, CX.coo ) qtde.

No SQL Server funciona.

Link para o comentário
Compartilhar em outros sites

  • 0
Oi Micheus,

Na verdade estou tentando fazer uma subquery mesmo. Preciso saber a qdte de registros na tabela CAIXAGERAL agrupado por SEQUENCIAL E COO.

Select COUNT(*) From(Select CX.sequencial, CX.coo

From CaixaGeral CX, AdmCartao ADM

WHERE CX.codAdmCartao = ADM.codAdmCartao

GROUP BY CX.sequencial, CX.coo ) qtde.

No SQL Server funciona.

Fabi, acho que sua SQL deveria ficar deste modo, confira se é isto:
Select CX.sequencial, CX.coo, COUNT(*) Qtd
From CaixaGeral CX, AdmCartao ADM
where CX.codAdmCartao = ADM.codAdmCartao
GROUP BY CX.sequencial, CX.coo
E se não me engano ainda daria para fazer assim, mas acho que teria que ser avaliado qual tem melhor desempenho (acredito seja a primeira):
Select CX.sequencial, CX.coo, COUNT(*) Qtd
From CaixaGeral CX
where Exists(Select * from AdmCartao ADM where CX.codAdmCartao = ADM.codAdmCartao)
GROUP BY CX.sequencial, CX.coo

Acrescentei as colunas CX.sequencial, CX.coo no SELECT porque normalmente você precisa saber a que se refere cada linha retornada na consulta.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Na verdade não é bem isso que eu quero. A minha query está correta.

O resultado que eu quero na query é somente um, a QTDE de linhas que a subquery traz. É como se o campo "sequencial" e "coo" fossem uma chave, eu consulto os registros agrupados por esta chave e depois eu conto qtos registros (linhas) me retornou.

O que eu não consigo entender é porque dá erro no Delphi usando Tquery. Será que o componente TQuery não aceita queries aninhadas?

Link para o comentário
Compartilhar em outros sites

  • 0
O resultado que eu quero na query é somente um, a QTDE de linhas que a subquery traz. É como se o campo "sequencial" e "coo" fossem uma chave, eu consulto os registros agrupados por esta chave e depois eu conto qtos registros (linhas) me retornou.

O que eu não consigo entender é porque dá erro no Delphi usando Tquery. Será que o componente TQuery não aceita queries aninhadas?

É não sei explicar. Mas se você for utilizar essa quantidade de linhas no seu código, então porque não coloca apenas a consulta utilizada no seu #1 post:
Select CX.sequencial, CX.coo
From CaixaGeral CX, AdmCartao ADM
WHERE CX.codAdmCartao = ADM.codAdmCartao
GROUP BY CX.sequencial, CX.coo

e então, após abrir a query (TQuery), utiliza a propriedade RecordCount. Não daria?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...