Fazer Contagem No Grid. - Delphi, Kylix - Fórum Script Brasil
Fazer Contagem No Grid.
Estou querendo fazer uma contage em meu programa, é assim tenho uma tabela para a marcação de aulas e eu gostaria de quando eu marcar as aulas o programa fazer a contage das aulas e mostar em um grid e em edits.
Use uma query para isso
for i := 1 to Query1.RecordCount do
x := x + Query1Aulas.Value;
Edit1.Text := 'Total de Aulas' + inttostr(x);
Valeu Jonas mas, não deu certo vou mostrar um exemplo do visual:
Ord.    Data       Horário   Instrutor
01    13/08/07     09:00        02
02    14/08/07     09:00        02
03    15/08/07     09:00        02
04    16/08/07     09:00        02
05    17/08/07     09:00        02
Então esse é o visual do meu grid aparece as aulas marcadas, agora gostaria de saber como posso colocar esses numeros de ordem.
Crie numa query a seguinte instrução SQL
Select * from NOME_ARQUIVO
Order by Ord, Data, Horario, Instrutor
Vai aparecer no dbgrid na ordem que voce esta querendo
Como ele vai contar? Eu tenho que mandar ele fazer alguma função?
Só assim não resolveu!
Me especifique melhor!
Vamos supor que seu arquivo chama-se AulasDadas e que contenha os campos Ord, Data, Horario e Instrutor
voce vai pegar um componetente Query1 e vai colocar o codigo na SQL
Select * from AulasDadas
Order by Ord, Data, Horario, Instrutor // order by faz a ordenação dos campos na sequencia colocada
Agora vamos supor que voce queira contar quantas aulas o instrutor "02" deu, então num botao voce coloca o codigo de acordo com o que voce quer que ele faça
for i := 1 to Query1.RecordCount do  // varrer todo o aquivo
if Query1Instrutor.Value = '02' then //  testar se é o instrutor 02
x := x + 1;  // contar o total de aulas
Edit1.Text := 'Total de Aulas Dadas pelo Instrutor 02  = ' + inttostr(x);
Outra forma seria voce fazer isso na query automaticamente selecionando o instrutor fixo
where Instrutor = '02'
Outra forma seria voce fazer isso na query automaticamente selecionando o instrutor variavel
where Instrutor = :Inst // parametro a ser passado via codigo em tempo de execução
Jonas, estou achando que este campo Ord não existe na tabela do robinhocne. Está parecendo a mesma situação o colega vms questionou em junho.
robinhocne, se realmente este campo Ord não existe na sua tabela, então dê uma olhada neste post. A idéia a de utilizar um campo calculado (neste caso você criaria um chamado Ord, por exemplo) e atribuiria a ele o valor de RecNo.
Exatamente o mesmo caso Micheus, mas o Problema que eu não entendi essa parte
Mas com relação ao título do tópico, tenho a dizer que as colunas do DBGrid já são, de certo modo, numeradas. Basta que você utilize a propriedade Columns. Ela é uma lista de colunas (TColumn).
Assim, se você utilizar DBGrid.Columns[indice], você observa que indice já funciona como uma numeração, não?
se era o seu caso, esta parte é justamente a que não lhe interessa.
Justamente aquela que indiquei no post (voce leu o comentário que fiz no início do tópico, não o que eu indiquei a você <_<). Mas, vou colocar aqui denovo:
vms, você poderia tentar utilizar um campo calculado, do tipo inteiro, e para este campo você moveria o RecNo.
Supondo o nome da coluna NumOrdem (vamos deixar o campo Numero do seu banco em off), você no evento OnCalcField você faria:
TabTesteNumOrdem.Value := TabTeste.RecNo;
Este outro comentário, também está lá no mesmo post:
Se tiver dúvida de como criar o campo calculado dá uma olhada neste tutorial e pesquise pelo texto: "DataModule:" (sem as aspas), é o segundo item nesta sessão.