SQL.ADD

Delphi

01/11/2007

Possuo a seguinte procedure..
mas quando eu clico em filtar da erro.. e acusa o comando GROUP
como erro... mas eu testo somente o código sql e ele funciona direitinho...
alguem sabe me dizer o que ocorre de errado?

procedure TForm1.Button2Click(Sender: TObject); begin IBOQuery2.Close; IBOQuery2.SQL.Clear; IBOQuery2.SQL.ADD(´select rua.CD_UF as ´UF´,cast (DS_UF as varchar(20)) as´); IBOQuery2.SQL.ADD(´´Unidade Federativa´,rua.DS_CIDADE as ´Cidade´,´); IBOQuery2.SQL.ADD(´count(rua.CD_CEP) as ´Qt. de CEPs´ from TAB_RUA rua,´); IBOQuery2.SQL.ADD(´TAB_UF uf where rua.CD_UF = uf.CD_UF and rua.CD_UF = ´+combo+´´); IBOQuery2.SQL.ADD(´group by rua.CD_UF,DS_UF,rua.DS_CIDADE´); IBOQuery2.SQL.ADD(´order by 4 desc´); IBOQuery2.Open; end;



Douglass

Douglass

Curtidas 0

Respostas

Douglass

Douglass

01/11/2007

procedure TForm1.Button2Click(Sender: TObject); begin IBOQuery2.Close; IBOQuery2.SQL.Clear; IBOQuery2.SQL.ADD(´select rua.CD_UF as ´UF´,cast (DS_UF as varchar(20)) as´); IBOQuery2.SQL.ADD(´´Unidade Federativa´,rua.DS_CIDADE as ´Cidade´,´); IBOQuery2.SQL.ADD(´count(rua.CD_CEP) as ´Qt. de CEPs´ from TAB_RUA rua,´); IBOQuery2.SQL.ADD(´TAB_UF uf where rua.CD_UF = uf.CD_UF and rua.CD_UF = ´+QuotedStr(combo)); IBOQuery2.SQL.ADD(´group by rua.CD_UF,DS_UF,rua.DS_CIDADE´); IBOQuery2.SQL.ADD(´order by 4 desc´); IBOQuery2.Open; end;



GOSTEI 0
Mayron Cachina

Mayron Cachina

01/11/2007

Qual o erro que ta dando?
tenta colocar o group com os nomes q vc apelida com o ´as´...


GOSTEI 0
Arc

Arc

01/11/2007

qual a mensagem que aparece ???

olhando assim de cara, parece faltar espaços nos seus (´´)


GOSTEI 0
Adriano Santos

Adriano Santos

01/11/2007

Posso dar umas dicas?

[list:31f8f6e714]
[*:31f8f6e714]Procure usar MAÍSCULAS nas Selects. Alguns bancos de dados e componentes de acesso costumam se perder.
[*:31f8f6e714]Procure não usar o número do campo no Order By, para dar manutenção é pouco ruim quando se tem muitos campos no Select. Veja que no exemplo abaixo dei nome ao último campos COUNT e usei ele para dar order by.
[*:31f8f6e714] Se o seu apelido não for composto, não precisa de áspas como em UF e Cidade por exemplo.
[*:31f8f6e714]E por último utilize parâmetros, é mais fácil de entender a rotina.
[/list:u:31f8f6e714]

Outra coisa: na linha:
rua.CD_UF = ´+QuotedStr(combo)


Quem é [b:31f8f6e714]combo[/b:31f8f6e714]? Uma variável? Transformei isso em parâmetro. Veja abaixo.
with IBOQuery, SQL do
begin
  Close;
  SQL.Clear;
  Add(´SELECT´);
  Add(´  RUA.CD_UF AS UF, CAST(DS_UF AS VARCHAR(20)) AS "Unidade   Federativa",´);
  Add(´  RUA.DS_CIDADE AS Cidade, COUNT(RUA.CD_CEP) as "Qt. de CEPs" AS CONTADOR´);
  Add(´FROM´);
  Add(´  TAB_RUA RUA,´);
  Add(´  TAB_UF UF´);
  Add(´WHERE´);
  Add(´  RUA.CD_UF = UF.CD_UF AND´);
  Add(´  RUA.CD_UF = :COMBO´);
  Add(´GROUP BY´);
  Add(´  RUA.CD_UF, DS_UF, RUA.DS_CIDADE´);
  Add(´ORDER BY CONTADOR DESC´);

  ParamByName(´COMBO´).AsString := Edit1.Text;

  Open;
end;

E notou como visualmente ficou mais organizado o código?


GOSTEI 0
POSTAR