Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 02-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Estudiar, estudiar y mas estudiar como lo haciamos los viejos del club cuando no existia internet

Salud OS
Coincido amigo, es sumamente contraproducente que se piense a que la respuesta esta al alcance de la mano evitando el proceso de investigar, analizar y comprender porque nos esta frenando algo. De ese proceso se aprende mucho, de preguntar a la tonta no sacamos nada.

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #22  
Antiguo 09-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Hola neftali, fijate que he querido adaptar el programa que hiciste de ejemplo a mi aplicacion, solo que no consigo hacer que se visulice las preguntas y las opciones, y te comento como esta mi apliacacion: por cada seccion hay preguntas, y esas preguntas tienen sus opciones, y lo que quiero hacer es que al momento de seleccionar el tipo de evaluacion de un combobox, pues aparezca las preguntas y las opciones de cada seccion, no se si me de a entender, he hecho query para traer las preguntas y que aparezcan en cada frame, pero me manda el siguiente error:
Código Delphi [-]
[Error] FMain.pas(93): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'
y quiza es por el codigo que le estoy introduciendo, la verdad no he utilizado frames y no tengo mucha experiencia programando en delphi.Este es el codigo que el estoy introduciendo
Código Delphi [-]
// Asignar textos
    query1.close;
    query1.SQL.clear;
    query1.sql.add('select eval_descripcion,preg_descripcion from tpregunta');
    query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');
    Str := Format(Fr.lblPregunta.Caption:=query1.fieldbyname('preg_descripcion').asstring, [IntToStr(i + 1)]);
    Fr.lblPregunta.Caption := Str;
Responder Con Cita
  #23  
Antiguo 09-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Elite237, por ahora el único error que veo es que estás asignando dentro de str = format() una sentencia de asignación (Fr.....Caption := ...)

Eso no está permitido en el lenguaje.
Mueve esa setencia de asignación antes de realizar el format:
Código Delphi [-]
FR......Caption := 
Str := Format (Fr...Caption ,[]);

¿Se entiende?
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #24  
Antiguo 09-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
OK, Gracias Delphius, ya lo hize, pero no me hace nada, quedo como el que hizo neftali. Explicare algo que se me ha olvidado decirles: Por cada evaluacion, tengo una seccion, dentro de cada seccion tengo preguntas y a cada pregunta 3 o mas opciones de respuestas. Lo que me piden es que al momento de elegir el tipo de evaluacion a presentar, me muestre todas las secciones de mi evaluacion junto con sus respectivas preguntas y respuestas. Las claves se las asigno de esta manera. Evaluacion vigilante 3....seccion de la evaluacion 3.1....pregunta de la seccion 3.1.1....opcion de la pregunta....3.1.1.1....y asi sucesivamente, dependiendo de la cantidad de secciones, preguntas y opciones tengan cada evaluacion.Me di a entender?...Entonces yo me imagino y quiero hacer(corrigeme si estoy mal)realizar querys para traer esos datos. Pero ¿como se los asigno a las etiquetas y al radiogroup que usa neftali y que se vaya incrementando y muestre las opciones y las preguntas correctamente???
Responder Con Cita
  #25  
Antiguo 09-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Elite237,
Sería muy oportuno como saber como y que consultas SQL estás lanzando. Si nos expusieras el código empleado podríamos saber de que modo asesorarte.

Por otro lado veo en el código anterior que expones, que en nungún momento lanzas la consulta a ejecutar. Es decir, no veo el Open.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #26  
Antiguo 09-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Ya lo habia checado delphius, gracias. La consulta que quiero hacer primero es la siguiente:
Código Delphi [-]
select eval_clave,secc_eval,secc_nombre where eval_clave=secc_eval
para que me arroje correctamente el nombre de la seccion, y que pertenezca a esa evaluacion. Aqui no hay problema, el problema digo yo es cuando se tenga que checar las preguntas y la opciones correspondan a la seccion y a la evaluacion.
Responder Con Cita
  #27  
Antiguo 10-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: 18.271
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
Yo haría las cosas por partes, más que nada para ubicar los posibles problemas.
Primero lanza la sentencia SQL y asegúrate de que obtienes los datos corrrectos; Una vez hechoesto, ya los asignarás a los frames.

En cuanto al código:

Código Delphi [-]
// Asignar textos
query1.close;
query1.SQL.clear;
query1.sql.add('select eval_descripcion,preg_descripcion from tpregunta');
query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');

// Asegurate de que es correcta
MessageDlg('SQL: ' + query1.sql.Text, mtInformation, [mbOK], 0);
// Abrela (sin no no heremos nada)
query1.Open;
// Encontrado?
if (not (query1.EOF)) then begin
  Str := query1.fieldbyname('preg_descripcion').asstring;
  // Asignalo
  Fr.lblPregunta.Caption := Str;
end;
__________________
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
  #28  
Antiguo 10-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Que tal neftali,ya hize mis querys, pero me manda un error, que es probable que me lo de por la manera en que la ejecuto:
Código Delphi [-]
sql error code=-104 token unknown -line5,char1 select'

este es el codigo que utilizo al momento de dar clic en mi boton y me genere todo el cuestionario:
Código Delphi [-]
procedure TFormMain.btnCrearClick(Sender: TObject);
var
  i:Integer;
  fr:TFramePreg;
  Str: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;
    // Asignar textos
    //Saca la evaluacion
    query1.close;
    query1.sql.clear;
    query1.sql.add('select eval_descripcion from tevaluacion');
    query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');
    TRY
           Query1.open;
        EXCEPT
              messagedlg('Error en consulta:'+#13+QUERY1.SQL.TEXT,mterror,[mbok],0)
        END;
    if (not (query1.Eof))then begin
      str:=query1.fieldbyname('eval_descripcion').asstring;
      fr.lblEvaluacion.caption:=str;
    end;  
    //Saca la seccion
    query1.close;
    query1.SQL.clear;
    query1.sql.add('select eval_clave,secc_eval,secc_nombre from tevaluacion,tsecciones');
    query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');
    query1.sql.add('and eval_clave = secc_eval');
    query1.sql.add('order by secc_nombre asc');
    TRY
           Query1.open;
        EXCEPT
              messagedlg('Error en consulta:'+#13+QUERY1.SQL.TEXT,mterror,[mbok],0)
        END;
    if (not (query1.Eof))then begin
      Str:=query1.fieldbyname('secc_nombre').asstring;
      fr.lblSeccion.Caption:=Str;
    end;
    //Saca la pregunta
    query1.Close;
    query1.sql.add('select eval_clave,secc_eval,preg_evaluacion,preg_secc,preg_clave,preg_descripcion from tevaluacion,tsecciones,tpreguntas');
    query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');
    query1.sql.add('and eval_clave=preg_evaluacion');
    query1.sql.add('and secc_eval=preg_secc');
    query1.sql.add('order by preg_descripcion asc');
    TRY
           Query1.open;
        EXCEPT
              messagedlg('Error en consulta:'+#13+QUERY1.SQL.TEXT,mterror,[mbok],0)
        END;
    if (not (query1.Eof))then begin
      Str:=query1.fieldbyname('opci_descripcion').asstring;
      Fr.lblPregunta.Caption := Str;
    end;
    // Las respuestas también de la Base de Datos
    //Saca la opcion
    query1.close;
    query1.sql.clear;
    query1.sql.Add('select eval_clave,secc_eval,secc_clave,preg_evaluacion,preg_secc,preg_clave,opci_evaluacion,opci_secc,opci_  pregunta,opci_clave,opci_descripcion from tevaluacion,tsecciones,tpreguntas,topciones');
    query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');
    query1.sql.add('and eval_clave=opci_evaluacion');
    query1.sql.add('and secc_eval=opci_secc');
    query1.sql.add('and preg_clave=opci_pregunta');
    query1.sql.add('order by opci_descripcion asc');
    TRY
           Query1.open;
        EXCEPT
              messagedlg('Error en consulta:'+#13+QUERY1.SQL.TEXT,mterror,[mbok],0)
        END;
    Fr.rgRespuestas.Items.add('Opcion1');
    Fr.rgRespuestas.Items.add('Opcion2');
    Fr.rgRespuestas.Items.add('Opcion3');
  end;
 
end;
Ah y quiero preguntarte, como hacer para que se muestre las opciones que tengo en la bd automaticamente, sin que la haga manualmente.Le paso el query en los parentesis??Checa mi radiogroup del final
Responder Con Cita
  #29  
Antiguo 10-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: 18.271
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
Algunas cosas...

Código Delphi [-]
query1.sql.add('select eval_descripcion from tevaluacion');
    query1.sql.add('where eval_descripcion = '''+cmbEvaluacion.text+'''');

No me queda claro que en esta consulta vas a obtener el campo eval_descripcion y el campo que usas en el WHERE es eval_descripcion; ¿Obtendrás lo que ya tienes no?

En lugar de usar comillas es mejor que utilices QuotedStr; Es más claro y más seguro:
Código Delphi [-]
query1.sql.add('select eval_descripcion from tevaluacion');
    query1.sql.add('where eval_descripcion = ' + 
    QuotedStr(cmbEvaluacion.text)  );

Eso ya te añade el texto y las comillas.

En la tercera consulta te falta hacer el Clear antes de añadirla; Posiblemente por eso se te esté quejando de algo relacionado con el SELECT.

Lo de los RadiuoGroup no lo he entendido.
__________________
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
  #30  
Antiguo 10-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #31  
Antiguo 11-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #32  
Antiguo 11-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 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
  #33  
Antiguo 12-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
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
  #34  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #35  
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: 18.271
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
  #36  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #37  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #38  
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: 18.271
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
  #39  
Antiguo 14-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
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
  #40  
Antiguo 14-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Elite237,
Yo estoy mareado al ver el código y estoy igual que Neftali. Si nos pudieras hacer llegar la estructura de las tablas (el diagrama DER, o Diagrama Entidad Relación) tal vez nos refrezque las ideas.

Con respecto al uso del TStringGrid es una opción ecónómica, ya que no ocupa tanto espacio como las otras opciones que te fueron presentadas. Lo que no se es si estoy analizando correctamente la manera de usarlo.

Yo me imagino que las columnas, representan a las preguntas y las fila las secciones que componen el cuestionario.

Cada celda corresponderá entonces a la respuesta asociada a la pregunta de cada sección.

Código:
   | P1  | P2  | P3  | P4  |
---+-----+-----+-----+-----+
S1 | Rta | Rta | Rta | Rta |
---+-----+-----+-----+-----+
S2 | Rta | Rta | Rta | N/A |
---+-----+-----+-----+-----+
O si debo interpretar a la "matriz" como que en las columnas las opciones y en las filas las preguntas.

Con respecto a que muestre un Frame para legir las opciones, no creo que te resulte demasiado complicado.
Yo imagino un escenario en donde la matriz constituye la primera opción (preguntas por sección), de modo que ante la doble pulsación de la celda, se cree un form que contenga las opciones, se elija y al momento de cerrarse que el valor de la opción se transfiera a dicha celda.

La idea que me pasa por la cabeza es que se lanze una consulta SQL para traer todas las preguntas para cada sección. "Explorar" los registros y relacionar de algún modo cada pregunta y sección con la columna y fila correspondiente.
Por ejemplo, se puede hacer que en las celdas fijas se guarden el ID de la sección. De modo similar podemos hacer relacionar la posición de las columnas con la pregunta. Por ejemplo, la celda [1,3] hace referencia a la tercer pregunta de la fila 1. Si en la celda fija de la fila 1 hemos guardado el ID correspondiente a alguna sección, podemos construir una consulta SQL que nos permita obtener las opciones a la pregunta tercera de la sección ID.

Al tener ahora los datos que constituyen a las opciones de dicha pregunta, podemos mostrarlos en ese form que vamos a crear.

Espero que se entienda la idea.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



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 09:58:13.


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