Fórum Mostrar resultado #296440

21/09/2005

0

Eu tenho essa query criada dinamicamente, como eu faço p/ mostrar o resultado dessa query

procedure TForm1.Button1Click(Sender: TObject);
var
Q: TQuery;
begin
Q := TQuery.Create(Application);
try
Q.DatabaseName := ´SF´;
with Q.SQL do begin
Add(´( SELECT COUNT(JORNAL) ´);
Add(´ FROM CLIENTES´);
Add(´ WHERE CIDADE = ´SP´´);
end;
Q.ExecSQL;
finally
Q.Free;
end;
end;

Obrigado


Bertocco

Bertocco

Responder

Posts

21/09/2005

Rjun

Onde você vai mostrar o resultado?


Responder

Gostei + 0

21/09/2005

Bertocco

Onde você vai mostrar o resultado?


Irei mostrar num label.

Obrigado


Responder

Gostei + 0

21/09/2005

Michael

Olá colega!

Analisando seu código, reparei que vc criou [b:8a854cfc53]TQuery [/b:8a854cfc53]passando como [b:8a854cfc53]Owner [/b:8a854cfc53]o objeto [b:8a854cfc53]Application [/b:8a854cfc53]e, ao final, o liberou da memória com [b:8a854cfc53]Free[/b:8a854cfc53]. Isso não está correto. Qdo vc informa um Owner para um objeto (seja ele componente ou não), vc está dando a ele a responsabilidade de liberar o objeto da memória. Vc não pode, portanto, fazer isso manualmente.

O correto no seu código é passar o Owner como [b:8a854cfc53]nil[/b:8a854cfc53]:

 Q := TQuery.Create(nil); 


Para mais detalhes sobre o assunto, consulte estes links:

http://delphi.about.com/od/kbcurt/ss/dynamiccreateno.htm
http://delphi.about.com/od/adptips2005/qt/nilselfapp.htm

Excelentes artigos. ;-)

[]´s


Responder

Gostei + 0

21/09/2005

Rjun

procedure TForm1.Button1Click(Sender: TObject); 
var 
  Q: TQuery; 
begin 
  Q := TQuery.Create(Application); 
  try 
    Q.DatabaseName := ´SF´; 
    with Q.SQL do 
    begin 
      Add(´( SELECT COUNT(JORNAL) ´); 
      Add(´ FROM CLIENTES´); 
      Add(´ WHERE CIDADE = ´SP´´); 
    end; 
    try
      Q.Open;
       Label1.Caption := Q.Fields[0].AsString;
    finally
       Q.Close;
    end;
  finally 
    Q.Free; 
  end; 
end; 



Responder

Gostei + 0

21/09/2005

Rafael.valler

var
Q: TQuery;
begin
Q := TQuery.Create(nil);
try
Q.DatabaseName := ´SF´;
with Q.SQL do begin
Add(´( SELECT COUNT(JORNAL) ´);
Add(´ FROM CLIENTES´);
Add(´ WHERE CIDADE = ´´SP´´´); //<<<mais 2 aspas
end;
Q.ExecSQL;
finally
Q.Free;
end;

//Mostrando no label
lblabel2.Caption:= Q.Fields[0].AsString;


Responder

Gostei + 0

21/09/2005

Rjun

Uma coisinha. EXECSQL deve ser usando para INSERT/UPDATE/DELETE.


Responder

Gostei + 0

21/09/2005

Michael

Uma outra dica: vc poderia tornar mais légivel o código dando um apelido para o campo retornado por Count(JORNAL), assim:

Add(´( SELECT COUNT(JORNAL) [b]AS TOTAL[/b]´);


E, depois:

Label.Caption:= Q.FieldByname(´TOTAL´).AsString;


[]´s


Responder

Gostei + 0

21/09/2005

Bertocco

Eu tenho essa query criada dinamicamente, como eu faço p/ mostrar o resultado dessa query procedure TForm1.Button1Click(Sender: TObject); var Q: TQuery; begin Q := TQuery.Create(Application); try Q.DatabaseName := ´SF´; with Q.SQL do begin Add(´( SELECT COUNT(JORNAL) ´); Add(´ FROM CLIENTES´); Add(´ WHERE CIDADE = ´SP´´); end; Q.ExecSQL; finally Q.Free; end; end; Obrigado




Quero gradecer a todos pelas Dica, eu consigui os resultados

Tenho todos um otima semana


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar