Consulta SQL

Delphi

09/05/2003

Olá pessoal,

Estou precisando fazer a seguinte consulta:

[color=blue:db927acfa4]DMDados.ABAS.Close;
DMDados.ABAS.SQL.Clear;
DMDados.ABAS.SQL.Add(´SELECT TB_Concludentes.Protocolo1, TB_Concludentes.Ano, Count(TB_Concludentes.AnoDaConclusao) AS ContarDeAnoDaConclusao FROM TB_Concludentes GROUP BY TB_Concludentes.Protocolo1, TB_Concludentes.Ano [COLOR=red]WHERE[/color:db927acfa4] Ano:P1´);
DMDados.ABAS.Parameters.ParamByName(´P1´).Value:=Edit3.Text;
DMDados.ABAS.Open;[/COLOR]

Mas está dando o seguinte erro:

[Microsoft][Driver ODBC para Microsft Access] Erro de sintaxe (Operador faltando) na expressão ´TB_Concludentes.Ano WHERE Ano?´

Por favor, o q está faltando na expressão?

Já tentei mudar de WHERE para HAVING:

[color=blue:db927acfa4]DMDados.ABAS.Close;
DMDados.ABAS.SQL.Clear;
DMDados.ABAS.SQL.Add(´SELECT TB_Concludentes.Protocolo1, TB_Concludentes.Ano, Count(TB_Concludentes.AnoDaConclusao) AS ContarDeAnoDaConclusao FROM TB_Concludentes GROUP BY TB_Concludentes.Protocolo1, TB_Concludentes.Ano [COLOR=red]HAVING[/color:db927acfa4] Ano:P1´);
DMDados.ABAS.Parameters.ParamByName(´P1´).Value:=Edit3.Text;
DMDados.ABAS.Open;[/COLOR]

Pro favor, o q está faltando?

Grato,

Ilano.


Ilanocf

Ilanocf

Curtidas 0

Respostas

Jeancamila

Jeancamila

09/05/2003

Me desculpe, nao entendi a sua query.

o que vc quer dizer com :

[COLOR=red]


Jean


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

09/05/2003

Ilano,

AS ContarDeAnoDaConclusao FROM TB_Concludentes GROUP BY TB_Concludentes.Protocolo1, TB_Concludentes.Ano WHERE Ano = :P1´);


Faltou o operador de comparação ou lógico. No caso eu usei o de igualdade.

Foi respondido também no FórumWeb.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

09/05/2003

Ilano,

[list:f4e424a1ad]
AS ContarDeAnoDaConclusao FROM TB_Concludentes GROUP BY TB_Concludentes.Protocolo1, TB_Concludentes.Ano WHERE Ano = :P1´);
[/list:u:f4e424a1ad]

Faltou o operador de comparação ou lógico. No caso eu usei o de igualdade.

Foi respondido também no FórumWeb.


GOSTEI 0
Aborges

Aborges

09/05/2003

a condição WHERE deve estar antes do GROUP BY


SELECT TB_Concludentes.Protocolo1, TB_Concludentes.Ano,
Count(TB_Concludentes.AnoDaConclusao) AS ContarDeAnoDaConclusao

FROM TB_Concludentes
WHERE Ano:P1
GROUP BY TB_Concludentes.Protocolo1, TB_Concludentes.Ano [COLOR=red]

exprimente também colocar

DMDados.ABAS.Parameters.ParamByName(´P1´).Value:=Edit3.Text;

antes de

DMDados.ABAS.Close;
DMDados.ABAS.SQL.Clear;
......


GOSTEI 0
Adilsond

Adilsond

09/05/2003

  with DMDados.ABAS do
    begin
      if Active then
         Close;
      SQL.Clear;
      SQL.Add(´SELECT TB_Concludentes.Protocolo1,´);
      SQL.Add(´       TB_Concludentes.Ano,´);
      SQL.Add(´       Count(TB_Concludentes.AnoDaConclusao) AS ContarDeAnoDaConclusao´);
      SQL.Add(´FROM TB_Concludentes´);
      SQL.Add(´WHERE Ano = :P1´);
      SQL.Add(´GROUP BY TB_Concludentes.Protocolo1,´);
      SQL.Add(´         TB_Concludentes.Ano´);
      Parameters.ParamByName(´P1´).Value := Edit3.Text;
      Open;
    end;
end;

SELECT ...
FROM ...
WHERE ...
GROUP BY ...
HAVING ...
ORDER BY ...


GOSTEI 0
POSTAR