Fórum Contagem de registros #406363

10/08/2011

0

Boa tarde pessoal,

estou com uma duvida de como
fazer para contar quantos registros tem em uma consulta, só que eu queria contar
dois tipos de resultado

tenho uma tabela +ou- assim

os pedido
atendido
123 123 no prazo
321 321 em atraso

teria que contar
quantos registros tem em atraso e quantos tem no prazo e apresentar em um edit


se alguem puder me ajudar...

desde já agradeço
 
Marcelo Gadani

Marcelo Gadani

Responder

Posts

10/08/2011

Wilson Junior

Faça um subselect para cada um deles. Qualquer coisa, post aqui o seu AQL que lhe ajudo a fazer.
Responder

Gostei + 0

10/08/2011

Marcelo Gadani

eu fiz assim select atendido, count(atendido)from apontamento group by atendido   mais não sei como apresentar os resultados entende...   eu queria apresentar os resultados em dois edits   tipo assim       edit1.text := no prazo   edit2.text := em atraso  
Responder

Gostei + 0

10/08/2011

Wilson Junior

Vamos por partes:
1 - Você tem o SQL pronto? Se não tem,  especifique aqui os campos da sua tabela e como você quer
2 - Quais componentes do Delphi você está utilizando para executar o SQL? Coloque aqui o seu código.

Aguardo retorno.
Responder

Gostei + 0

10/08/2011

Marcelo Gadani

este é meu codigo   begin
  with uDMconexao.CDSGrafApont do      begin
        close;
        uDMConexao.CDSGrafApont.commandtext:='select atendido, count(atendido)from apontamento group by atendido';
        FormConsApont.Edit2.text := uDMConexao.CDSGrafApont.FieldByName('atendido').AsString;
        uDMConexao.CDSGrafApont.Open;
     end;
end;     aqui ele esta fazendo a seleção só não sei apresentar o resultado...     to usando query e clientdataset    
Responder

Gostei + 0

10/08/2011

Wilson Junior

Tente assim
with uDMconexao.CDSGrafApont do
begin
  Close;
  CommandText:='select atendido, count(atendido) AS ContAtendido from apontamento group by atendido';
  Open;
  FormConsApont.Edit2.Text := FieldByName('Atendido').AsString;
  FormConsApont.Edit3.Text := FieldByName('ContAtendido').AsString;
end;


Espero ter colaborado.
Responder

Gostei + 0

10/08/2011

Marcelo Gadani

este codigo me retornou assim     edit2 = vazio        edit3 = 0     e eu tenho na tabela os valores que eu queria contar que são     a tabela esta assim   OF         PEDIDO         PRODUTO           ATENDIDO 123        123                PARAFUSO           EM ATRASO 123        123                PARAFUSO           EM ATRASO 123        123                PARAFUSO           NO PRAZO 123        123                PARAFUSO           NO PRAZO     SENDO QUE O SELECT TEM QUE ME RETORNAR   ISSO   ATENDIDO   NO PRAZO = 2 EM ATRASO = 2   E JOGAR ESTE RESULTADO NOS EDITS  
Responder

Gostei + 0

11/08/2011

Wilson Junior

Uma maneira de ser feito é assim.
with uDMconexao.CDSGrafApont do
begin
  Close;
  CommandText :=
    ' SELECT' + 
    '   SUM(' + 
    '   CASE Atendido' +
    '       WHEN ' + QuotedStr( 'EM ATRASO' ) + ' THEN 1' +
    '       ELSE 0' + 
    '     END' + 
    '   ) AS Soma_Atraso,' + 
    '   SUM(' + 
    '   CASE Atendido' +
    '       WHEN ' + QuotedStr( 'NO PRAZO' ) + ' THEN 1' +
    '       ELSE 0' + 
    '     END' + 
    '   ) AS Soma_Prazo' + 
    ' FROM' + 
    '   APONTAMENTO';
  Open;
  FormConsApont.Edit2.Text := FieldByName('Soma_Atraso').AsString;
  FormConsApont.Edit3.Text := FieldByName('Soma_Prazo').AsString;
end;


Espero ter colaborado.
Responder

Gostei + 0

11/08/2011

Marcelo Gadani

Bom dia wilson...   deu certinho o este codigo que vc enviou...   muito obrigado...   vou estudar o codigo que vc enviou...   obrigado e até a próxima...    
Responder

Gostei + 0

11/08/2011

Marcelo Gadani

Wilson...   outra coisa...   eu consigo pegar uma data assim 20/05/2011 e converter ela pra texto ficaria assim   vinte de maio de dois mil e onze   ou pelo menos capturar só o mês maio?   grato.
Responder

Gostei + 0

11/08/2011

Marcelo Gadani

Wilson obrigado...   consegui conveter a data por extenso...   agora surgiu uma outra duvida no codigo que vc me enviou...   é possivel no select que vc me enviou incluir para pesquisar entre datas??   se puder me ajudar agradeço muito..    
Responder

Gostei + 0

11/08/2011

Wilson Junior

De uma olhada neste link http://www.sql-tutorial.net/SQL-WHERE.asp

Espero ter colaborado.
Responder

Gostei + 0

11/08/2011

Marcelo Gadani

begin
  Close;
  CommandText :=
    ' SELECT' +
    '   SUM(' +
    '   CASE Atendido' +
    '       WHEN ' + QuotedStr( 'EM ATRASO' ) + ' THEN 1' +
    '       ELSE 0' +
    '     END' +
    '   ) AS Soma_Atraso,' +
    '   SUM(' +
    '   CASE Atendido' +
    '       WHEN ' + QuotedStr( 'NO PRAZO' ) + ' THEN 1' +
    '       ELSE 0' +
    '     END' +
    '   ) AS Soma_Prazo' +
    ' FROM' +
    ' APONTAMENTO' +
    ' and ' +   <---------   inclui esta parte do codigo mais esta dando erro
    ' ENTREGA BETWEEN :data1 and :data2';<--------- inclui esta parte do codigo mais esta dando erro
    uDMConexao.CDSGrafApont.Params.ParamByName('data1').AsDateTime := StrToDate(maskedit1.Text);<--------- inclui esta parte do codigo mais esta dando erro
    uDMConexao.CDSGrafApont.Params.ParamByName('data2').AsDateTime := StrToDate(maskedit2.Text);<--------- inclui esta parte do codigo mais esta dando erro
  Open;
  FormConsApont.Edit2.Text := FieldByName('Soma_Atraso').AsString;
  FormConsApont.Edit3.Text := FieldByName('Soma_Prazo').AsString;
end;
Responder

Gostei + 0

11/08/2011

Wilson Junior

Antes de mais nada, sugiro você dar uma olhada nisto http://www.google.com.br/url?sa=t&source=web&cd=3&ved=0CCYQFjAC&url=http%3A%2F%2Fwww.quixada.ufc.br%2Fmonitoria-bd%2Fwp-content%2Fuploads%2F2011%2F05%2F51260222-bd2-apostila-sql-2.pdf&rct=j&q=apostila%20SQL&ei=QepDTvOFKurj0QHMiajXCQ&usg=AFQjCNE0I_gGKVavKsavHzYmSxM7IYbXVg&cad=rja, para melhorar o seu entedimento referente a SQL, assim ficará muito mais fácil.
Quanto aos parâmetros, vai depender da formatação da sua data do PC.
De uma olhada neste link https://www.devmedia.com.br/forum/delphi/383483-ParamByName.html

Espero ter colaborado.

Responder

Gostei + 0

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

Aceitar