Contagem de registros
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
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
Curtidas 0
Respostas
Wilson Junior
10/08/2011
Faça um subselect para cada um deles. Qualquer coisa, post aqui o seu AQL que lhe ajudo a fazer.
GOSTEI 0
Marcelo Gadani
10/08/2011
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
GOSTEI 0
Wilson Junior
10/08/2011
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.
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.
GOSTEI 0
Marcelo Gadani
10/08/2011
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
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
GOSTEI 0
Wilson Junior
10/08/2011
Tente assim
Espero ter colaborado.
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.
GOSTEI 0
Marcelo Gadani
10/08/2011
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
GOSTEI 0
Wilson Junior
10/08/2011
Uma maneira de ser feito é assim.
Espero ter colaborado.
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.
GOSTEI 0
Marcelo Gadani
10/08/2011
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...
GOSTEI 0
Marcelo Gadani
10/08/2011
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.
GOSTEI 0
Marcelo Gadani
10/08/2011
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..
GOSTEI 0
Wilson Junior
10/08/2011
De uma olhada neste link http://www.sql-tutorial.net/SQL-WHERE.asp
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Marcelo Gadani
10/08/2011
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;
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;
GOSTEI 0
Wilson Junior
10/08/2011
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.
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.
GOSTEI 0