Hola, lo que hago es declaro un variable sumar de tipo integer..y la inicializo en 0, despues hago 3 select...el primero para sacar las secciones, el 2do. para sacar las preguntas y el 3ro. es para sacar las respuestas,en esta ultima hago una condicional en donde digo que el valor sea de 5.Despues hago un ciclo que cheque que no este vacio y vaya sacando los valores que tengan 5 y los sume, para despues dividirlo. Pero al momento de ejecutarlo, no me hace nada, solo aparece el cursor de la consulta, pero ahi se queda.Alguien sabe el por que?Este es mi codigo:
Código Delphi
[-]
procedure TForm1.BitBtnGraficarClick(Sender: TObject);
var
suma,i,x,y,resultado,val,sumar:integer;
secc,evalua:string;
begin
Chart2.Visible:=false;
Evalua := copy(cmbEvaluacion.Text, 0, Pos('-', cmbEvaluacion.Text) - 1);
Query1.Close;
Query1.SQL.Text := Format('select * from det_evaluacion ' +
'where det_eval = ''%s'' and det_tipo = 0 and ' +
'det_valor = 0 order by det_clave', [Evalua]);
Query1.Open;
Query2.Close;
Query2.SQL.Text := Format('select * from det_evaluacion ' +
'where det_eval = ''%s'' and det_tipo = 1 and ' +
'det_clave like ''%s.%%'' and det_valor = 0 ' +
'order by det_clave', [Evalua, Query1.FieldByName('det_clave').AsString]);
Query2.Open;
Query3.Close;
Query3.SQL.Text := Format('select det_valor from det_evaluacion ' +
'where det_eval = ''%s'' and det_clave like ''%s.%%'' and ' +
'det_tipo = 2 and det_valor=5 order by det_valor asc', [Evalua,
Query2.FieldByName('det_clave').AsString]);
Query3.Open;
while not query3.eof do
begin
val:=query1.fieldbyname('det_valor').AsInteger;
sumar:=sumar+val;
query1.next;
end;
randomize;
y:=0;
suma:=0;
resultado:=0;
sumar:=0;
i:=1; secc:=sgEvaluacion.cells[1,i];
for i := 2 to sgEvaluacion.RowCount - 1 do begin
if sgEvaluacion.cells[0,i]<> '' then
begin
suma := suma + StrToInt(sgEvaluacion.Cells[7,i]);
inc(y);
end
else
begin
sgGrafica.cells[1,sgGrafica.RowCount-1]:= IntToStr(suma) ;
sgGrafica.cells[0,sgGrafica.RowCount-1]:= secc;
sgGrafica2.cells[1,sgGrafica2.RowCount-1]:= IntToStr(suma) ;
sgGrafica2.cells[0,sgGrafica2.RowCount-1]:= secc;
resultado:=resultado+suma;
x:=(suma div sumar)* 100;
sgGrafica.Cells[2,sgGrafica.RowCount-1]:=IntToStr(x);
sgGrafica2.Cells[2,sgGrafica2.RowCount-1]:=IntToStr(x);
Series1.Add( suma ,secc, random(200) );
Series2.Add( suma ,secc, random(200) );
suma:=0;
secc:=sgEvaluacion.cells[1,i];
sgGrafica.RowCount:=sgGrafica.RowCount+1;
sgGrafica2.RowCount:=sgGrafica2.RowCount+1;
end;
end;
sgGrafica2.cells[1,sgGrafica2.RowCount-1]:= inttostr (suma) ; sgGrafica2.cells[0,sgGrafica2.RowCount-1] := secc ; sgGrafica.cells[1,sgGrafica.RowCount-1]:= inttostr (suma) ;
sgGrafica.cells[0,sgGrafica.RowCount-1] := secc ;
x:=(suma div y)*100;
sgGrafica.Cells[2,sgGrafica.RowCount-1]:=IntToStr(x);
sgGrafica.RowCount:=sgGrafica.RowCount+1;
Series1.Add( suma ,secc, random(260) );
sgGrafica2.Cells[2,sgGrafica2.RowCount-1]:=IntToStr(x); sgGrafica2.RowCount:=sgGrafica2.RowCount+1; Series2.Add( suma ,secc, random(260) ); resultado:=resultado+suma;
sgGrafica.Cells[0, Pred(sgGrafica.RowCount)] := 'Resultado Total';
sgGrafica2.Cells[0, Pred(sgGrafica.RowCount)] := 'Resultado Total';
sgGrafica.Cells[1, Pred(sgGrafica.RowCount)] := IntToStr(Resultado);
sgGrafica2.cells[1, Pred(sgGrafica2.RowCount)]:=IntToStr(resultado);
series1.add(resultado,'RESULTADO TOTAL',random(200));
end;
Saludos