Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   mostrar valor diferente en dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=92751)

Manuel 19-01-2018 13:21:36

mostrar valor diferente en dbgrid
 
Hola amigos del foro, tengo la siguiente situación que ha sido planteada por un cliente, les explico:

Tengo valores en tabla de memoria (rxmemoryData) la cual está compuesta como sigue:
Código SQL [-]
id integer (1,2,3, etc)
calificacion1 float (3,5, 7,0, 4,5)
calificacion2 float (3,5, 7,0, 4,5)
calificacion3 float (3,5, 7,0, 4,5)
calificacion4 float (3,5, 7,0, 4,5)
calificacion5 float (3,5, 7,0, 4,5)
Es una tabla de calificaciones de los estudiantes, el cliente me pide si el estudiante tiene su calificación pendiente no aparezca 0 (cero), si no que la letra "P", si la calificación no será aplicada "/", si es eximido una "E", todo esto en la dbgrid, donde yo ingreso las calificaciones, ahora por el tipo de datos de las calificaciones no podría usar esos indicadores, la solución propuesta fue:

calificación pendiente = -1
Si la calificación no será aplicada = -2
eximido = -3

Nota: las calificaciones se validan de 0 a 7.

Ahora el cliente insiste en los símbolos descritos anteriormente (P, /, E), como se podría hacer, ingresando el -1, pero en la dbgrid visualice "P"?

Agradezco su ayuda, muchas gracias.

mRoman 19-01-2018 16:19:17

Cita:

Empezado por Manuel (Mensaje 524138)
Hola amigos del foro, tengo la siguiente situación que ha sido planteada por un cliente, les explico:

Tengo valores en tabla de memoria (rxmemoryData) la cual está compuesta como sigue:
Código SQL [-]
id integer (1,2,3, etc)
calificacion1 float (3,5, 7,0, 4,5)
calificacion2 float (3,5, 7,0, 4,5)
calificacion3 float (3,5, 7,0, 4,5)
calificacion4 float (3,5, 7,0, 4,5)
calificacion5 float (3,5, 7,0, 4,5)
Es una tabla de calificaciones de los estudiantes, el cliente me pide si el estudiante tiene su calificación pendiente no aparezca 0 (cero), si no que la letra "P", si la calificación no será aplicada "/", si es eximido una "E", todo esto en la dbgrid, donde yo ingreso las calificaciones, ahora por el tipo de datos de las calificaciones no podría usar esos indicadores, la solución propuesta fue:

calificación pendiente = -1
Si la calificación no será aplicada = -2
eximido = -3

Nota: las calificaciones se validan de 0 a 7.

Ahora el cliente insiste en los símbolos descritos anteriormente (P, /, E), como se podría hacer, ingresando el -1, pero en la dbgrid visualice "P"?

Agradezco su ayuda, muchas gracias.

Hola MANUEL, buenos dias.

Yo lo haria usando CASE en el SELECT de la consulta, algo asi:

Código SQL [-]
select p.pmt_nombre,
       case l.tipo_contr
          when 1 then 'Concesionario'
          when 2 then 'Distribuidor'
          when 3 then 'Cuenta propia'
       end as contrato,
       count(*) as total_puntos
from tienda l,
     promotor p
where l.promotor=p.pmt_numero
  and l.tipo_contr in (1,2,3)
  and l.en_operacion=0
group by p.pmt_nombre,
         l.tipo_contr
order by p.pmt_nombre

En tu caso podría ser asi:
Código SQL [-]
select nombre_materia,
         CASE calificacion_materia
              when -1 then 'P'
              when -2 then '/'
              when -3 then 'E'
         END as estatus_calificacion
from TABLA_CALIFICACIONES
where condicion_1 = condicion_2   //Dentro del where agregas las condicionantes de tu caso

Algo como lo anterior, lo puedes enlazar a tu DataSet asociado a al DbGrid y se visualizara como lo requieres.

Por cierto que componentes usas y que base de datos !!!:(:D:D:D....lo anterior es usando componentes SQL Firebird.

Saludos y espero esto te ayude.

Caminante 19-01-2018 17:13:06

Hola
Otra opcion es usar el event ongettext del objeto de campo que quieres visualizar

Código Delphi [-]
procedure TForm1.MiDatasetMiCampo1GetText(Sender: TField; var aText: string;
  DisplayText: Boolean);
begin
case sender.asinteger of
-1:Atext:='P';
-2:Atext:='/';
-3:Atext:='E';
end;
end;

Manuel 19-01-2018 20:08:40

Muuuchas gracias las dos soluciones fueron de gran ayuda


La franja horaria es GMT +2. Ahora son las 06:15:17.

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