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
  #41  
Antiguo 14-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Estas son las estructuras de mis tablas:
Código Delphi [-]
----------------'  '------------ '     '--------------- '  '-----------------'
'TEvaluacion      '  ' TSecciones  '     'TPreguntas       '   ' TOpciones        '
----------------'  '------------ '     '---------------  '  '----------------'
'eval_clave        '  'secc_evaluacion'  'preg_evaluacion  ' 'opci_evaluacion  '
'eval_descripcion'  'secc_clave   '      ' preg_secc        '   'opci_secc         '
'eval_tipo          '  'secc_nombre'      'preg_clave         '   'opci_pregunta    '
----------------'  '-------------'      'preg_descripcion '   'opci_clave         '
                                                  -----------------'  'opci_descripcion '
                                                                           opci_valor         '
                                                                         -----------------'

eval_clave de tevaluacion se relaciona con secc_evaluacion de tsecciones
preg_evaluacion de tpreguntas se relacion con eval_clave

secc_clave de tsecciones se relaciona con preg_seccion de tpreguntas
preg_clave de tpreguntas se relaciona con opci_pregunta

opci_seccion se relaciona con preg_Seccion..

Espero darme a entender, todos tienen su campo que las identifica y otro que las une a cada tabla, y entonces queda de a cada evaluacion corresponde una seccion, a cada seccion corresponde una pregunta y a cada pregunta una opcion(respuesta).

Ya empece a hacerlo con el stringgrid, pero no me sale, me dice que no encontro un campo, pero lo raro es que lo especifico en mi select...saludos y gracias por sus comentarios
Responder Con Cita
  #42  
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
Ahora entiendo mejor el panorama.
Te estoy preprando un ejemplo sencillo de como hacerlo. Espero que no te moleste que sea con Access.
Dame un tiempo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #43  
Antiguo 15-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
No me molesta Delphius, como crees, te lo agradezco muchisimo...yo seguire intentando con el stringgrid, ya que no me arroja las opciones de las preguntas(en el mismo paso donde me quede con los frames). Saludos
Responder Con Cita
  #44  
Antiguo 16-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,
Disculpa que me haya demorado, pero es que estos día he estado un tanto off-line y se me hace difícil sacar tiempo con tanta interrupciones.

Bueno, aqui está una demo. Muchas cosas se pueden optimizar, la idea era desarrollar algo que pueda ser intuitivo, y fácil de comprender. Espero que la demo te sea de guia.

Quisiera mencionar que la demo está en la carpeta temporal del FTP del club. Si algún moderador considera que no es conveniente localizar allí la demo le agradecería que me lo hiciera saber.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #45  
Antiguo 16-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Gracias delphius!!!!. Tengo el mismo inconveniente de antes, me dice que no encontro un archivo:
Código Delphi [-]
fie not found:variants.dcu

Me imagino que es por que no lo reconoce, ya que uso delphi 5.Como lo corrijo?
Responder Con Cita
  #46  
Antiguo 16-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
Cita:
Empezado por Elite237 Ver Mensaje
Gracias delphius!!!!. Tengo el mismo inconveniente de antes, me dice que no encontro un archivo:
Código Delphi [-]fie not found:variants.dcu


Me imagino que es por que no lo reconoce, ya que uso delphi 5.Como lo corrijo?
Hola Elite237,
La verdad es que no te sabría decir. Yo uso Delphi 6. Desconozco si en D5 existe o no la unidad Variants.
Por lo pronto, fíjate si en la ayuda menciona algo al respecto. De paso, fijate si entre los directorios que conforman la LIBRARY PATH existe el archivo Variants.dcu y/o el archivo Variants.pas

¿El error que te arroja es con el demo que hice?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #47  
Antiguo 16-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Hola que tal, fijate que le elimine eso de variant, y si corre, pero al dar clic al boton de generar el cuestionario me manda el siguiente error:

Código Delphi [-]
El valor de BOF o EOF es True, o el actual registro se elimino;la operacion solicitada requiere un registro actual

Otra preguntota, como puedo hacer para guardar los valores del radiobutton, se como se asigna, pero mi problema es que los radiobutton los genero con un query de acuerdo a la pregunta, y pueden ser 2,3 ó 4 respuestas que tenga cada una.Esto lo quiero hacer para despues generar una grafica de acuerdo a la suma de las respuestas por seccion.Gracias por tu tiempo Delphius
Responder Con Cita
  #48  
Antiguo 16-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
Cita:
Empezado por Elite237 Ver Mensaje
Hola que tal, fijate que le elimine eso de variant, y si corre, pero al dar clic al boton de generar el cuestionario me manda el siguiente error:

Código Delphi [-]El valor de BOF o EOF es True, o el actual registro se elimino;la operacion solicitada requiere un registro actual


Otra preguntota, como puedo hacer para guardar los valores del radiobutton, se como se asigna, pero mi problema es que los radiobutton los genero con un query de acuerdo a la pregunta, y pueden ser 2,3 ó 4 respuestas que tenga cada una.Esto lo quiero hacer para despues generar una grafica de acuerdo a la suma de las respuestas por seccion.Gracias por tu tiempo Delphius
Me sigue extrañando eso del Variant.
¿Cómo que lo eliminaste? ¿Dónde que apareció? ¿De donde lo borraste?

Ese error que te dió, ¿tiene algún código o número?. Si pudieras explicar paso a paso que hiciste sería muy útil para comprender y reproducir los errores. Tal vez de este modo podríamos saber donde está el problema.

Con respecto a tu pregunta de como guardar los valores, ¿te refieres a guardar en una tabla? ¿A que te refieres con asignar? ¿Asignar que a que?

Primeramente, antes de seguir avanzando ¿Entiendes al menos el código del demo?
La verdad es que no termino de comprender donde está el problema de guardar el valor o la opción que escoge el usuario.

Veamos, se muestra un form al usuario con las opciones, el escoge una y ¿la duda real aquí cual es? ¿Saber asociar esa opción con el valor correspondiente en la tabla?

Estudia el demo que te hice llegar, y luego en base a ello, y lo que tienes ordena tus ideas y describe lo mejor posible tus dudas aqui.

No te vamos a cobrar por las palabras, ordena bien tus ideas e inquietudes y en base a ello te podremos seguir asistiendo. Cualquier modificación que haces en tu código sería útil que nos los comentases. De otro modo seguiremos jugando al teléfono descompuesto, y eso nos perjudica a todos.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #49  
Antiguo 16-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Me sigue extrañando eso del Variant.
¿Cómo que lo eliminaste? ¿Dónde que apareció? ¿De donde lo borraste?

Ese error que te dió, ¿tiene algún código o número?. Si pudieras explicar paso a paso que hiciste sería muy útil para comprender y reproducir los errores. Tal vez de este modo podríamos saber donde está el problema.
Aparecio en la declaracion del uses, alli me lo marcaba en rojo y con el cursor parpadeando, lo que hize fue borrarlo y de ahi lo ejecute (F9)y despues me aparecio un error que me indicaba que la base de datos deberia ser local, por lo que trate de corregirlo checando en la propiedad connectionstrign del adoconnection asegurando que la base de datos fuera la de access que hiciste y despues de haberlo hecho lo volvi a ejecutar y me salio el error que te
Responder Con Cita
  #50  
Antiguo 16-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
que te escribi hace rato.
Código Delphi [-]
El valor de BOF o EOF es True, o el actual registro se elimino;la operacion solictada requiere un registro actual

Perdon es que no habia terminado la frase.
Responder Con Cita
  #51  
Antiguo 16-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
La verdad es que no termino de comprender donde está el problema de guardar el valor o la opción que escoge el usuario.

Veamos, se muestra un form al usuario con las opciones, el escoge una y ¿la duda real aquí cual es? ¿Saber asociar esa opción con el valor correspondiente en la tabla?
Como tu lo dices mi estimado Delphius,se muestra el form al usuario con las opciones,el escoge una y esa respuesta con el valor que le corresponde, que se guarde en una tabla (tresultados)que acabo de crear. La estructura de mi tabla es :

RESU_FECHA...RESU_PREGUNTA....RESU_SECCION...RESU_OPCION.....RESU_VALOR
RESU_USUARIO....RESU_EVALUACION

Esto es para que haga un historial de todas las personas que presentaron el cuestionario,junto con las respuestas y las opciones que escogieron.Para despues graficar los resultados
--------------------------------------------------------------------
Ahora veo que en tu codigo tienes una parte donde me imagino relacionas las opciones que elige el usuario en cada pregunta.Tienes el siguiente codigo:
Código Delphi [-]
// 2. Asociamos a la pregunta el resultado elegido con el formato IDPregunta: Valor
  sgCuestionario.Cells[Seccion, Pregunta] := Format(res_resultado,[IDPregunta,Valor]);

Estoy bien?
Si es asi, entonces como lo guardarias en la tabla?
Responder Con Cita
  #52  
Antiguo 17-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
¿Cómo los guardaría?
Con una instrucción SELECT. Suponiendo que se trata de ADO...

Algo así:

Código Delphi [-]
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO tabla (campo1, campo2, ..., campoN)');
Query1.SQL.Add('VALUES (:parametro1, :parametro2, ... :parametroN');

Query1.Parameters.ParamByName('parametro1').Value := ....
Query1.Parameters.ParamByName('parametro1').Datatype := ft.....
....
Query1.Parameters.ParamByName('parametroN').Value := ....
Query1.Parameters.ParamByName('parametroN').Datatype := ft.....
Query1.ExecSQL;

El asunto es que no interesan donde mantengas "guardados" los datos en forma temporal hasta meterlos en la tabla, puede ser en una Celda de un TStringList, en un TLabel, un TEdit, una variable, en una posición de algún vector, ... lo importante es que los parámetros sean del tipo correcto (DataType) y que respetemos el orden en como asignemos los valores que asumirán los parámetros. Es decir que si en el SQL pusimos primero A, B y C, en values deben seguir el mismo orden orden: A, B y C.

Esta instrucción INSERT es una de las formas en como se puede declarar, y se puede (o debe mejor dicho) emplear cuando no necesariamente se ingresan todos los campos o los campos a mencionar no están en el mismo orden en que están declarados en la tabla.

En el caso de que se asume que todos los datos se van a suministrar, podemos evitarnos nombrar los campos. Pero he aquí que la instrucción SQL debe ser de esta forma:

Código SQL [-]
INSERT INTO tabla VALUES (....)

Y aquí, necesariamente (y obligadamente) debemos respetar el orden de los campos en la tabla al pasar los valores en la parte "VALUES".

No se si me explico, espero que se entienda la idea. Si tienes dudas, ya nos dirás.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 17-10-2008 a las 02:46:33. Razón: error en las etiquetas NOPARSE
Responder Con Cita
  #53  
Antiguo 17-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Thumbs up

Tienes razon delphius..fijate que lo que hize ahora fue esto, antes de empezar a guardarlo en una tabla como tu decias, mejor lo dejo en una celda y al final lo guardo.Lo que hize fue que apareciera en una celda los valores que selecciono en cada pregunta, de la siguiente manera

Código Delphi [-]
Asi esta mi StringGrid
---------'-----------'-------------'
No.Preg  '   Pregunta ' Resultado    '
-------- '----------- '------------ '
y en la columna resultado aparece el valor de la respuesta que selecciono.Mejor no?

Ahora, mi duda es como sumo todas los valores que hay en las celdas de la columna resultado?
Responder Con Cita
  #54  
Antiguo 17-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
Si te es "viable", tranquilamente puedes mantener una variable que se vaya incrementando en la proporción al resultado. Puede calcularse a medida que uno va respondiendo. Por ejemplo, antes de que "guardes" el valor en el TStringGrid puedes hacer dicha suma, ¿o es que no tienes los datos?

Dije al inicio "viable". Esto lo digo porque habría que analizar mejor el panorama y no siempre es posible o adecuado ir almacenando dicha suma. Supongamos que el usuario tiene la opción de corregir su respuesta: en este escenario necesitaríamos corregir el resultado y por consiguiente hacer las sumas y restas necesarias. La opción aquí, podría pasar por recorrer dicha columna al final del cuestionario. Algo así:

Código Delphi [-]
for i := 1 to Cuestionario.RowCount - 1 do // 1 es la fila donde inicia la cuenta
  suma := suma + StrToInt(Cuestionario.Cells[pos_columna_resultado,i]);

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #55  
Antiguo 17-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Supongamos que el usuario tiene la opción de corregir su respuesta: en este escenario necesitaríamos corregir el resultado y por consiguiente hacer las sumas y restas necesarias.
Segun yo, no pueden cambiar las respuestas, pero no habia pensado en si se equivocan.Un muy buen punto delphius

Código Delphi [-]
 
suma := suma + StrToInt(Cuestionario.Cells[pos_columna_resultado,i]);
La variable suma la declaras como cadena??
En la parte de pos_columna_resultado no entiendo como aplicarlo
Responder Con Cita
  #56  
Antiguo 17-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
suma es de tipo integer. Si te fijas, para sumar apropiadamente hago una conversión de string a integer (StrToInt).

pos_columna_resultado hace referencia a la columna del TStringGrid en donde se guarda el resultado.
Lo que hace el algoritmo es irse moviendo fila a fila sobre la columna resultado y sumando el valor. No tiene demasiada magia.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #57  
Antiguo 17-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
ok...ok..en que evento coloco ese codigo??

Una duda.....despues de que haya terminado de contestar y tenga que guardarlo, lo hago como me sugeriste??con el query??para insertar los datos en mi tabla.Gracias
Responder Con Cita
  #58  
Antiguo 17-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, se me había caído la conexión.
Bueno, a ese código lo deberías ejecutar en donde te sea conveniente. Por otro lado no veo otra forma de guardar los datos en la tabla sin emplear esa consulta SQL (1)

(1) Hay otra opción, pero no es tan económica comparada con el uso de un TQuery: TTables.

La alternativa al empleo de estar guardando los datos en variables temporales, o StringsGrids, etc es tener una tabla temporal y luego pasar de esta tabla temporal a la definitiva. Bastaría con un INSERT para volcar los datos desde la tabla temporal a la otra:

Código SQL [-]
INSERT INTO tabla
(SELECT * FROM tabla_temporal)

Disculpame que sea entrometido, ¿cuándo debes presentar el sistema?
Viendo como se fue desarrollando el hilo, te recomiendo una lectura sobre SQL. No es por ser atrevido pero necesitas reforzar algunos conceptos y manejos sobre bases de datos.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #59  
Antiguo 17-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Gracias por los comentarios, el sistema lo debo de entregar para ayer..jajajja, bueno me estan esperando para poder implementarlo. Por otro lado, seguire leyendo de SQL para aprender mas. En otros post te preguntaba como guardarlo, ¿por que?por que yo lo hago con ttables y vi que tu lo haces con querys, yo no lo habia intentado asi. Apenas ahora estoy usando stringgrid, y he aprendido algunas cosillas, pero no del todo, por eso les pregunto a ustedes que saben mas que yo.Aqui seguire intentando que quede bien el sistema..de hecho estoy casi 12 horas en la lap leyendo e intentando de todo.Saludos Delphius
Responder Con Cita
  #60  
Antiguo 01-11-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Unhappy Mostrar Panel en evento onDblClic del StringGrid

Hola, recuerdan que habia posteado una ayuda con referencia a este evento, pues bien, lo pude solucionar y logre que se mostraran todas las respuestas de una pregunta en un panel al momento de hacer doble clic en la pregunta que se mostraba en el StringGrid. Pero ahora me cambiaron las estructuras de mis tablas y no puedo mostrar las respuestas.Asi quedo mi tabla, donde se almacena tanto las secciones,las preguntas y las opciones:

Código Delphi [-]
Det_evaluacion
 
det_eval          (la clave de la evaluacion)
det_version      (la version de la evaluacion)
det_clave        (la clave ya sea para seccion(1...y asi sucesivamente),pregunta(1.1..1.2..1.3) y opciones(1.1.1...1.1.2)
det_pregunta   (descripcion de la seccion,pregunta u opcion)
det_tipo          (aqui se diferencia si es seccion(el valor es 0),pregunta(el valor es 1) u opcion(el valor es 2)
det_valor         (valor que tendran, si es seccion(0),si es pregunta(0), si es opcion(los valores seran de 1 a 5)

Este es el codigo que tengo ahora en el evento y nose muestran las respuestas en el panel:
Código Delphi [-]
procedure TForm1.sgEvaluacionDblClick(Sender: TObject);
var
evalua,saca:string;
i:integer;
begin
  if sgEvaluacion.col=1 then
   begin
    //Obtenemos la clave de la evaluacion del combobox
    evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
    //Obtenemos la clave de la pregunta del Stringgrid
    saca:=sgEvaluacion.cells[sgEvaluacion.col-1,sgEvaluacion.row];
    query3.close;
    query3.sql.clear;
    query3.sql.Add('select det_eval,det_clave,det_pregunta,det_valor,det_tipo from det_evaluacion');
    query3.sql.add('where det_eval = '''+evalua+'''');
    query3.sql.add('and   det_tipo= 2');

    //si omito esto,aparecen todas las respuestas de todas las secciones en el panel
    query3.sql.add('and det_clave = '''+saca+'''');

    abre(query3);
    rgRespuestas.items.clear;
    while not query3.Eof do
     Begin
      rgRespuestas.Items.Add(query3.FieldByName('det_valor').asstring+'-'+query3.FieldByName('det_pregunta').asstring);
      query3.Next;
     End;
     panel1.visible:=true;
     rgRespuestas.ItemIndex:=0;
   End
   else
    showmessage('No hay opciones para esta pregunta!');
end;

Gracias por su ayuda
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 19:34:50.


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