Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
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
  #2  
Antiguo 12-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Creo que ese query3.next en medio del código no va, creo que es al final del bucle:

Código Delphi [-]
query3.Open
while not query3.eof do
begin 
   // todo tu codigo aqui
  query3.next;
end;

Una sugerencia, divide y vencerás. Por ejemplo:

Código Delphi [-]
procedure TFormMain.Abre(qry:TQuery);
begin
  TRY
    Qry.open;
 EXCEPT
    messagedlg('Error en consulta:'+ qry.Name + #13+QRY.SQL.TEXT,mterror,[mbok],0);
   Abort; // evita que el programa continue.
 END;
end;

Ahora puedes sustituir esas líneas de código por una llamada a este procedimiento, reusándolo.
Código Delphi [-]
abre(query2);
// mas codigo
abre(query3);
// mas codigo
abre(query4);

Si usas esta vieja técnica con otras cosas de tu código, verás que tu procedimiento se acorta bastante, no te mareas con el scroll vertical, es más legible, entendible y encontrarás los errores más rápidamente.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 12-10-2008 a las 06:32:45.
Responder Con Cita
  #3  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Thumbs up

Gracias Lepe por tu comentario, ya implemente lo que dijiste. Una duda, el query4.next, tu crees que deba ir hasta el final como los demas??Lo que pasa es que las respuestas me las manda todas juntas en mi radiogroup, y me debe de enviar 3, 4 ó 2 respuestas dependiendo de la pregunta(Disculpen si dije que todas tienen solo 3 respuestas, no lo habia checado bien).Saludos
Responder Con Cita
  #4  
Antiguo 13-10-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Podrías poner una pequeña copia de las tablas, o al menos una porción de ellas (exportarlas a algun formato sencillo); La verdad es que yo con tanto código me he perdido.
Creo que sería más fácil poder probarlo y seguirte con un pequeño ejemplo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Hola neftali, eso que me pides como lo hago?osea para que pueda visualizar la imagen en el foro??.Por otra parte, fijate que mejor lo voy a intentar pero en un StringGrid, la misma problematica, que me muestre todas las secciones,preguntas y opciones,peeeero, que al dar doble clic a la pregunta que esta en el stringrid, me visualice un panel con los radiobutton (con las respuestas). Una duda, debo seguir en este hilo?o crear otro?o llevar mi problematica a otro hilo?
Responder Con Cita
  #6  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Red face

Disculpen si me cambie asi de repente de diseño, agradezco su ayuda, en serio, solo que mi jefe me pidio que hiciera un diseño igual al que tienen de excel, por ese motivo lo tengo que cambiar. Espero y todos los que me ayudaron no se sientan incomodos o que no valio la pena su tiempo y su ayuda, pero creanme que para mi si es valioso, ya que aprendi cosas nuevas y algun dia lo hare de esa manera. Saludos a todos
Responder Con Cita
  #7  
Antiguo 14-10-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Elite237 Ver Mensaje
Una duda, debo seguir en este hilo?o crear otro?o llevar mi problematica a otro hilo?
Yo lo dejaría en este, ya que el problema sigue siendo el mismo. La explicación y todo lo expuesto aquí sigue valiendo, sólo que la implementación cambia.
Si crearas un nuevo hilo, toda esa información quedaría disgregada.

En mi opinión, lo mejor es continuar este.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 14-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 20
Elite237 Va por buen camino
Upps...disculpa, es que ya abri otro hilo..Ahora que hago??Les aviso a los que me respondieron en el nuevo hilo que se vengan a este?? o como??que me sugieres?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sistema de Evaluacion Psicometrica Elite237 OOP 4 24-09-2008 18:31:58
Intraweb de D2007 es evaluación?? xander Varios 5 24-10-2007 20:04:40
Variante comparado con evaluación completa Al González Providers 2 18-08-2005 04:19:32
Migracion BDE a SQLDIRECT evaluacion ASAPLTDA Conexión con bases de datos 0 27-11-2004 22:08:12


La franja horaria es GMT +2. Ahora son las 00:31:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi