Ver Mensaje Individual
  #32  
Antiguo 11-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Reputación: 17
Elite237 Va por buen camino
Pasar la consulta al crear el frame

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
//Obtiene la clave del combo evaluacion
        evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
        //Obtiene la seccion
        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;
//Obtiene la clave del combo evaluacion
                evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
                //Obtiene la pregunta
                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;
//Obtiene la clave del combo evaluacion
                                        evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
                                        //Obtiene la opcion
                                        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;
Responder Con Cita