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
  #1  
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
  #2  
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
  #3  
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.339
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
  #4  
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
  #5  
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.339
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
  #6  
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
  #7  
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
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 07:25:05.


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