Hola de nuevo, fijense que estoy tratando que en el grid se me visualicen unos datos, pero al momento de hacerlo me sale el siguiente error:
Código Delphi
[-]
EListError with message 'List index out of bounds(-1)'
Saben a que se refiere este error?
Este es mi codigo que utilizo en mi boton:
Código Delphi
[-]
procedure TForm1.BitBtnGenerarClick(Sender: TObject);
var
x:integer;
evalua:string;
begin
evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
query1.close;
query1.sql.clear;
query1.sql.add('select det_version from det_evaluacion');
query1.sql.add('where det_eval='''+evalua+'''');
abre(query1);
lblVersion.Caption:=query1.fieldbyname('det_version').asstring;
query1.close;
query1.sql.clear;
query1.sql.add('select * from det_evaluacion');
query1.sql.add('where det_eval = '''+evalua+'''');
query1.sql.add('and det_tipo=0');
query1.sql.add('and det_valor=0');
query1.sql.add('order by det_clave');
abre(query1);
x:=1;
While not query1.eof do
begin
sgEvaluacion.cells[1,x]:=query1.fieldbyname('det_pregunta').asString;
sgEvaluacion.rowCount:=sgEvaluacion.rowCount+1;
inc (x);
query2.close;
query2.sql.clear;
query2.sql.add('Select * from det_evaluacion');
query2.sql.add('where det_eval='''+evalua+'''');
query2.sql.add('and det_tipo =1');
query2.sql.add('and det_clave like '''+query1.fieldbyname('det_clave').asstring+'.%''');
query2.sql.add('and det_valor=0');
query2.sql.add('order by det_clave');
abre(query2);
query3.close;
query3.sql.clear;
query3.sql.Add('select det_eval,det_clave,det_pregunta,det_valor,det_tipo from det_evaluacion');
query3.sql.add('where det_eval = '''+evalua+'''');
query3.sql.add('and det_clave like '''+sgEvaluacion.cells[sgEvaluacion.col-1,sgEvaluacion.row]+'.%''');
query3.sql.add('and det_tipo= 2');
query3.sql.add('order by det_valor asc');
abre(query3);
while not query3.eof do
begin
if query3.fieldbyname('det_valor').AsInteger=1 then
begin
sgEvaluacion.cells[2,x]:=query3.fieldbyname('det_valor').asstring;
end
else
if query3.fieldbyname('det_valor').AsInteger=2 then
begin
sgEvaluacion.cells[3,x]:=query3.fieldbyname('det_valor').asstring;
end
else
if query3.fieldbyname('det_valor').AsInteger=3 then
begin
sgEvaluacion.cells[4,x]:=query3.fieldbyname('det_valor').asstring;
end
else
if query3.FieldByName('det_valor').AsInteger=4 then
begin
sgEvaluacion.cells[5,x]:=query3.fieldbyname('det_valor').asstring;
end
else
if query3.fieldbyname('det_valor').AsInteger=5 then
begin
sgEvaluacion.cells[6,x]:=query3.fieldbyname('det_valor').asstring;
end
end;
while not query2.eof do
Begin
sgEvaluacion.cells[0,x]:=query2.fieldbyname('det_clave').asstring;
sgEvaluacion.Cells[1,x]:=query2.fieldbyname('det_pregunta').AsString;
sgEvaluacion.Cells[7,x]:='Resultado';
inc(x);
query2.next;
if x=1 then
sgEvaluacion.RowCount:=2
else
sgEvaluacion.RowCount:=x
End;
query1.next;
end;
end;
Lo que hago en este grid es que se visualice las secciones,las preguntas y despues en otras columnas los valores de las opciones.Si una respuesta tiene el valor =1 que lo pinte en la columna2, si el valor =2 pintarlo en la columna 3,si valor=3 pintarlo en la columna4,si valor=4 pintarlo en la columna5,y por ultimo si valor=5 pintarlo en la columna 6