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 10-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 19
Elite237 Va por buen camino
Ok. con la primer consulta, segun lo que yo trato de hacer es lo siguiente:si en caso que el usuario seleccione del combo una evaluacion, pues que me traiga esa evaluacion.

Ahora con la sugerencia que me diste, te agradezxo y la voy a implementar.

Por ultimo lo de las opciones te explicare.Tengo una seccion, por ejemplo se llama Imagen Personal. En esa seccion hay varias preguntas, una de ellas por ejemplo es:¿Como es su asistencia al trabajo?.En esa pregunta hay 3 opciones(siempre hay 3 opciones)una de ellas por ejemplo es:Con faltas y permisos.

Lo que quiero es que al momento de hacer un clic en el boton me genere el cuestionario, que me muestre en un label la evaluacion, en otro label la seccion y en otro label la pregunta(pero tambien que se genere automaticamente la siguiente pregunta en otro frame). Y despues quiero que en el radiogroup aparezca las opciones para esa pregunta (y tambien que se genere automaticamente en otro frame con su respectivas preguntas, osea no repetidas).Me hago entender?.Gracias por tu tiempo
Responder Con Cita
  #2  
Antiguo 11-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 19
Elite237 Va por buen camino
Mira he estado intentando hacerlo asi, ya que lo hacia de otra manera, y me arrojaba todos los campos, y eso era por que no estaba tomando alguna clave para comparar, y como los campos que queria condicionar tienen los mismos valores, es por eso que me daba ese resultado. Lo que hize fue que en un combobox cargue la clave y el nombre de la evaluacion, despues sacaba solo la clave de la evaluacion y apartir de ella evaluaba que si era igual a la cave pues me hiciera la consulta. El problema de ahora es que al momento de ejecutarlo no muestra nada, ni el formulario, como que se queda en el viaje, por que sera?alguien sabe?de todas maneras les dejo el codigo que utilizo(gracias a neftali, claro!!)

Código Delphi [-]
procedure TFormMain.btnCrearClick(Sender: TObject);
var
  i:Integer;
  fr:TFramePreg;
  Str:String;
  Evalua:string;
begin
  for i := 0 to (seNumPreguntas.Value - 1) do begin
    // Crear el Frame
    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);
    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;
    // Asignamos textos
    //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_clave,secc_nombre 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;
    while not query2.eof do begin
      Str:=query2.fieldbyname('secc_nombre').asstring;
      fr.lblSeccion.Caption:=Str;
      query2.next;
    end;
    //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('order by preg_descripcion asc');
    TRY
           Query3.open;
        EXCEPT
              messagedlg('Error en consulta:'+#13+QUERY3.SQL.TEXT,mterror,[mbok],0)
        END;
    While not query3.eof do begin
      Str:=query3.fieldbyname('preg_descripcion').asstring;
      Fr.lblPregunta.Caption := Str;
      query3.next;
    end;
    //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 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;
    While not query4.eof do begin
      Fr.rgRespuestas.Items.add(query4.fieldbyname('opci_descripcion').asstring);
      query4.next;
    end;

end;
 
end;
Responder Con Cita
  #3  
Antiguo 11-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 19
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
  #4  
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
  #5  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 19
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
  #6  
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.439
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
  #7  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 19
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
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 12:01:48.


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