Fijense que logre que me de la seccion, las preguntas de esa seccion, pero el problema que me da es que me vuelve a generar las mismas opciones para todas las preguntas, este es mi codigo que utilizo, le agregre un while, para que me diera las secciones acorde a las preguntas:
Código Delphi
[-]
procedure TFormMain.btnCrearClick(Sender: TObject);
var
i:Integer;
fr:TFramePreg;
Str:String;
StrSecc:string;
Evalua:string;
begin
evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
query2.close;
query2.SQL.clear;
query2.sql.add('select secc_eval,secc_nombre,secc_clave from tsecciones');
query2.sql.add('where secc_eval = '''+evalua+'''');
query2.sql.add('order by secc_nombre asc');
TRY
Query2.open;
EXCEPT
messagedlg('Error en consulta:'+#13+QUERY2.SQL.TEXT,mterror,[mbok],0)
END;
if not query2.IsEmpty then
begin
while not query2.eof do
begin
StrSecc:=query2.fieldbyname('secc_nombre').asstring;
evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
query3.Close;
query3.sql.clear;
query3.sql.add('select preg_evaluacion,preg_secc,preg_clave,preg_descripcion from tpreguntas');
query3.sql.add('where preg_evaluacion = '''+evalua+'''');
query3.sql.add('and preg_secc = '+query2.fieldbyname('secc_clave').asstring);
query3.sql.add('order by preg_descripcion asc');
TRY
Query3.open;
EXCEPT
messagedlg('Error en consulta:'+#13+QUERY3.SQL.TEXT,mterror,[mbok],0)
END;
if not query3.IsEmpty then
begin
While not query3.eof do
begin
fr := TFramePreg.Create(nil);
fr.Parent := self.ScrollBox1;
fr.Top := (i * fr.Height) + 10;
fr.Align := alTop;
fr.Name := 'FramePregunta' + IntToStr(i + 1);
Fr.lblNumPregunta.Caption := IntToStr(i + 1);
fr.lblSeccion.Caption:=StrSecc;
Self.FRespuestas.AddObject(IntToStr(i + 1), fr);
if odd(i) then
begin
Fr.Panel1.Color := clBtnFace;
Fr.rgRespuestas.Color := clBtnFace;
end
else
begin
fr.Panel1.Color := $00E3E8EA;
Fr.rgRespuestas.Color := $00E3E8EA;
end;
Str:=query3.fieldbyname('preg_descripcion').asstring;
Fr.lblPregunta.Caption := Str;
query3.next;
evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
query4.close;
query4.sql.clear;
query4.sql.Add('select opci_evaluacion,opci_secc,opci_pregunta,opci_clave,opci_descripcion,opci_valor from topciones');
query4.sql.add('where opci_evaluacion = '''+evalua+'''');
query4.sql.add('order by opci_descripcion desc');
TRY
Query4.open;
EXCEPT
messagedlg('Error en consulta:'+#13+QUERY4.SQL.TEXT,mterror,[mbok],0)
END;
if not query4.IsEmpty then
begin
While not query4.eof do
begin
Fr.rgRespuestas.Items.add(query4.fieldbyname('opci_descripcion').asstring);
query4.next;
end;
end;
end;
end;
query2.next;
end;
end;