Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Duda que me atormenta (https://www.clubdelphi.com/foros/showthread.php?t=69620)

oscarac 29-08-2010 09:19:50

Duda que me atormenta
 
saludos

tengo un problema y no se como solucionarlo, a ver si me pueden echar una mano, tengo algunas ideas sobre el tema, a ver si me pueden ayudar

tengo una tabla donde existen 2 campos (n_IMP y u_IMP) entiendase moneda nacional y moneda extranjera
en la mayoria de reportes tengo la opcion de escoger la moneda a mostrar
entonces la pregunta es...

como hago el query para que de acuerdo a un parametro o quiza otro artificio me muestre la moneda que quiero y lo que es peor un, mostrarlo en un reporte (quiza usando Case combinado con If)

despues he pensado en jalar las 2 monedas y posteriormente o quiza en el mismo query asignarla a un campo neutral o intermediario que me identifique el "valor" de la moneda en cuestion (sea nacional o extranjera), cosa que en los reportes podria mostrar solo el campo "Importe" que vendria ya asignado con los valores de la moneda en cuestion


se me entiende?
alguna sugerencia o idea?

se agradece la atencion

ecfisa 29-08-2010 09:53:43

Hola oscarac.

A ver si te entendí...

Supongamos que tengas:
.- Una tabla: 'TU_TABLA' con varios campos entre los que están: 'n_IMP' y 'u_IMP'.
.- Un TRadioGroup cuyos items son: 'Moneda nacional' y 'Moneda extranjera'.

Una forma de hacerlo sería
Código Delphi [-]
procedure TForm1.RadioGroup1Click(Sender: TObject);
var
  Moneda: string;
begin
  case RadioGroup1.ItemIndex of
    0: Moneda:= ' n_IMP  ';
    1: Monead:= ' u_IMP ';
  end;
  with IBQuery1 do
  begin
    SQL.Text:= 'SELECT CAMPO_1,CAMPO_2,...,CAMPO_N,' + Moneda + 
               ' FROM TU_TABLA WHERE...';
    Open;
  end;
end;

Es para ejemplificar. Por supuesto debés adaptar la consulta y utilizar la estructura de decisión que prefieras.

Saludos.

oscarac 29-08-2010 09:54:49

pues...
revisando un poco y pensando mucho mas halle la solucion

lo que hice fue jalar los 2 campos y en el query agregue 2 campos calculados
y en el procedimiento OnCalc puse algo como esto y lo solucione
gracias de todas maneras

Código:


if frm1.moneda = 'S'
  qry1Debe.Value := qry1DebeMN.Value
else
  qry1Debe.Value := qry1DebeME.Value
end


r1d2m3 30-08-2010 05:11:09

Hola, viendo tu problema, la solución que pones te va ha funcionar, el tema es que vas a estar obligando al motor de la base de datos a calcular siempre los dos resultados y luego vos tomarías el que te convenga al momento de listar, es mucho mas eficiente la solución que te plantea ecfisa, además de elegante.

Saludos.


La franja horaria es GMT +2. Ahora son las 17:21:25.

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